Dlaczego więcej tranzystorów = więcej mocy obliczeniowej?

43

Według Wikipedii moc obliczeniowa jest silnie związana z prawem Moore'a:

http://en.wikipedia.org/wiki/Moore's_law

Liczba tranzystorów, które można niedrogo umieścić w układzie scalonym, podwoiła się co około dwa lata. Trend utrzymuje się od ponad pół wieku i oczekuje się, że ustanie dopiero w 2015 r. Lub później. Możliwości wielu cyfrowych urządzeń elektronicznych są ściśle powiązane z prawem Moore'a: szybkość przetwarzania, pojemność pamięci, czujniki, a nawet liczba i rozmiar pikseli w aparatach cyfrowych. Wszystkie one również ulegają poprawie przy (z grubsza) wskaźnikach wykładniczych.

Jako ktoś, kto ma pewne doświadczenie w architekturze komputerowej, nie rozumiem, dlaczego wrzucenie większej liczby tranzystorów do procesora zwiększyłoby jego moc, ponieważ ostatecznie instrukcje są z grubsza odczytywane / wykonywane sekwencyjnie. Czy ktoś mógłby wyjaśnić, której części brakuje?

Oli
źródło
10
Więcej tranzystorów = więcej równoległości
Toby Jaffey
2
To prawda bez względu na liczbę rdzeni procesora.
Thomas O
1
Tak. Więcej tranzystorów oznacza, że ​​możesz zainstalować więcej równoległych jednostek wykonawczych. Większa pamięć podręczna. Głębsze rurociągi.
Kaz
1
Pamięć podręczna jest duża. Myślę, że odsetek nieruchomości krzemowych przeznaczonych na pamięć podręczną rośnie. Większość wydajności współczesnych procesorów można przypisać buforowaniu, a buforowanie działa tylko wtedy, gdy istnieje lokalizacja, ale im większe pamięci podręczne, tym bardziej wymagane jest położenie (większe aplikacje z bardziej zwariowanymi wzorcami dostępu do pamięci są nadal przyspieszane).
Kaz
2
Pomyśl tylko o mnożniku. Przy wystarczającej liczbie tranzystorów możesz użyć pełnej tabeli odnośników i wykonać całe zwielokrotnienie w jednym kroku. Mając mniej tranzystorów, musisz robić rzeczy takie jak wielokrotne dodawanie.
David Schwartz,

Odpowiedzi:

29

Wiele rzeczy, które dają ci więcej mocy, po prostu wymaga więcej tranzystorów, aby je zbudować. Szersze magistrale skalują liczbę tranzystorów w prawie wszystkich komponentach procesora. Szybkie pamięci podręczne dodają tranzystory zgodnie z rozmiarem pamięci podręcznej. Jeśli wydłużysz rurociąg, musisz dodać etapy i bardziej złożone jednostki sterujące. Jeśli dodasz jednostki wykonawcze, aby złagodzić wąskie gardło w potoku, każdy z nich wymaga więcej tranzystorów, a następnie elementy sterujące utrzymujące przydzielone jednostki wykonawcze dodają jeszcze więcej tranzystorów.

Chodzi o to, że w obwodzie elektronicznym wszystko dzieje się równolegle. W świecie oprogramowania domyślnie są sekwencyjne, a projektanci dokładają wszelkich starań, aby wbudować w oprogramowanie równoległość, aby mogła ona korzystać z równoległego charakteru sprzętu. Równoległość oznacza po prostu więcej rzeczy dzieje się w tym samym czasie, więc z grubsza oznacza prędkość; im więcej rzeczy można zrobić równolegle, tym szybciej można to zrobić. Jedynym prawdziwym paralelizmem jest to, co masz, gdy masz więcej tranzystorów w pracy.

JustJeff
źródło
19

Pierwsze instrukcje niekoniecznie są „wykonywane sekwencyjnie”, nawet na ISA innym niż VLIW, wykonanie musi wyglądać tylko sekwencyjnie. W superskalarnej implementacji w kolejności można wykonać więcej niż jedną instrukcję równolegle z inną. Aby to zrobić skutecznie, należy zwiększyć (rozszerzyć) sprzęt do instrukcji dekodowania, dodać sprzęt, aby zapewnić niezależność danych od instrukcji wykonywanych równolegle, zwiększyć zasoby wykonawcze i ogólnie zwiększyć liczbę portów plików rejestrów. Wszystkie te dodają tranzystory.

