Superskalarność

Konstrukcja superskalarna procesora sprawia, że wewnątrz jednego procesora powstaje forma obliczeń równoległych zwana paralelizmem na poziomie instrukcji, co pozwala na wykonanie większej ilości pracy przy tej samej szybkości zegara. Oznacza to, że CPU wykonuje więcej niż jedną instrukcję podczas cyklu zegara, uruchamiając wiele instrukcji w tym samym czasie (nazywanych wysyłaniem instrukcji) na zduplikowanych jednostkach funkcjonalnych. Każda jednostka funkcjonalna jest tylko zasobem wykonawczym wewnątrz rdzenia jednostki centralnej, jak jednostka arytmetyczno-logiczna (ALU), jednostka zmiennoprzecinkowa (FPU), nieco przesuwacz lub mnożnik.

Większość superskalarnych procesorów jest również przesyłana w trybie potokowym, ale możliwe jest posiadanie nie przesyłanego w trybie potokowym superskalarnego CPU lub przesyłanego nie przesyłanego w trybie potokowym superkalarnego CPU.

Technika superscalarna jest wspierana przez kilka funkcji rdzenia procesora:

  1. Instrukcje pochodzą z zamówionej listy instrukcji.
  2. Sprzęt procesora może określić, które instrukcje mają jakieś zależności od danych.
  3. Potrafi odczytać wiele instrukcji w jednym cyklu zegara

Każda instrukcja uruchomiona przez procesor skalarny zmienia jeden lub dwa elementy danych na raz, ale każda instrukcja wykonana przez procesor wektorowy obsługuje wiele elementów danych na raz. Procesor superskalarny jest połączeniem tych dwóch elementów:

  1. Każda instrukcja przetwarza jedną pozycję danych.
  2. Wewnątrz każdego rdzenia procesora znajduje się wiele zduplikowanych jednostek funkcjonalnych, dzięki czemu wiele instrukcji obsługuje jednocześnie niezależne elementy danych.

W superskalarnym CPU dyspozytor instrukcji odczytuje instrukcje z pamięci i decyduje, które z nich mogą być uruchamiane równolegle, wysyłając je na wiele zduplikowanych jednostek funkcjonalnych dostępnych wewnątrz jednostki centralnej.

Konstrukcja procesora Superscalar ma na celu zwiększenie dokładności dyspozytora instrukcji i umożliwienie mu utrzymywania wielu jednostek funkcjonalnych w ciągłym ruchu. Od 2008 roku wszystkie jednostki centralne ogólnego przeznaczenia są superskalarne, typowy superkomputer może zawierać do 4 jednostek ALU, 2 FPU i dwie jednostki SIMD. Jeśli dyspozytor nie będzie w stanie zająć wszystkich jednostek, wydajność procesora będzie niższa.

Prosty rurociąg superskalarny. Poprzez pobranie i wysłanie dwóch instrukcji na raz, można wykonać maksymalnie dwie instrukcje na cykl.Zoom
Prosty rurociąg superskalarny. Poprzez pobranie i wysłanie dwóch instrukcji na raz, można wykonać maksymalnie dwie instrukcje na cykl.

Płyta procesora komputera równoległego CRAY T3e z czterema superskalarnymi procesorami AlphaZoom
Płyta procesora komputera równoległego CRAY T3e z czterema superskalarnymi procesorami Alpha

Ograniczenia

Poprawa wydajności w konstrukcji procesora Superscalar jest ograniczona przez dwie rzeczy:

  1. Poziom wbudowanej równoległości w liście instrukcji
  2. Złożoność i koszt czasu pracy dyspozytora oraz sprawdzenie zależności od danych.

Nawet biorąc pod uwagę nieskończenie szybkie sprawdzanie zależności wewnątrz normalnego superskalarnego procesora, jeśli sama lista instrukcji posiada wiele zależności, ograniczyłoby to również możliwą poprawę wydajności, a więc ilość wbudowanego paralelizmu w kodzie jest kolejnym ograniczeniem.

