artykuły

IBM POWER9 – krótka historia architektury i anatomia najnowszych procesorów serwerowych

53
26 września 2019, 11:09 Mateusz Brzostek

Procesor IBM POWER9

Architektura Power ISA ma dwa najważniejsze atrybuty architektur RISCWięcej informacji: „Czym się różni RISC od CISC?:

  • instrukcje mają stałą długość,
  • instrukcje arytmetyczne mogą operować tylko na rejestrach, a do pobierania i zapisywania danych w pamięci służą osobne instrukcje.

Od tej pierwszej reguły są drobne wyjątki, ale ograniczone do specjalnych procesorów do zastosowań wbudowanych.

Jak powiedzieliśmy już wielokrotnie, choć architektury RISC-opodobne i CISC-opodobne są z punktu widzenia niskopoziomowego programowania znacząco różne, skuteczne techniki budowy szybkich, wydajnych procesorów są bardzo podobne niezależnie od architektury. Podobnie jak w nowoczesnych procesorach x86, najnowszy procesor POWER:

  • może wykonywać instrukcje poza kolejnością
  • śledzi kod z wyprzedzeniem i pobiera dane do pamięci podręcznych, zanim będą potrzebne
  • przed wykonaniem rozdziela wiele instrukcji na mikrooperacje, a inne łączy i wykonuje jednocześnie
  • ma złożony układ przewidywania skoków
  • ma sporą pulę rejestrów, które są przemianowywane i mogą przed różnymi ścieżkami kodu lub wątkami „udawać” różne rejestry architekturalne
  • wykorzystuje technikę SMT – jeden rdzeń może przetwarzać 2, 4 lub 8 wątków 

Rdzenie POWER9 występują w dwóch wersjach: jako jeden rdzeń z SMT8 (8 wątków na rdzeń) lub dwa rdzenie z SMT4 (4 wątki na rdzeń). Oba warianty mają w sumie tyle samo zasobów obliczeniowych,  identyczną topologię i zajmują identyczną powierzchnię. Jądra krzemowe wersji SMT8 i SMT4 nie różnią się od siebie, ale są jednorazowo konfigurowane jako jeden z dwóch wariantów pod koniec produkcji, w trakcie testowania i sortowania.

Są zbudowane z modularnych segmentów, które pozwalają na działanie w obu trybach bez żadnych zmian w topologii:

IFU – pobranie i dekodowanie instrukcji; ISU – wydanie do jednostek wykonawczych; LSU – jednostki operacji na pamięci.

Najważniejsza i najczęściej używana jest wersja SMT4, która ma cztery identyczne grupy jednostek wykonawczych. Jedna taka grupa – VSU (Vector-Scalar Unit) – może wykonać w jednym cyklu zegara maksymalnie jedną operację arytmetyczną oraz jedną operację na pamięci. VSU wykonuje operacje na liczbach całkowitych, rzeczywistych stałoprzecinkowych i zmiennoprzecinkowych, na 64-bitowych wektorach dwóch liczb 32-bitowych oraz operacje zapisujące lub odczytujące dane z pamięci. Dwie VSU mogą wspólnie wykonywać instrukcje na 128-bitowych wektorach. Poza czterema VSU znajdują się jeszcze trzy wyspecjalizowane jednostki wykonawcze: jedna do obliczeń na liczbach zmiennoprzecinkowych w formacie dziesiętnymTo ważne, ponieważ wielu ułamków dziesiętnych nie da się dokładnie przedstawić w formacie binarnym. Ma to znaczenie między innymi w obliczeniach finansowych, w których dane są zwykle przedstawiane w formacie dziesiętnym, obliczenia muszą być bardzo dokładne, a błędy zaokrąglenia – jak najmniejsze. (DFU), jedna do instrukcji warunkowych (BRU) oraz jedna do instrukcji związanych z przyspieszaniem algorytmów SHA i AES.

Diagram poniżej przedstawia schemat blokowy jednego rdzenia POWER9 SMT4.

POWER9 pobiera w jednym cyklu zegara 8 instrukcji z pamięci podręcznej, dekoduje i wydaje do przemianowania rejestrów 6 instrukcji, wykonuje maksymalnie do 8 instrukcji. Instrukcje wektorowe umożliwiają obliczenie FMAC i (opcjonalnie) negację wyniku – „pomnóż A przez B, dodaj lub odejmij C i pomnóż wynik przez -1” – w jednym kroku.

2