Implementacja poza kolejnością, która pozwala na wykonanie późniejszych instrukcji wcześniejszych, o ile nie ma zależności danych, wykorzystuje dodatkowy sprzęt do obsługi planowania instrukcji, gdy tylko dane staną się dostępne, oraz dodaje rejestry zmiany nazw i sprzęt do mapowania, przydzielanie i zwalnianie ich (więcej tranzystorów), aby uniknąć zagrożeń zapisu po zapisie i zapisu po zapisie. Wykonywanie poza kolejnością pozwala procesorowi uniknąć przeciągnięcia.

Zmiana kolejności obciążeń i zapisów w procesorze poza kolejnością wymaga upewnienia się, że zapisy wcześniej w kolejności programowej będą przekazywać wyniki do późniejszych ładunków o tym samym adresie. To implikuje logikę porównywania adresów, a także przechowywanie adresów (i rozmiarów) sklepów (i przechowywania danych), dopóki sklep nie zostanie przydzielony do pamięci (pamięci podręcznej). (W przypadku modelu ISA o mniej słabym modelu spójności pamięci należy również sprawdzić, czy obciążenia są odpowiednio uporządkowane względem zapasów z innych procesorów - więcej tranzystorów.)

Przetwarzanie potokowe dodaje pewne dodatkowe koszty sterowania i buforowania i zapobiega ponownemu wykorzystaniu logiki do różnych części obsługi instrukcji, ale pozwala, aby różne części obsługi instrukcji nakładały się w czasie dla różnych instrukcji.

Rurociągi i wykonywanie superskalarne zwiększają wpływ zagrożeń związanych z kontrolą (tj. Warunkowe rozgałęzienia i skoki). Przetwarzanie potokowe (a także wykonywanie poza kolejnością) może opóźnić dostępność celu nawet bezwarunkowych skoków, więc dodanie sprzętu do przewidywania celów (i kierunku rozgałęzień warunkowych) pozwala na pobieranie instrukcji, aby kontynuować bez oczekiwania na część wykonawczą procesor, aby udostępnić niezbędne dane. Dokładniejsze predyktory zwykle wymagają więcej tranzystorów.

W przypadku procesora poza kolejnością pożądane może być umożliwienie wykonania ładowania z pamięci przed obliczeniem adresów wszystkich poprzednich sklepów, więc wymagany jest sprzęt do obsługi takich spekulacji, potencjalnie zawierający predyktor.

Pamięci podręczne mogą zmniejszyć opóźnienie i zwiększyć przepustowość dostępu do pamięci, ale dodają tranzystory, aby przechowywać dane i przechowywać tagi (i porównywać tagi z żądanym adresem). Potrzebny jest również dodatkowy sprzęt do wdrożenia zasad wymiany. Wstępne pobieranie sprzętu doda więcej tranzystorów.

Wdrożenie funkcji w sprzęcie zamiast w oprogramowaniu może zwiększyć wydajność (wymagając więcej tranzystorów). Np. Zarządzanie TLB, złożone operacje, takie jak mnożenie lub operacje zmiennoprzecinkowe, operacje specjalistyczne, takie jak liczenie zer wiodących. (Dodanie instrukcji zwiększa również złożoność dekodowania instrukcji i zazwyczaj również złożoność wykonania - np. W celu kontroli, które części sprzętu wykonawczego będą używane).

Operacje SIMD / wektorowe zwiększają ilość pracy wykonanej na instrukcję, ale wymagają więcej miejsca na dane (szersze rejestry) i zwykle wymagają więcej zasobów wykonawczych.

(Wielowątkowość spekulacyjna może również pozwolić wielu procesorom na szybsze wykonanie jednego wątkowego programu. Oczywiście dodanie procesorów do układu zwiększy liczbę tranzystorów.)

Posiadanie większej liczby tranzystorów może również pozwolić architektom komputerów na zapewnienie ISA większej liczby rejestrów widocznych dla oprogramowania, potencjalnie zmniejszając częstotliwość dostępu do pamięci, które zwykle są wolniejsze niż dostęp do rejestru i wymagają pewnego stopnia pośrednictwa (np. Dodając przesunięcie do stosu wskaźnik), który zwiększa opóźnienie.