Bez względu na to, jak szybka jest prędkość dyspozytora, istnieje praktyczne ograniczenie dotyczące liczby instrukcji, które mogą być wysyłane jednocześnie. O ile postęp sprzętowy pozwoli na większą liczbę jednostek funkcjonalnych (np. ALU) na rdzeń procesora, o tyle problem sprawdzania zależności od instrukcji zwiększa się do limitu, że osiągalny superskalarny limit wysyłania jest nieco mniejszy. -- Prawdopodobnie w kolejności od pięciu do sześciu jednocześnie wysyłanych instrukcji.

Alternatywy

  • Jednoczesna wielowątkowość: często w skrócie SMT, jest techniką poprawy ogólnej szybkości procesorów superskalarnych. SMT umożliwia wykonywanie wielu niezależnych wątków w celu lepszego wykorzystania zasobów dostępnych wewnątrz nowoczesnego procesora superscalarnego.
  • Procesory wielordzeniowe: procesory superskalarne różnią się od procesorów wielordzeniowych tym, że wiele nadmiarowych jednostek funkcjonalnych to nie całe procesory. Pojedynczy procesor superskalarny składa się z zaawansowanych jednostek funkcjonalnych, takich jak ALU, mnożnik liczb całkowitych, przesunięcie liczb całkowitych, jednostka zmiennoprzecinkowa (FPU), itp. Każda jednostka funkcjonalna może mieć wiele wersji, co umożliwia równoległe wykonywanie wielu instrukcji. Różni się to od procesorów wielordzeniowych, które jednocześnie przetwarzają instrukcje z wielu wątków, po jednym wątku na rdzeń.
  • Procesory potokowe: procesory superskalarne również różnią się od procesorów potokowych, gdzie wiele instrukcji może być jednocześnie na różnych etapach wykonywania.

Różne alternatywne techniki nie wykluczają się wzajemnie - mogą być (i często są) połączone w jednym procesorze, więc możliwe jest zaprojektowanie wielordzeniowego procesora, gdzie każdy rdzeń jest niezależnym procesorem z wieloma równoległymi potokami superskalarnymi. Niektóre procesory wielordzeniowe mają również zdolność wektorową.

Powiązane strony

Pytania i odpowiedzi

P: Co to jest technologia superskalarna?


O: Technologia superskalarna jest formą podstawowego przetwarzania równoległego, która pozwala na przetwarzanie więcej niż jednej instrukcji w każdym cyklu zegara poprzez jednoczesne wykorzystanie wielu jednostek wykonawczych.

P: Jak działa technologia superskalarna?


O: Technologia superskalarna polega na tym, że instrukcje przychodzą do procesora w kolejności, podczas pracy procesora szuka się zależności między danymi i w każdym cyklu zegara ładuje się więcej niż jedną instrukcję.

P: Jaka jest różnica między procesorami skalarnymi a wektorowymi?


O: W procesorze skalarnym instrukcje zazwyczaj pracują z jednym lub dwoma elementami danych jednocześnie, natomiast w procesorze wektorowym instrukcje zazwyczaj pracują z wieloma elementami danych jednocześnie. Procesor superskalarny jest mieszanką obu tych rozwiązań, ponieważ każda instrukcja przetwarza jedną pozycję danych, ale więcej niż jedna instrukcja działa jednocześnie, więc procesor obsługuje wiele pozycji danych jednocześnie.

P: Jaką rolę odgrywa dokładny dyspozytor instrukcji w procesorze superskalarnym?


O: Dokładny dyspozytor instrukcji jest bardzo ważny dla procesora superskalarnego, ponieważ zapewnia, że jednostki wykonawcze są zawsze zajęte pracą, która prawdopodobnie będzie potrzebna. Jeżeli dyspozytor instrukcji nie jest dokładny, to część pracy może zostać odrzucona, co sprawi, że procesor nie będzie szybszy niż procesor skalarny.

P: W którym roku wszystkie normalne procesory stały się superskalarne?


O: Wszystkie normalne procesory stały się superskalarne w 2008 roku.

P: Ile jednostek ALU, FPU i SIMD może być w normalnym procesorze?


O: W normalnym procesorze może być do 4 jednostek ALU, 2 jednostki FPU i 2 jednostki SIMD.

AlegsaOnline.com - 2020 / 2023 - License CC3