- MMX: Multimedia Extension
- SIMD Single Instruction Multiple Data, keine Überläufe
- AMD: 3D-Now!
- Acht neue 64-Bit Register
- MM0 bis MM7
- Prüfen ob Verfügbar: CPUID, 1 in EAX-Register, Prüfen, ob Bit 23 gesetzt
mov eax, 00000001
cpuid
test edx, 000800000h
jnz vorhanden
------------------------------------------------------------------------------------------------
Register:
mmx: mm0 .. mm7
sse: xmm0 .. xmm15
avx, avx2: ymm0 .. ymm15
avx-512: zmm0 .. zmm31
Befehle:
fxsave: FPU, MMX, XMM, MXCSR-Register in 512 Byte großen Speicherbereich
fxstor: Lädt
movq mm0, summand0
movq mm1, summand1
movq mm2, summand2
movq mm3, summand3
Befehle:
1.) Packen/Entpacken
1.1.) Packen
1.2.) Entpacken
2.) ADD
3.) AND
4.) CMP
5.) MOV
6.) MUL
7.) OR
8.) SAR
9.) SHL
10.) SHR
11.) SUB
12.) XOR
Befehle:
1.) Packen/Entpacken
1.1.) Packen: PACKSSWB, PACKUSWB
1.2.) Entpacken: PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ, PUNPCKLBW, PUNPCKLWD, PUNPCKLDQ
2.) ADD: PADDB, PADDW, PADDD, PADDSB, PADDSW, PADDUSB, PADDUSW
3.) AND: PAND, PANDN
4.) CMP: PCMPEQB, PCMPEQW, PCMPEQD, PCMPGTB, PCMPGTW, PCMPGTD
5.) MOV: MOVD, MOVQ
6.) MUL: PMADDWD, PMULHW, PMULLW
7.) OR: POR
8.) SAR: PSRAW, PSRAD
9.) SHL: PSLLW, PSLLD, PSLLQ
10.) SHR: PSRLW, PSRLD, PSRLQ
11.) SUB: PSUBB, PSUBW, PSUBD, PSUBSB, PSUBSW, PSUBUSB, PSUBUSW
12.) XOR: PXOR
sse4.1
1.) Skalarprodukt: dpps, dppd
2.) bedingtes Überblenden: blendps blendpd blendvps blendvpd
3.) Minima, maxima: PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD, PMAXSD
4.) Integer-Umwandlung: PMOVSXBW/-D/-Q, PMOVZXBW/-D/-Q, PMOVSXWD/-Q, PMOVZXWD/-Q, PMOVSXDQ, PMOVZXDQ
avx
VBROADCASTSS
VBROADCASTSD
VBROADCASTF128 Kopiert einen 32-Bit-, 64-Bit- oder 128-Bit-Speicheroperanden in alle Elemente eines XMM- oder YMM-Registers.
VINSERTF128 Ersetzt entweder die obere oder untere Hälfte eines 256-Bit-YMM-Register mit dem Wert aus dem 128-Bit-Operanden. Die andere Hälfte bleibt unverändert.
VEXTRACTF128 Extrahiert entweder die obere oder untere Hälfte eines 256-Bit-YMM-Registers und kopiert den Wert in den 128-Bit-Operanden.
VMASKMOVPS
VMASKMOVPD Liest eine beliebige Anzahl von Vektorelementen bedingt aus einem SIMD-Speicheroperand in ein Zielregister, wobei der verbleibende Platz mit Nullen gefüllt wird.
VPERMILPS
VPERMILPD Tauscht 32-Bit- oder 64-Bit-Vektorelemente aus.
VPERM2F128 Mischt die vier 128-Bit-Vektorelemente aus zwei 256-Bit-Ursprungsoperanden in ein 256-Bit-Zieloperanden.
VTESTPS, VTESTPD Setzt die Flag-Bits CF und ZF entsprechend einem Vergleich aller Vorzeichenbits.
VZEROALL Füllt alle YMM-Register mit Nullen und markiert sie als unbenutzt. Wird beim Umschalten zwischen 128-Bit- und 256-Bit-Modus verwendet.
VZEROUPPER Füllt die obere Hälfte aller YMM-Register mit Nullen. Wird beim Umschalten zwischen 128-Bit- und 256-Bit-Modus verwendet.
- Advanced Vector Extensions (AVX)
- SIMD Single Instruction, Multiple Data, Array-Prozessoren oder Vektorprozessor
- SSE4 (Streaming SIMD Extensions 4), SSE 4.1, SSE 4.2
- Intel SSE4 besteht aus 54 Befehlen.
- SSE 4.1, Skalarprodukt bestimmen – DPPS, DPPD, Bedingtes Überblenden – BLENDPS/-D, BLENDVPS/-D, PBLENDVB, PBLENDDW, Minima bzw. Maxima bestimmen – PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD, PMAXSD, Integerumwandlung – PMOVSXBW/-D/-Q, PMOVZX
- SSE 4.2, Zyklische Redundanzprüfung – CRC32
- Beschleunigte Prüfsummenberechnung
- Castagnoli-Variante (CRC-32C)
- CRC-32C kommt unter anderem bei iSCSI und bei dem Linux Dateisystem Btrfs zum Einsatz.
- IEEE 802.3 standardisierten CRC32-Variante
- Die zyklische Redundanzprüfung (englisch cyclic redundancy check, daher meist CRC) ist ein Verfahren zur Bestimmung eines Prüfwerts für Daten, um Fehler bei der Übertragung oder Speicherung erkennen zu können
- Bulldozer: AMD
- AVX2 erweitert den Befehlssatz von AVX um weitere 256-Bit-Befehle und wurde erstmals von Prozessoren der Haswell-Architektur (Intel) und Excavator-Architektur (AMD) unterstützt.
- AVX-512 wurde 2013 veröffentlicht und erweiterte die AVX-Befehle von 256 auf 512 Bit.[2] Es wurde erstmals von Prozessoren der Knights-Landing-Architektur (Intel) unterstützt.
Sandy-Bridge-Prozessoren, Q1 2011[11]
Ivy-Bridge-Prozessoren, Q2 2012
Haswell-Prozessoren, Q2 2013
Broadwell-Prozessoren, Q1 2015
Skylake-Prozessoren, Q3 2015
Kaby-Lake-Prozessoren, Q3 2016
Coffee-Lake-Prozessoren Q4 2017
- SRBDS is a hardware vulnerability that allows MDS MDS - Microarchitectural Data Sampling techniques to infer values returned from special register accesses.
- hardware vulnerability
- Maximum Distance Separable, MDS-Code, eine Klasse von Codes in der Kodierungstheorie
- Multidimensionale Skalierung, ein multivariates Verfahren der Statistik
- Microarchitectural Data Sampling gehört zu Spectre
- ZombieLoad-Angriffe
- Weitere MDS-Attacken sind unter RIDL (Rogue In-Flight Data Load) und Fallout bekannt.
- The Microarchitectural Data Sampling (MDS)
Microarchitectural Store Buffer Data Sampling (MSBDS), CVE-2018-12126
Microarchitectural Load Port Data Sampling (MLPDS), CVE-2018-12127
Microarchitectural Fill Buffer Data Sampling (MFBDS), CVE-2018-12130
Microarchitectural Data Sampling Uncacheable Memory (MDSUM), CVE-2019-11091
Transactional Asynchronous Abort (TAA), CVE-2019-11135