Zum Inhalt springen

„Streaming SIMD Extensions“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
KKeine Bearbeitungszusammenfassung
 
(26 dazwischenliegende Versionen von 21 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:X86 extensions 2013.svg|mini|Vergleich der Implementierung von Befehlssatzerweiterungen durch AMD (links) und Intel (rechts), Stand 2013]]
{{veraltet|seit=2009}}


Die {{lang|en|'''Streaming [[Single Instruction Multiple Data|SIMD]] Extensions'''}} ('''SSE'''), früher auch ''Internet SIMD Streaming Extensions (ISSE)'' ist eine von [[Intel]] entwickelte [[Befehlssatz]]erweiterung der [[X86-Prozessor|x86-Architektur]], die mit der Einführung des [[Intel Pentium III|Pentium-III]]-(Katmai)-Prozessors 1999 vorgestellt wurde und deshalb anfangs den Namen ''Katmai New Instructions (KNI)'' trug. Zweck ist es, Programme durch Parallelisierung auf Instruktionslevel zu beschleunigen, genannt [[Flynnsche Klassifikation#SIMD (Single Instruction, Multiple Data)|SIMD]].
[[Datei:Sse-architecture-relations.svg|miniatur|SSE-Instruktionsfamilie mit den Erweiterungen: AMD (links) und Intel (rechts), der überlappende Teil zeigt die Unterstützung der jeweiligen Erweiterung bzw. Instruktion. Nach SSE3 begannen die beiden Hersteller nicht mehr vollständig kompatibel zu sein, dies setzt sich mit AVX fort. (Stand 2009)]]

Die '''{{lang|en|Streaming [[Single Instruction Multiple Data|SIMD]] Extensions}}''' ('''SSE'''), früher auch ''Internet Streaming Extensions'' (ISSE) ist eine von [[Intel]] entwickelte Befehlssatzerweiterung der [[X86-Prozessor|X86er-Architektur]], der mit der Einführung des [[Intel Pentium III|Pentium-III]]-(Katmai)-Prozessors 1999 vorgestellt wurde und deshalb anfangs den Namen ''Katmai New Instructions'' (KNI) trug. Zweck ist es Programme durch Parallelisierung auf Instruktionslevel zu beschleunigen, genannt [[Flynnsche Klassifikation#SIMD (Single Instruction, Multiple Data)|SIMD]].


== Konzept ==
== Konzept ==
Im Gegensatz zu der vorher veröffentlichten [[Multi Media Extension|MMX]]-Befehlssatzerweiterung wurde SSE speziell für [[Gleitkommazahl]]-Datentypen entwickelt, außerdem wurden eigene und doppelt so breite 128-Bit-[[Register (Computer)|Register]] implementiert, beides häufig bemängelte Schwächen des MMX-Instruktionssatzes. Intel entschied sich auch dafür, den SSE-Instruktionssatz völlig neuzuentwickeln und nicht kompatibel zu dem bereits 1998 von Konkurrent [[AMD]] veröffentlichten [[3DNow]]-Instruktionen zu machen, welche einen vergleichbaren Zweck erfüllten. Dieser Schritt war langfristig erfolgreich, SSE setzte sich gegenüber 3DNow durch und AMD unterstützte später ebenfalls nur noch SSE und ließ die 3DNow-Unterstützung auslaufen.<ref>{{Webarchiv|url=http://developer.amd.com/community/blog/2010/08/18/3dnow-deprecated/ |wayback=20131109151245 |text=3DNow! Instructions are Being Deprecated |archiv-bot=2019-05-16 06:59:39 InternetArchiveBot }} (englisch)</ref>


Obwohl anfänglich im Namen (ISSE) ausdrücklich erwähnt, hat diese Technik direkt nichts mit dem Internet zu tun; vielmehr diente der Verweis der besseren Vermarktung (Intel warb bei Einführung des [[Intel Pentium III|Pentium III]] u.&nbsp;a. damit, dass das Internetsurfen schneller bzw. generell aufregender werden würde). Nach kurzer Zeit ließ Intel das „I“ wegfallen, so dass man heute nur noch von ''SSE'' spricht.
Im Gegensatz zu der vorher veröffentlichten [[Multi Media Extension|MMX]]-Befehlssatzerweiterung wurde SSE speziell für [[Gleitkommazahl]]-Datentypen entwickelt, außerdem wurden eigene und doppelt so breite 128 Bit-[[Register (Computer)|Register]] spendiert, häufig bemängelte Schwächen beim MMX-Instruktionssatz. Intel entschied sich auch den SSE-Instruktionssatz völlig neuzuentwickeln und nicht kompatibel zu dem bereits 1998 von Konkurrent AMD veröffentlichten [[3DNow]]-Instruktionen zu machen, welche einen vergleichbaren Zweck erfüllten. Dieser Schritt war langfristig erfolgreich, SSE setzte sich gegenüber 3DNow durch und AMD unterstützt später ebenfalls nur noch SSE und ließ die 3DNow-Unterstützung auslaufen.<ref>[http://blogs.amd.com/developer/2010/08/18/3dnow-deprecated/ 3DNow! Instructions are Being Deprecated] (englisch)</ref>

Obwohl anfänglich im Namen (ISSE) ausdrücklich erwähnt, hat diese Technik direkt nichts mit dem Internet zu tun; vielmehr diente der Verweis der besseren Vermarktung (Intel warb bei Einführung des [[Intel Pentium III|Pentium III]] u.&nbsp;a. damit, dass das Internetsurfen schneller bzw. generell aufregender werden würde). Nach kurzer Zeit ließ auch Intel das „I“ wegfallen, so dass man heutzutage nur noch von '''SSE''' spricht.


=== SSE-Weiterentwicklung ===
=== SSE-Weiterentwicklung ===
Der seit geraumer Zeit existierende Wettkampf zwischen AMD und Intel über die Definitionshoheit bei der Weiterentwicklung der x86-Architektur, führte seit ca. SSE3 zu inkompatiblen Erweiterungen von SSE.<ref>{{cite web|url=http://www.agner.org/optimize/blog/read.php?i=25|first=Agner|last=Fog|title=Stop the instruction set war |accessdate=2012-05-12|date=2009-12-05 |language=englisch|publisher=agner.org}}</ref>
Der seit geraumer Zeit existierende Wettkampf zwischen AMD und Intel über die Definitionshoheit bei der Weiterentwicklung der x86-Architektur führte seit ca. SSE3 zu inkompatiblen Erweiterungen von SSE.<ref>{{cite web|url=http://www.agner.org/optimize/blog/read.php?i=25|first=Agner |last=Fog |title=Stop the instruction set war |accessdate=2012-05-12 |date=2009-12-05 |language=englisch |publisher=agner.org}}</ref>


[[Streaming SIMD Extensions 2|SSE2]], [[Streaming SIMD Extensions 3|SSE3]], [[Supplemental Streaming SIMD Extensions 3|SSSE3]], [[Streaming SIMD Extensions 4|SSE4]], [[SSE4a]] und [[Streaming SIMD Extensions 5|SSE5]] sind jüngere Erweiterungen bzw. Erweiterungsvorschläge von SSE sowohl von AMD als auch Intel. Inzwischen existiert mit den [[Advanced Vector Extensions]] ein weiterer Entwicklungszweig.
[[Streaming SIMD Extensions 2|SSE2]], [[Streaming SIMD Extensions 3|SSE3]], [[Supplemental Streaming SIMD Extensions 3|SSSE3]], [[Streaming SIMD Extensions 4|SSE4]], [[SSE4a]] und [[Streaming SIMD Extensions 5|SSE5]] sind jüngere Erweiterungen bzw. Erweiterungsvorschläge von SSE sowohl von AMD als auch von Intel. Inzwischen existieren mit den [[Advanced Vector Extensions]], [[XOP (Befehlserweiterung)|XOP]] und [[CVT16]] noch weitere Entwicklungszweige.


== Technischer Aufbau ==
== Technischer Aufbau ==
[[Datei:XMM registers.svg|mini|Die acht 128 Bit breiten und dedizierten SSE-Register, genannt XMM0 bis XMM7]]


Die SSE-Befehlssatzerweiterung umfasste ursprünglich 70 Instruktionen und 8 neue Register (XMM0 bis XMM7), später wurden im Zuge der Weiterentwicklung sowohl Registeranzahl als auch Befehlsanzahl vergrößert.
[[Datei:XMM registers.svg|miniatur|Die acht 128 Bit breiten und dedizierten SSE-Register, genannt XMM0 bis XMM7.]]


Wie [[AMD]]s [[3DNow]]-Erweiterungen ist auch SSE primär für [[Gleitkommaoperation]]en ausgelegt. Intel führte allerdings mit dem [[Intel Pentium III|Pentium&nbsp;III]] neue 128&nbsp;Bit breite Register ein, so dass mit SSE-Befehlen doppelt so viele Daten auf einmal parallel verarbeitet werden können, wie mit dem auf 64-Bit-Registern basierenden 3DNow. Das ging bei den damaligen Prozessoren jedoch nicht mit höherem Berechnungsdurchsatz einher, da die 128-Bit-SSE-Befehle intern in je zwei 64-Bit-SSE-Micro-Ops zerlegt wurden, weil die internen Ausführungseinheiten und ihre Datenpfade nur 64&nbsp;Bit breit waren.<ref>{{cite web|url=http://arstechnica.com/articles/paedia/cpu/core.ars/4|archiveurl=https://web.archive.org/web/20070401100301/http://arstechnica.com/articles/paedia/cpu/core.ars/4|title=Into the Core: Intel's next-generation microarchitecture
Die SSE-Befehlssatzerweiterung umfasst 70 Instruktionen und 8 neue Register XMM0 bis XMM7.
|first=Jon |last=Stokes |date=2006-04-05 |archivedate=2007-04-01 |accessdate=2012-05-12 |language=englisch |publisher=arstechnica.com}}</ref>


Bei aktuellen 64-Bit-Prozessoren, wie etwa den auf der [[Intel-Core-Mikroarchitektur|Core-Mikroarchitektur]] basierenden werden die 128&nbsp;Bit breiten SSE-Register tatsächlich in einem Schritt verarbeitet. Auch wurde die Anzahl der SSE-Register auf 16 erhöht, wobei die neu eingeführten analog zu dem bisherigen Namensschema als XMM8 bis XMM15 bezeichnet werden.
Wie [[AMD]]s [[3DNow]]-Erweiterungen ist auch SSE primär für [[Gleitkommaoperation]]en ausgelegt. Intel führte allerdings mit dem [[Intel Pentium III|Pentium&nbsp;III]] neue 128&nbsp;Bit breite Register ein, so dass mit SSE-Befehlen doppelt so viele Daten auf einmal parallel verarbeitet werden können wie mit dem auf 64-Bit-Registern basierenden 3DNow. Dies geht bei den damaligen Prozessoren jedoch nicht mit höherem Berechnungsdurchsatz einher, da die 128-Bit-SSE-Befehle intern in je zwei 64-Bit-SSE-Micro-Ops zerlegt werden, weil die internen Execution Units und ihre Datenpfade nur 64&nbsp;Bit breit sind.<ref>{{cite web|url=http://arstechnica.com/articles/paedia/cpu/core.ars/4|archiveurl=http://web.archive.org/web/20070401100301/http://arstechnica.com/articles/paedia/cpu/core.ars/4|title=Into the Core: Intel's next-generation microarchitecture
|first=Jon|last=Stokes|date=2006-04-05|archivedate=2007-04-01|accessdate=2012-05-12|language=englisch|publisher=arstechnica.com}}</ref> Bei aktuellen Prozessoren wie denen, die auf der [[Intel-Core-Mikroarchitektur|Core-Mikroarchitektur]] basieren, werden die 128&nbsp;Bit breiten SSE-Register tatsächlich in einem Schritt verarbeitet.


== Unterstützung in den CPUs ==
== Unterstützung in den CPUs ==
Da SSE eine der ersten [[Flynnsche Klassifikation#SIMD (Single Instruction, Multiple Data)|SIMD]]-Erweiterungen der x86-Architektur war und bereits im Jahr 1999 auf den Markt kam, besitzen praktisch alle x86-CPUs seit etwa Mitte der 2000er Jahre SSE.


Beispielsweise unterstützte AMD ab dem [[AMD Athlon (K7)|Athlon]] einen Teil der im SSE-Befehlssatz enthaltenen Befehle (unter anderem diejenigen, welche mit 64-Bit-Registern arbeiten). Hier spricht man auch von einer Erweiterung von MMX. Seit dem [[AMD Athlon XP|Athlon-XP]]-Prozessor wird SSE vollständig unterstützt, in der Folge so weitgehend, dass sogar die eigene Erweiterung 3DNow aufgegeben wurde.
Da SSE eine der ersten [[Flynnsche Klassifikation#SIMD (Single Instruction, Multiple Data)|SIMD]]-Erweiterungen der x86-Architektur ist und bereits im Jahr 1999 auf den Markt kam, besitzen eigentlich alle x86-CPUs der letzten Jahre SSE. Eine vollständige Liste aller CPUs mit SSE wäre also sehr unübersichtlich. An dieser Stelle sei daher auf die [[Liste von Mikroprozessoren]] verwiesen.

Beispielsweise unterstützte AMD ab dem [[AMD Athlon (K7)|Athlon]] einen Teil der im SSE-Befehlssatz enthaltenen Befehle (unter anderem die, die mit 64-Bit-Registern arbeiten). Hierbei spricht man auch von einer Erweiterung von MMX. Seit dem [[AMD Athlon XP|Athlon-XP]]-Prozessor wird SSE vollständig unterstützt, inzwischen soweitgehend, dass sogar die eigene Erweiterung 3Dnow aufgegeben wurde.


Nachfolgend eine Übersicht, ab welcher CPU-Familie die jeweiligen Hersteller SSE integriert haben:
Nachfolgend eine Übersicht, ab welcher CPU-Familie die jeweiligen Hersteller SSE integriert haben:
*[[AMD]]: ab Athlon XP komplett, beim Athlon und [[AMD Duron|Duron]] (seit Prozessorkern ''Morgan'') nur teilweise.
* [[AMD]]: ab Athlon XP komplett, beim Athlon und [[AMD Duron|Duron]] (seit Prozessorkern ''Morgan'') nur teilweise
*[[Centaur Technology]]: beim [[VIA C3|C3]] mit Prozessorkern ''Nehemiah''
* [[Centaur Technology]]: beim [[VIA C3|C3]] mit Prozessorkern ''Nehemiah''
*[[Intel]]: ab [[Intel Pentium III|Pentium III]], beim [[Intel Celeron (P6)|Celeron]] mit Prozessorkern ''Coppermine''
* [[Intel]]: ab [[Intel Pentium III|Pentium III]], beim [[Intel Celeron (P6)|Celeron]] mit Prozessorkern ''Coppermine''
*[[Transmeta]]: ab [[Transmeta Efficeon|Efficeon]]
* [[Transmeta]]: ab [[Transmeta Efficeon|Efficeon]]


== Einzelnachweise ==
== Einzelnachweise ==
Zeile 42: Zeile 39:
{{Navigationsleiste x86-Erweiterungen}}
{{Navigationsleiste x86-Erweiterungen}}


{{DEFAULTSORT:Streaming Simd Extensions}}
{{SORTIERUNG:Streaming Simd Extensions}}
[[Kategorie:Prozessorarchitektur]]
[[Kategorie:Prozessorarchitektur nach Befehlssatz]]
[[Kategorie:Intel]]
[[Kategorie:Intel]]
[[Kategorie:AMD]]
[[Kategorie:AMD]]

[[bg:SSE]]
[[ca:Streaming SIMD Extensions]]
[[cs:Streaming SIMD Extensions]]
[[en:Streaming SIMD Extensions]]
[[eo:SSE (instrukciaro)]]
[[es:SSE]]
[[fi:SSE]]
[[fr:Streaming SIMD Extensions]]
[[hu:SSE]]
[[id:SSE]]
[[it:Streaming SIMD Extensions]]
[[ja:Streaming SIMD Extensions]]
[[ko:스트리밍 SIMD 확장]]
[[nl:SSE]]
[[no:Streaming SIMD Extensions]]
[[pl:Streaming SIMD Extensions]]
[[pt:SSE]]
[[ru:SSE]]
[[th:Streaming SIMD Extensions]]
[[uk:SSE]]
[[zh:SSE]]

Aktuelle Version vom 4. September 2021, 03:20 Uhr

Vergleich der Implementierung von Befehlssatzerweiterungen durch AMD (links) und Intel (rechts), Stand 2013

Die Streaming SIMD Extensions (SSE), früher auch Internet SIMD Streaming Extensions (ISSE) ist eine von Intel entwickelte Befehlssatzerweiterung der x86-Architektur, die mit der Einführung des Pentium-III-(Katmai)-Prozessors 1999 vorgestellt wurde und deshalb anfangs den Namen Katmai New Instructions (KNI) trug. Zweck ist es, Programme durch Parallelisierung auf Instruktionslevel zu beschleunigen, genannt SIMD.

Im Gegensatz zu der vorher veröffentlichten MMX-Befehlssatzerweiterung wurde SSE speziell für Gleitkommazahl-Datentypen entwickelt, außerdem wurden eigene und doppelt so breite 128-Bit-Register implementiert, beides häufig bemängelte Schwächen des MMX-Instruktionssatzes. Intel entschied sich auch dafür, den SSE-Instruktionssatz völlig neuzuentwickeln und nicht kompatibel zu dem bereits 1998 von Konkurrent AMD veröffentlichten 3DNow-Instruktionen zu machen, welche einen vergleichbaren Zweck erfüllten. Dieser Schritt war langfristig erfolgreich, SSE setzte sich gegenüber 3DNow durch und AMD unterstützte später ebenfalls nur noch SSE und ließ die 3DNow-Unterstützung auslaufen.[1]

Obwohl anfänglich im Namen (ISSE) ausdrücklich erwähnt, hat diese Technik direkt nichts mit dem Internet zu tun; vielmehr diente der Verweis der besseren Vermarktung (Intel warb bei Einführung des Pentium III u. a. damit, dass das Internetsurfen schneller bzw. generell aufregender werden würde). Nach kurzer Zeit ließ Intel das „I“ wegfallen, so dass man heute nur noch von SSE spricht.

SSE-Weiterentwicklung

[Bearbeiten | Quelltext bearbeiten]

Der seit geraumer Zeit existierende Wettkampf zwischen AMD und Intel über die Definitionshoheit bei der Weiterentwicklung der x86-Architektur führte seit ca. SSE3 zu inkompatiblen Erweiterungen von SSE.[2]

SSE2, SSE3, SSSE3, SSE4, SSE4a und SSE5 sind jüngere Erweiterungen bzw. Erweiterungsvorschläge von SSE sowohl von AMD als auch von Intel. Inzwischen existieren mit den Advanced Vector Extensions, XOP und CVT16 noch weitere Entwicklungszweige.

Technischer Aufbau

[Bearbeiten | Quelltext bearbeiten]
Die acht 128 Bit breiten und dedizierten SSE-Register, genannt XMM0 bis XMM7

Die SSE-Befehlssatzerweiterung umfasste ursprünglich 70 Instruktionen und 8 neue Register (XMM0 bis XMM7), später wurden im Zuge der Weiterentwicklung sowohl Registeranzahl als auch Befehlsanzahl vergrößert.

Wie AMDs 3DNow-Erweiterungen ist auch SSE primär für Gleitkommaoperationen ausgelegt. Intel führte allerdings mit dem Pentium III neue 128 Bit breite Register ein, so dass mit SSE-Befehlen doppelt so viele Daten auf einmal parallel verarbeitet werden können, wie mit dem auf 64-Bit-Registern basierenden 3DNow. Das ging bei den damaligen Prozessoren jedoch nicht mit höherem Berechnungsdurchsatz einher, da die 128-Bit-SSE-Befehle intern in je zwei 64-Bit-SSE-Micro-Ops zerlegt wurden, weil die internen Ausführungseinheiten und ihre Datenpfade nur 64 Bit breit waren.[3]

Bei aktuellen 64-Bit-Prozessoren, wie etwa den auf der Core-Mikroarchitektur basierenden werden die 128 Bit breiten SSE-Register tatsächlich in einem Schritt verarbeitet. Auch wurde die Anzahl der SSE-Register auf 16 erhöht, wobei die neu eingeführten analog zu dem bisherigen Namensschema als XMM8 bis XMM15 bezeichnet werden.

Unterstützung in den CPUs

[Bearbeiten | Quelltext bearbeiten]

Da SSE eine der ersten SIMD-Erweiterungen der x86-Architektur war und bereits im Jahr 1999 auf den Markt kam, besitzen praktisch alle x86-CPUs seit etwa Mitte der 2000er Jahre SSE.

Beispielsweise unterstützte AMD ab dem Athlon einen Teil der im SSE-Befehlssatz enthaltenen Befehle (unter anderem diejenigen, welche mit 64-Bit-Registern arbeiten). Hier spricht man auch von einer Erweiterung von MMX. Seit dem Athlon-XP-Prozessor wird SSE vollständig unterstützt, in der Folge so weitgehend, dass sogar die eigene Erweiterung 3DNow aufgegeben wurde.

Nachfolgend eine Übersicht, ab welcher CPU-Familie die jeweiligen Hersteller SSE integriert haben:

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. 3DNow! Instructions are Being Deprecated (Memento des Originals vom 9. November 2013 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/developer.amd.com (englisch)
  2. Agner Fog: Stop the instruction set war. agner.org, 5. Dezember 2009, abgerufen am 12. Mai 2012 (englisch).
  3. Jon Stokes: Into the Core: Intel's next-generation microarchitecture. arstechnica.com, 5. April 2006, archiviert vom Original am 1. April 2007; abgerufen am 12. Mai 2012 (englisch).