Integracja - która zwiększa liczbę tranzystorów w układzie, ale nie w systemie - zmniejsza opóźnienia komunikacyjne i zwiększa przepustowość, co oczywiście pozwala na zwiększenie wydajności. (Zmniejsza się również zużycie energii, co może przełożyć się na zwiększenie wydajności).

Nawet na poziomie wykonywania instrukcji dodanie tranzystorów może zwiększyć wydajność. Na przykład sumator wyboru przeniesienia dodaje górne bity dwa razy równolegle z różnymi założeniami przeniesienia z niższych bitów, wybierając prawidłową sumę górnych bitów, gdy dostępne jest przeniesienie z niższych bitów, co oczywiście wymaga większej liczby tranzystorów niż prosty adder carry marszczyć, ale zmniejszając opóźnienie w uzyskaniu pełnej sumy. Podobnie mnożnik z jednym rzędem sumatorów przenoszenia przeniesienia używa mniejszej liczby tranzystorów (ale jest wolniejszy) niż mnożnik drzewa Dadda (lub Wallace'a) i nie można go potokować (więc musiałby zostać zreplikowany, aby umożliwić kolejnemu mnożeniu rozpoczęcie wykonywania wcześniejszego mnożenie było w toku).

Powyższe może być wyczerpujące, ale nie wyczerpujące!

Paul A. Clayton
źródło
2
Doskonała odpowiedź od nowego faceta!
Connor Wolf,
12

Liczba tranzystorów niekoniecznie koreluje z większą mocą obliczeniową, jednak przy większej liczbie tranzystorów procesor może wykonywać coraz bardziej skomplikowane instrukcje niż wcześniej. Na przykład procesor z SSE użyje dodatkowych tranzystorów, aby wdrożyć te złożone instrukcje (na przykład dodając wiele liczb w jednym cyklu).

Thomas O
źródło
2
Alan Kay obliczył, że odkąd pracował nad Smalltalk w Xerox PARC, straciliśmy 18 lat podwojenia tranzystora z powodu złej architektury i nieefektywności oprogramowania, ponieważ komputery z pewnością nie są tak szybkie, jak sugerowałoby to podwojenie tranzystora.
JPC
5

Kolejny czynnik: gdy wpychasz więcej tranzystorów w dany obszar, stają się one mniejsze, co przyspiesza je.

Leon Heller
źródło
Gdy tranzystory stają się coraz bliższe, pojawiają się inne niepożądane efekty, takie jak zwiększony prąd upływowy, więc jest to kompromis między wydajnością a niską mocą - większość producentów wydaje się dążyć do wydajności.
Thomas O
4

Mikroprocesory znacznie się rozwinęły w ostatnich latach, takie jak dłuższe potoki, predykcyjne rozgałęzianie i pamięć podręczna układów scalonych dodatkowo zwiększyły złożoność procesora.

Upewnij się, że podstawy przetwarzania procesora, pobierania, dekodowania, ALU, zapisu są nadal takie same, ale aby przyspieszyć, używane są dłuższe potoki. Dłuższe potoki zwiększają wydajność ciągłego wykonywania kodu, ale także powodują dłuższy czas trafień, gdy rozgałęzienia kodu powodują uszkodzenie wydajności. Rozwiązanie, przewidujące rozgałęzienie. Przewidywanie rozgałęzień jest tajemnicą handlową, w której informacje zwykle nie ujawniają pełnego działania, wystarczy po prostu użyć go, aby utrzymać najwyższą wydajność procesorów.

Pamięć podręczna jest znacznie szybsza niż pamięć RAM, ale co przenieść z pamięci RAM do pamięci podręcznej iz pamięci podręcznej z powrotem do pamięci RAM? To znowu zastrzeżona rzecz, ale znów wymaga tranzystorów do wdrożenia.

Tak więc dodatkowe tranzystory wchodzą w takie elementy, jak dłuższy potok, algorytmy przewidywania gałęzi, pamięć podręczna i algorytmy pamięci.

Nie wspominając o procesorach wielordzeniowych i kontrolerach dostępu do pamięci współdzielonej / zasobów.

smashtastic
źródło