Skocz do: nawigacji, wyszukiwania

MICLAB:Ogolna charakterystyka koprocesora Intel Xeon Phi


Architektura akceleratorów obliczeniowych firmy Intel

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



Ogólna charakterystyka koprocesorów Intel Xeon Phi


Koprocesory Intel Xeon Phi (Rysunek 1) są reprezentantami architektury Intel MIC , obecnie bazującej na układzie Knights Corner. Koprocesory firmy Intel są dodatkowymi urządzeniami obliczeniowymi podłączonymi do platformy obliczeniowej przy pomocy magistrali PCIe. Nowe urządzania obliczeniowe współdziałając z procesorami ogólnego przeznaczenia znacznie zwiększają wydajność platformy. Jednkże akceleratory Intel Xeon Phi bazujące na układzie Knights Corner nie mogą być użyte jako samodzielne jednostki obliczeniowe - wymagają one zastosowania procesora ogólnego przeznaczenia .

Koprocesor Intel Xeon Phi
Rysunek 1. Koprocesor Intel Xeon Phi


Koprocesory wykonane zostały w technologii tranzystorów 3-D Tri-Gate firmy Intel w procesie 22 nm. Obsługują więcej rdzeni i wątków oraz pojemniejsze wektorowe jednostki wykonawcze niż procesory Intel Xeon, jednakże charakteryzują się niższą częstotliwością taktowania . Wysoki stopień przetwarzania równoległego, mimo obniżenia prędkości każdego rdzenia, zwiększa łączną wydajność zadań obliczeniowych w procesie przetwarzania równoległego dużej skali.


Koprocesory Intel Xeon Phi znalazły swoje odbicie w pierwszej dziesiątce najlepszych superkomputerów z listy TOP 500. Są one wykorzystywane w platformach zajmujących 1 oraz 7 pozycje na liście opublikowanej w Październiku 2014 roku.


W skład głównych komponentów koprocesora wchodzą rdzenie, pamięć podręczna, kontrolery pamięci, własna pamięć główna, moduł PCIe client logic, oraz dwu kierunkowa magistrala, która łączy se sobą wymienione elementy (Rysunek 2) . Koprocesory firmy Intel posiadają jednostkę obliczeniową obsługującą, w zależności od modelu karty od 57 do 61 rdzeni taktowanych częstotliwością w zakresie od 1,056 GHz do 1,238 GHz. Każdy rdzeń charakteryzuje się wykonywaniem instrukcji w kolejności ich zdefiniowania (in-order execution) oraz możliwością dwu-potokowego przetwarzania instrukcji. Wszystkie rdzenie bazują na zmodyfikowanej konstrukcji układu Intel P54C, którą stosowano pierwotnie w procesorach Intel Pentium. Pojedynczy rdzeń pozwala na uruchomienie maksymalnie czterech wątków, co dla wybranych modeli pozwala na równoległe przetwarzanie aplikacji przez 244 wątki. Aby wysycić możliwości obliczeniowe architektury Intel MIC należy uruchomić co najmniej dwa wątki na rdzeń. Taka konfiguracja zwiększa intensywność obliczeń poprzez zapewnienie lepszej potokowości wykonywanych instrukcji.

Architektura Intel MIC
Rysunek 2. Architektura Intel MIC


Dodatkową cechą akceleratorów jest sprzętowe wsparcie dla przetwarzania wektorowego . Każdy rdzeń zawiera jednostkę wektorową VPU umożliwiającą przetwarzanie wektorowe, co pozwala na znaczne zwiększenie wydajności całego układu. Zastosowania 512-bitowych wektorów umożliwia w jednym cyklu zegara wykonanie tej samej operacji, przykładowo, dla 8 elementów typu double lub 16 typu float. Koprocesory Intel Xeon Phi wspierają dedykowany zestaw instrukcji Intel IMCI (Initial Many Core Instruction), który pozwala na wykonywanie instrukcji typu SIMD na dwukrotnie większym wektorze, aniżeli w przypadku procesorów CPU wspierających AVX. Koprocesory zapewniają wsparcie sprzętowe dla instrukcji FMA (Fused Multiply-Add), która umożliwia wykonania instrukcji mnożenie połączonego z dodawaniem.


Akceleratory firmy Intel charakteryzuje typowa hierarchia pamięci . Koprocesor posiada w zależności od modelu karty od 6 do 16 GB pamięci głównej GDDR5 (Graphic Double Data Rate v5). Dostęp do pamięci głównej koprocesora realizowany jest poprzez od 6 do 8 kontrolerów pamięci głównej. Każdy kontroler pamięci posiada dwa kanały dostępowe umożliwiające przesłanie 2x8 bajtów, dzięki czemu dostęp do pamięci głównej charakteryzuje przepustowość danych rzędu od 240 GB/s do 352 GB/s.


Każdy rdzeń koprocesora posiada dwupoziomową w pełni współdzieloną pamięć podręczną cache . Rozmiar pamięci poziomu pierwszego (L1) wynosi 64 KB z czego pierwsza połowa przeznaczone jest dla instrukcji programu, natomiast druga dla danych. Czas dostępu do pamięci cache L1 wynosi 1 cykl zegara. Rozmiar pamięci poziomu drugiego (L2) wynosi 512 KB, a czas dostępu wynosi około 11 cykli zegara. W architekturze Intel MIC zrezygnowano z pamięci podręcznej trzeciego poziomu, natomiast współdzielenie pamięci podręcznej jest realizowane poprzez magistralę łączącą wszystkie rdzenie na poziomie pamięci podręcznej L2. W rezultacie tego sumaryczna rozmiar pamięci podręcznej ostatniego poziomu (LLC) jest zależny od liczby rdzeni, gdzie koprocesory zawierające 61 rdzeni charakteryzują się łącznym rozmiarem 30,5 MB LLC, a 57 rdzeniowe 28,0 MB LLC.


