„F16C“ – Versionsunterschied

[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
→‎Technical Information: Explaned mnemonic. A native english speaker can probably infer it, but a less fluent programmer would probably get lost.
→‎Technische Information: korrekter Artikel
 
(48 dazwischenliegende Versionen von 28 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
'''F16C''' (früher auch '''CVT16''') bezeichnet eine [[Befehlssatzerweiterung]] für [[Mikroprozessor]]en von [[Intel]] und [[AMD]] zur leichteren Umrechnung von [[Gleitkommazahl]]en unterschiedlicher [[Präzision]].<ref>{{Internetquelle|url=https://blogs.msdn.microsoft.com/chuckw/2012/09/11/directxmath-f16c-and-fma/|titel=DirectXMath: F16C and FMA|autor=Chuck Walbourn|werk=[[Microsoft Developer Network]]|datum=2012-09-11|zugriff=2017-01-11}}</ref>
{{Userspace draft|source=ArticleWizard|date=September 2013}}


== Geschichte ==
==Technical Information==
Am 1. Mai 2009 wurde diese Befehlssatzerweiterung von AMD unter dem Namen CVT16 angekündigt. Sie stellt in überarbeiteter Form einige Befehle der [[SSE5]]-Erweiterung zur Verfügung und fungiert als Bindeglied zu Intels [[Advanced Vector Extensions|AVX]]-Erweiterung. Seit 2012 werden diese Befehle auch von Intel verwendet.<ref>{{Literatur|Autor=R. L. Uy|Titel=Beyond multi-core: A survey of architectural innovations on microprocessor|Sammelwerk=2014 International Conference on Humanoid, Nanotechnology, Information Technology, Communication and Control, Environment and Management (HNICEM)|Datum=2014-11-01|Seiten=1–6|DOI=10.1109/HNICEM.2014.7016212}}</ref>


== Funktion ==
F16C (previously/informally known as '''CVT16''') instructions are [[x86]] [[instruction set architecture]] extensions which provide support for converting between [[half-precision]] and standard IEEE [[single-precision floating-point format]]s. Variants convert 4 floating-point values in an [[Streaming SIMD Extensions#Registers|XMM register]] or 8 floating-point values in a [[Advanced Vector Extensions|YMM register]].
Die Befehlssatzerweiterung erleichtert das Konvertieren von Gleitkommazahlen halber Genauigkeit (16&nbsp;Bit) in Gleitkommazahlen einfacher Genauigkeit (32&nbsp;Bit) und umgekehrt, womit auch eine Verlagerung von [[Streaming SIMD Extensions|XMM-Registern]] in YMM-Register verbunden ist.<ref>{{Literatur|Autor=Daniel Kusswurm|Titel=Modern X86 Assembly Language Programming|Verlag=[[Apress]]|Datum=2014|Seiten=342 ff.|ISBN=9781484200643|DOI=10.1007/978-1-4842-0064-3}}</ref>
<!--
The CVT16 instruction set, announced by AMD on May 1, 2009, is an extension to the 128-bit SSE core instructions in the x86 and AMD64 instruction set.


CVT16 is a revision of part of the SSE5 instruction set proposal announced on August 30, 2007, which is supplemented by the XOP and FMA4 instruction sets. This revision makes the binary coding of the proposed new instructions more compatible with Intel's AVX instruction extensions, while the functionality of the instructions is unchanged.
The instructions are abbreviations for "vector convert packed half to packed single" and vice-versa:


In recent documents, the name F16C is formally used in both Intel and AMD x86-64 architecture specifications.
* <code>VCVTPH2PS xmmreg,xmmrm64</code> Convert 4 half-precision floating point values in memory or the bottom half of an XMM register to 4 single-precision floating-point values in an XMM register.
-->
* <code>VCVTPH2PS ymmreg,xmmrm128</code> Convert 8 half-precision floating point values in memory or an XMM register (the bottom half of a YMM register) to 8 single-precision floating-point values in a YMM register.
* <code>VCVTPS2PH xmmrm64,xmmreg,imm8</code> Convert 4 half-precision floating point values in an XMM register to half-precision floating-point values in memory or the bottom half an XMM register.
* <code>VCVTPS2PH xmmrm128,ymmreg,imm8</code> Convert 8 half-precision floating point values in a YMM register to half-precision floating-point values in memory or an XMM register.


== Technische Information ==
The 8-bit immediate argument to <code>VCVTPS2PH</code> selects the [[rounding]] mode. Values 0–4 select nearest, down, up, truncate, and the mode set in </code>MXCSR.RC</code>.


Es gibt Varianten des Befehlssatzes, die vier Gleitkommawerte in ein XMM-Register oder acht Gleitkommawerte in ein XMM-Register und ein YMM-Register verschieben.
Support for these instructions is indicated by bit 29 of ECX after [[CPUID#EAX.3D1|CPUID with EAX=1]].
Die Befehlsnamen VCVTPH2PS und VCVTPS2PH sind Kürzel für "vector convert packed half to packed single", (Vektorumwandlung halb gepackt nach einfach gepackt) und umgekehrt.


* VCVTPH2PS xmmreg,xmmrm64 wandelt vier Gleitkommawerte halber Genauigkeit im Speicher oder in der unteren Hälfte eines XMM-Registers in vier Gleitkommawerte einfacher Genauigkeit in einem XMM-Register.
== History ==
* VCVTPH2PS ymmreg,xmmrm128 wandelt acht Gleitkommawerte halber Genauigkeit im Speicher oder einem XMM-Registers (der unteren Hälfte eines YMM-Registers) in acht Gleitkommawerte einfacher Genauigkeit eines YMM-Registers.
* VCVTPS2PH xmmrm64,xmmreg,imm8 wandelt vier Gleitkommawerte einfacher Genauigkeit in einem XMM-Register in Gleitkommawerte halber Genauigkeit im Speicher oder der unteren Hälfte eines XMM-Registers.
* VCVTPS2PH xmmrm128,ymmreg,imm8 wandelt acht Gleitkommawerte einfacher Genauigkeit in einem YMM-Register in Gleitkommawerte halber Genauigkeit im Speicher oder der unteren Hälfte eines XMM-Registers.


Das unmittelbare 8-bit-Argument '' imm8'' bei VCVTPS2PH gibt die Form der Abrundung vor. Die Werte '0' - '4' legen die Rundungform fest (Nächster Wert / abrunden / aufrunden / löschen). Dadurch wird auch der Modus für MXCSR.RC vorgegeben.
The '''CVT16''' instruction set, announced by [[Advanced Micro Devices|AMD]] on May 1, 2009, is an extension to the 128-bit [[Streaming SIMD Extensions|SSE]] core instructions in the [[x86]] and [[AMD64]] instruction set.
Das Bit 29 des Registers ECX zeigt die Unterstützung für diese Befehle nach Abfrage durch CPUID mit EAX=1 an.


<!--
CVT16 is a revision of part of the [[SSE5]] instruction set proposal announced on August 30, 2007, which is supplemented by the [[XOP instruction set|XOP]] and [[FMA instruction set|FMA4]] instruction sets. This revision makes the binary coding of the proposed new instructions more compatible with [[Intel]]'s [[Advanced Vector Extensions|AVX]] instruction extensions, while the functionality of the instructions is unchanged.
There are variants that convert four floating-point values in an XMM register or 8 floating-point values in a YMM register.
The instructions are abbreviations for "vector convert packed half to packed single" and vice versa:
VCVTPH2PS xmmreg,xmmrm64 – convert four half-precision floating point values in memory or the bottom half of an XMM register to four single-precision floating-point values in an XMM register.
VCVTPH2PS ymmreg,xmmrm128 – convert eight half-precision floating point values in memory or an XMM register (the bottom half of a YMM register) to eight single-precision floating-point values in a YMM register.
VCVTPS2PH xmmrm64,xmmreg,imm8 – convert four single-precision floating point values in an XMM register to half-precision floating-point values in memory or the bottom half an XMM register.
VCVTPS2PH xmmrm128,ymmreg,imm8 – convert eight single-precision floating point values in a YMM register to half-precision floating-point values in memory or an XMM register.
The 8-bit immediate argument to VCVTPS2PH selects the rounding mode. Values 0–4 select nearest, down, up, truncate, and the mode set in MXCSR.RC.
Support for these instructions is indicated by bit 29 of ECX after CPUID with EAX=1.
-->


== Weblinks ==
In recent documents, the name '''F16C''' is formally used in both [[Intel]] and [[AMD]] [[x86-64]] architecture specifications.
* [http://developer.amd.com/wordpress/media/2012/10/New-Bulldozer-and-Piledriver-Instructions.pdf New Bulldozer and Piledriver Instructions]
* [http://blogs.msdn.com/b/chuckw/archive/2012/09/11/directxmath-f16c-and-fma.aspx DirectX math F16C and FMA]
* [http://developer.amd.com/wordpress/media/2012/10/24592_APM_v11.pdf AMD64 Architecture Programmer's Manual Volume 1]
* [http://developer.amd.com/wordpress/media/2012/10/24593_APM_v21.pdf AMD64 Architecture Programmer's Manual Volume 2]
* [http://developer.amd.com/wordpress/media/2008/10/24594_APM_v3.pdf AMD64 Architecture Programmer's Manual Volume 3]
* [http://developer.amd.com/wordpress/media/2012/10/26568_APM_v41.pdf AMD64 Architecture Programmer's Manual Volume 4]
* [http://developer.amd.com/wordpress/media/2012/10/26569_APM_v51.pdf AMD64 Architecture Programmer's Manual Volume 5]
* [http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf IA32 Architectures Software Developer Manual]


== Einzelnachweise ==
The F16C instructions allow conversion of [[floating point]] vectors between [[single precision]] and [[half precision]].
<references />


{{Navigationsleiste x86-Erweiterungen}}
== References ==
<!--- See http://en.wikipedia.org/wiki/Wikipedia:Footnotes on how to create references using <ref></ref> tags which will then appear here automatically -->
{{Reflist}}


[[Kategorie:Prozessorarchitektur nach Befehlssatz]]
== External links ==
* [http://developer.amd.com/wordpress/media/2012/10/New-Bulldozer-and-Piledriver-Instructions.pdf]
* [http://blogs.msdn.com/b/chuckw/archive/2012/09/11/directxmath-f16c-and-fma.aspx]
* AMD64 Architecture Programmer's Manual Volume 1 [http://developer.amd.com/wordpress/media/2012/10/24592_APM_v11.pdf]
* AMD64 Architecture Programmer's Manual Volume 2 [http://developer.amd.com/wordpress/media/2012/10/24593_APM_v21.pdf]
* AMD64 Architecture Programmer's Manual Volume 3 [http://developer.amd.com/wordpress/media/2008/10/24594_APM_v3.pdf]
* AMD64 Architecture Programmer's Manual Volume 4 [http://developer.amd.com/wordpress/media/2012/10/26568_APM_v41.pdf]
* AMD64 Architecture Programmer's Manual Volume 5 [http://developer.amd.com/wordpress/media/2012/10/26569_APM_v51.pdf]
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf
<!--- Categories --->



[[Category:Articles created via the Article Wizard]]
[[Category:X86 architecture]]

Aktuelle Version vom 15. Oktober 2021, 13:33 Uhr

F16C (früher auch CVT16) bezeichnet eine Befehlssatzerweiterung für Mikroprozessoren von Intel und AMD zur leichteren Umrechnung von Gleitkommazahlen unterschiedlicher Präzision.[1]

Geschichte

Am 1. Mai 2009 wurde diese Befehlssatzerweiterung von AMD unter dem Namen CVT16 angekündigt. Sie stellt in überarbeiteter Form einige Befehle der SSE5-Erweiterung zur Verfügung und fungiert als Bindeglied zu Intels AVX-Erweiterung. Seit 2012 werden diese Befehle auch von Intel verwendet.[2]

Funktion

Die Befehlssatzerweiterung erleichtert das Konvertieren von Gleitkommazahlen halber Genauigkeit (16 Bit) in Gleitkommazahlen einfacher Genauigkeit (32 Bit) und umgekehrt, womit auch eine Verlagerung von XMM-Registern in YMM-Register verbunden ist.[3]

Technische Information

Es gibt Varianten des Befehlssatzes, die vier Gleitkommawerte in ein XMM-Register oder acht Gleitkommawerte in ein XMM-Register und ein YMM-Register verschieben. Die Befehlsnamen VCVTPH2PS und VCVTPS2PH sind Kürzel für "vector convert packed half to packed single", (Vektorumwandlung halb gepackt nach einfach gepackt) und umgekehrt.

  • VCVTPH2PS xmmreg,xmmrm64 wandelt vier Gleitkommawerte halber Genauigkeit im Speicher oder in der unteren Hälfte eines XMM-Registers in vier Gleitkommawerte einfacher Genauigkeit in einem XMM-Register.
  • VCVTPH2PS ymmreg,xmmrm128 wandelt acht Gleitkommawerte halber Genauigkeit im Speicher oder einem XMM-Registers (der unteren Hälfte eines YMM-Registers) in acht Gleitkommawerte einfacher Genauigkeit eines YMM-Registers.
  • VCVTPS2PH xmmrm64,xmmreg,imm8 wandelt vier Gleitkommawerte einfacher Genauigkeit in einem XMM-Register in Gleitkommawerte halber Genauigkeit im Speicher oder der unteren Hälfte eines XMM-Registers.
  • VCVTPS2PH xmmrm128,ymmreg,imm8 wandelt acht Gleitkommawerte einfacher Genauigkeit in einem YMM-Register in Gleitkommawerte halber Genauigkeit im Speicher oder der unteren Hälfte eines XMM-Registers.

Das unmittelbare 8-bit-Argument imm8 bei VCVTPS2PH gibt die Form der Abrundung vor. Die Werte '0' - '4' legen die Rundungform fest (Nächster Wert / abrunden / aufrunden / löschen). Dadurch wird auch der Modus für MXCSR.RC vorgegeben. Das Bit 29 des Registers ECX zeigt die Unterstützung für diese Befehle nach Abfrage durch CPUID mit EAX=1 an.


Einzelnachweise

  1. Chuck Walbourn: DirectXMath: F16C and FMA. In: Microsoft Developer Network. 11. September 2012, abgerufen am 11. Januar 2017.
  2. R. L. Uy: Beyond multi-core: A survey of architectural innovations on microprocessor. In: 2014 International Conference on Humanoid, Nanotechnology, Information Technology, Communication and Control, Environment and Management (HNICEM). 1. November 2014, S. 1–6, doi:10.1109/HNICEM.2014.7016212.
  3. Daniel Kusswurm: Modern X86 Assembly Language Programming. Apress, 2014, ISBN 978-1-4842-0064-3, S. 342 ff., doi:10.1007/978-1-4842-0064-3.