Poziomy mikroarchitektury x86-64

W tym artykule omówimy typy procesorów x86-64. W 2020 roku dzięki kolaboracji firm Intel, AMD, Red Hat i SUSE udało się stworzyć podział na poziomy funkcji mikroarchitektury x86-64. Dzięki temu zdefiniowano podstawowe zestawy instrukcji dostępnych na procesorze, na które kompilator może się powołać. Nowsze procesory x86-64 mają dodatkowe instrukcje, dzięki którym kompilator może zoptymalizować kod, efektem jest szybszy czas wykonania kosztem kompatybilności wstecznej ponieważ kod skompilowany dla nowszego poziomu nie będzie działał na starszych procesorach, które tych instrukcji nie posiadają.

Jakie są poziomy?

Każdy poziom mikroarchitektury odpowiada podstawowej liczbie instrukcji dostępnych na procesorze.

  • Poziom 1, x86-64-v1 to oryginalny zestaw instrukcji x86-64, który zadebiutował z Athlonem 64 AMD we wrześniu 2003 roku. Zestawy instrukcji / flagi funkcji, jakie są wspierane przez ten poziom mikroarchitektury:
    CMOV, CX8, FPU, FXSR, MMX, OSFXSR, SCE, SSE, SSE2
  • Poziom 2, x86-64-v2, odpowiada procesorom Intel Nehalem (2009) i AMD Bulldozer (2010) oraz nowszym. Ma on dodatkowe instrukcje SSE3 + SSE4. Zestawy instrukcji / flagi funkcji, jakie są wspierane przez ten poziom mikroarchitektury:
    wszystkie z poprzedniej mikroarchitektuty oraz CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4_1, SSE4_2, SSSE3
  • Poziom 3, x86-64-v3, odpowiada procesorom Intel Haswell (2013) lub AMD Excavator (2015) i nowszym. Ten zestaw instrukcji dodaje AVX2, który wprowadza rejestry o szerokości 256-bitowej do wykonywania operacji SIMD (zamiast ładowania, operowania, przechowywania i zapętlania). Umożliwia to szybkie operacje na danych reprezentowanych w dużych tablicach, takich jak macierze, wektory itp. Zestawy instrukcji / flagi funkcji, jakie są wspierane przez ten poziom mikroarchitektury:
    wszystkie z poprzedniej mikroarchitektuty oraz AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, OSXSAVE
  • Poziom 4, x86-64-v4, odpowiada procesorom obsługującym AVX512. AVX512 wprowadza instrukcje SIMD dla nowych rejestrów o szerokości 512 bitów. Zestawy instrukcji / flagi funkcji, jakie są wspierane przez ten poziom mikroarchitektury:
    wszystkie z poprzedniej mikroarchitektuty oraz AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL

Szczegółowe informacje na temat podziału mikroprocesorów na poszczególne poziomy można znaleźć tutaj.

Podczas tworzenia serwera wirtualnego w naszej usłudze, można wybrać typ architektury procesora, domyślnie jest ustawiany najwyższy dostępny poziom mikroarchitektury dostępny w danej lokalizacji. Obecnie dla obu naszych lokalizacji to x86-64-v4.

Do czego może się przydać wybór architektury mikroprocesora?

KVM ma możliwość przekazywania zestawów instrukcji do wirtualnego procesora w VM, maskując niektóre zestawy instrukcji hypervisora przed serwerem wirtualnym.
Jeśli mamy specyficzną aplikację lub system operacyjny, który wymaga do działania specyficznego zestawu instrukcji, możemy podczas tworzenia wirtualnego serwera wskazać poziom mikroatchitektury, którą wirtualizator ma emulować.
Również może być to przydatne, jeśli wykonywana była migracja z VMware i zmigrowany system operacyjny nie chce się uruchomić ze względu na to, że na oryginalnym środowisku VMware były host z inną mikroarchitekturą. Wskazanie mikroarchitektury procesora identycznej jak na źródłowym środowisku rozwiązuje ten problem.


Jak wybrać lub zmienić architekturę procesora?

Podczas tworzenia serwera lub migracji z VMware wystarczy wskazać architekturę na formularzu konfiguracji serwera.

Wybór architektury procesora


Aby zmienić architekturę procesora na istniejącym serwerze, najpierw musimy go wyłączyć. Następnie w widoku szczegółowym tego serwera należy wybrać zakładkę “Zaawansowane”, a następnie kliknąć w przycisk “Zmień architekturę procesora”.

Wybór architektury procesora

W oknie, jakie się pojawi, możemy wybrać architekturę, jaka jest nam potrzebna, a następnie zatwierdzić nasz wybór klikając w przycisk “Zapisz zmiany”.

Wybór architektury procesora