Skocz do: nawigacji, wyszukiwania

MICLAB:Architektura Intel MIC - Jednostka wektorowa


Architektura akceleratorów obliczeniowych firmy Intel

dr inż. Łukasz Szustak, Politechnika Częstochowska, IITiS
mgr inż. Kamil Halbiniak, Politechnika Częstochowska, IITiS



Jednostka wektorowa


Rdzenie w architekturze Intel MIC posiadają własną jednostkę wektorową VPU (Vector Processing Unit), która umożliwia wektorowe przetwarzanie danych, co znacząco zwiększa wydajność całego układu. VPU akceleratora dostarcza zrównoleglenie na poziomie danych (data level parallelizm). Jednostka wektorowa posiada sto dwadzieścia osiem 512-bitowych rejestrów umożliwiających wykonywanie operacji przy użyciu przykładowo 16 elementów pojedynczej precyzji lub 8 elementów podwójnej precyzji. Każdy z wątków uruchomionych w obrębie pojedynczego rdzenia posiada własny zestaw 32 wektorów. VPU posiada również w osiem 16-bitowych rejestrów pełniących rolę masek wektorowych oznaczonych literą k (Rysunek 1), które wykorzystywane są między innymi do zabezpieczania elementów wektora przed modyfikacją w trakcie wykonywania operacji oraz kontrolowania jego długości. Jednostka wektorowa posiada również jednostkę EMU (Extended Math Unit), która oferuje wsparcie dla operacji transcendentalnych typu pierwiastek kwadratowy czy logarytm dla elementów pojedynczej precyzji.

Koprocesory Intel Xeon Phi wspierają dedykowany zestaw instrukcji o nazwie Intel IMCI (Initial Many Core Instruction) przy jednoczesnym braku wsparcia dla instrukcji wektorowych wykorzystywanych w procesorach ogólnego przeznaczenia – SSE (Streaming SIMD Extension) oraz AVX (Advanced Vector Extension). Koprocesory zapewniają wsparcie sprzętowe dla instrukcji FMA (Fused Multiply-Add), która umożliwia wykonania instrukcji mnożenia połączonego z dodawaniem.


Rejestry.png
Rysunek 1. Zestaw rejestrów jednostki wektorowej w architekturze Intel MIC


VPU komunikuje się z rdzeniem i wykonuje instrukcje wektorowe pobrane z jednostki arytmetyczno logicznej, a dane niezbędnie do ich wykonania pobiera z pamięci L1 cache przy pomocy dedykowanej 512-bitowej magistrali. Jednostka wektorowa posiada własną logikę zależności a komunikacja z rdzeniem odbywa się jedynie w razie potrzeby. Jednostka wektorowa wykonuje operacje odczytu/zapisu jednego wektora z/do bloku rejestrów lub pamięci cache w czasie jednego cyklu zegara. Dodatkowo jest w stanie wykonać jedną operację ładowania oraz jedną operacje arytmetyczną w tym samym cyklu. Instrukcje VPU posiadają trzy operandy – dwa źródła oraz jeden cel. Rozwiązanie to zapewnia blisko 20 procentowy wzrost wydajności obliczeń w odniesieniu do tradycyjnych instrukcji SIMD, które posiadają dwa operandy. Instrukcje VPU nie mogą generować wyjątków, jednakże mogą one ustawiać flagi VXCSR wskazujące na wystąpienie sytuacji wyjątkowych np.: przepełnienia. Jednostka wektorowa umożliwia wykonywanie operacji przy użyciu następujących typów danych:

  • Wektora 32-bitowych liczb całkowitych (16 elementów),
  • Wektora 32-bitywych liczb zmiennoprzecinkowych pojedynczej precyzji (16 elementów),
  • Wektora 64-bitowych liczb zmiennoprzecinkowych podwójnej precyzji (8 elementów).



< Architektura Intel MIC - Topologia rdzenia

Architektura Intel MIC - Struktura pamięci podręcznej >