Wszystkie elementy koprocesora Intel Xeon Phi łączy dwu kierunkowa magistrala o szerokości 2x512 bitów . Magistrala umożliwia przesyłanie danych pomiędzy pamięciami cache, pamięcią główną oraz urządzeniami zewnętrznymi (np. procesorem) poprzez magistralę PCI, do której podłączona jest karta z koprocesorem (Rysunek 1). Magistrala charakteryzuje budowa pierścieniowa, gdzie w obrębie każdego kierunku wyróżnione są trzy niezależne pierścienie. Pierwszy i zarazem największy nazywany pierścieniem danych wykorzystywany jest do przesyłania danych w postaci 64 bajtowych bloków. Drugi pierścień - adresowy służy do przesyłania poleceń odczytu lub zapisu oraz adresów pamięci. Najmniejszy pierścień wykorzystywany jest do przesyłania komunikatów dotyczących kontroli przepływu oraz spójności. Magistrala pełni ważną rolę w tworzeniu spójności pamięci podręcznej drugiego poziomu. W przypadku kiedy pożądany zestaw danych nie znajduje się w pamięci cache L2 rdzenia, przeszukiwane są pamięci cache L2 pozostałych rdzeni, zanim nastąpi pobranie danych z pamięci głównej. W przypadku kiedy pożądane dane zostaną znalezione w pamięci podręcznej innego rdzenia przesyłane są poprzez magistrale do rdzenia, który je poszukiwał.


Dodatkowo firma Intel udostępnia specjalne API, nazywane Symetric Communications Interface (SCIF), które umożliwia komunikację pomiędzy koprocesorem i procesorem, zwanym również hostem . SCIF wykorzystuje możliwości DMA do przesyłania dużych segmentów danych, dodatkowo umożliwia mapowanie pamięci hosta lub pamięci innego koprocesora. Komunikacja odbywa się na zasadach P2P (peer-to-peer) dzięki czemu możliwy jest transfer danych do innego urządzenia podłączonego do magistrali PCI (np. innego koprocesora lub karty sieciowej) bez udziału procesora CPU. Host wykorzystuje SCIF do stworzenia wirtualnej sieci TCP/IP, która stanowi podstawowy interfejs używany do komunikacji z koprocesorem. Dzięki takiemu rozwiązaniu koprocesor traktowany jest jako samodzielne urządzenie w sieci.


Architektura Intel MIC jest dostarczane w różnych konfiguracjach spełniających potrzeby różnorodnego sprzętu, oprogramowania, obciążeń, wydajności i wymagań w zakresie energooszczędności . Obecna rodzina produktów Intel Xeon Phi może być wykorzystywana w różnorodnych konfiguracjach do przetwarzania równoległego dużej skali. Firma Intel udostępnia trzy grupy produktów bazujących na architekturze Intel MIC: Seria 7100, Seria 5100 oraz Seria 3100. Powyższe serie różnią się liczbą rdzeni, rozmiarem pamięci głównej i podręcznej, przepustowością danych, częstotliwością taktowania czy też zapotrzebowaniem na energię elektryczną. Seria 7100 charakteryzuje się najwyższą wydajnością obliczeń i wielkością pamięci głównej w rodzinie produktów Intel Xeon Phi. Maksymalna wydajność obliczeń w podwójnej precyzji dla Intel Xeon Phi 7120P wynosi 1208,3 Gflop/s, co odpowiada podstawieniu wartości f = 1,238 GHz, N = 61, I = 2 x 8.


Koprocesory Intel Xeon Phi w pełni wspierają tradycyjne modele programowania powszechnie stosowane w procesie tworzenia aplikacji dla procesorów ogólnego przeznaczenia . Akceleratory firmy Intel umożliwiają wykonanie aplikacji napisanych w językach programowania takich jak C, C++ oraz Fortran. Fakt ten stwarza programistom dogodną możliwość opracowywania jednego, wspólnego dla CPU oraz koprocesorów kodu źródłowego przy maksymalizacji wydajności obu architektur. Tworzenie aplikacji możliwe jest przy użyciu bogatego zestawu narzędzi programistycznych wspomagających rozwój programów zarówno dla CPU, jaki koprocesorów. W skład tych narzędzi wchodzą kompilatory, debbugery, biblioteki umożliwiające tworzenie równoległych aplikacji (np. OpenMP, MPI) oraz różnego rodzaju biblioteki matematyczne. Dodatkowo firma Intel dostarcza mnóstwo innych narzędzi pozwalających na tworzenie aplikacji, które w efektywnym stopniu wykorzystują możliwości koprocesora (np. profilery pamięci). W rezultacie tego gwarantowane jest prawidłowe działanie języków, narzędzi i aplikacji na platform opartych na procesorach CPU i koprocesorach Intel Xeon Phi. Realizacja tej gwarancji wymaga głównie zastosowania ponownej kompilacji, opcjonalnej optymalizacji istniejących kodów za pomocą znanych narzędzi, bibliotek i procedur wykonawczych. Dodatkowo, koprocesory Intel Xeon Phi mogą pracować w następujących trybach wykonawczych:

  • Tryb Symetryczny (symetric): przetwarzane zadania są podzielone pomiędzy procesor centralny i koprocesor;
  • Tryb Natywny (native): koprocesor w całości zarządza zadaniami, i w zasadzie działa jak oddzielne węzły obliczeniowe;
  • Tryb Odciążenia (offload): centralny procesor zarządza zadaniami, w razie potrzeby część zadań przejmowana jest przez koprocesor.


  • < Terminologia

    Rodzina koprocesorów Intel Xeon Phi >