Czy jedynym celem tranzystorów w CPU jest działanie przełączników, które definiują jego zestaw instrukcji? A jeśli tak, to dlaczego zwiększenie liczby tranzystorów zwiększa prędkość?
cpu
computer-architecture
Tyler
źródło
źródło
Odpowiedzi:
Z czubka mojej głowy:
Więcej pamięci podręcznej , która jest szybsza niż pamięć RAM
Więcej instrukcji SIMD , które przetwarzają się szybciej niż instrukcje z pojedynczymi danymi
Więcej rdzeni , dzięki czemu możesz robić dwie lub więcej rzeczy jednocześnie
Jednostki bardziej funkcjonalne, takie jak wbudowany w FPU s, a wielokrotność ALU s
Rurociągi , dzięki czemu każdy rdzeń może robić więcej rzeczy naraz
Lepsza logika przetwarzania, jak bardziej wyrafinowana logika przewidywania gałęzi
źródło
Jeśli jesteś ciekawy tego typu rzeczy, gorąco polecam książkę The Elements of Computing Noama Nisana i Shimona Schockena (przynajmniej pierwsza połowa). Po przejściu przez nie będziesz w stanie szczegółowo odpowiedzieć na swoje pytanie z pełnym uznaniem za zaangażowane części.
Witryna towarzysząca zawiera kilka przykładowych rozdziałów i notatek. To bardzo przystępna książka. Bez problemu przejrzałem go samodzielnie, a potem wziąłem zupełnie nową klasę na moim uniwersytecie, która używała go jako tekstu podstawowego.
źródło
Odpowiedź jest prosta, że więcej tranzystorów nie robi reszta iść szybciej , ale zamiast robić jedną rzecz za okres czasu, możemy teraz zrobić dwa (z pewnymi ograniczeniami).
źródło
Ken streścił już niektóre powody swojej odpowiedzi . Aby rozwinąć to dalej
Oczywiście większe pamięci podręczne potrzebują więcej tranzystorów. Ale przy większej liczbie tranzystorów mamy również możliwość użycia szybszych pamięci podręcznych . Pamięć podręczna procesora to po prostu SRAM, która zazwyczaj składa się z 6 tranzystorów (AKA 6T SRAM). Jednak gdy jest wystarczająca liczba tranzystorów, warto użyć szybszych, ale większych komórek SRAM wykonanych z więcej niż 6 tranzystorów (takich jak 8T, 10T SRAM)
Nie tylko SIMD, ale wszelkiego rodzaju instrukcje przyspieszające. Na przykład współczesne architektury często mają jednostkę AES dla szybszego szyfrowania / deszyfrowania, FMA dla lepszego obliczeń matematycznych (zwłaszcza cyfrowego przetwarzania sygnałów) lub wirtualizację dla szybszych maszyn wirtualnych. Obsługa większej liczby instrukcji oznacza, że do ich odkodowania i wykonania potrzeba więcej zasobów
Te są całkiem jasne
W przeszłości nie było wystarczającej powierzchni matrycy dla FPU, więc ludzie muszą kupić osobny, jeśli mają wysokie wymagania arytmetyki zmiennoprzecinkowej. Przy znacznie większej liczbie tranzystorów możliwe jest wbudowanie FPU, co znacznie przyspiesza matematykę zmiennoprzecinkową
Poza tym współczesne procesory są superskalarne i będą próbowały robić wiele rzeczy naraz , znajdując niezależne elementy danych i obliczając je wcześniej, mimo że strumień instrukcji jest liniowy i szeregowy. Im więcej rzeczy mogą robić równolegle, tym szybciej będą. Aby to zrobić, procesor może mieć wiele jednostek ALU, a jednostka ALU może mieć wiele jednostek wykonawczych. Jeśli na przykład procesor ma 5 sumatorów w porównaniu do 4 w poprzedniej generacji, to działa już o 25% szybciej w najbardziej optymistycznej sytuacji bez żadnych zmian zegara. Bardziej zaawansowane procesory wykorzystują nawet wykonywanie zadań poza kolejnością (co ma miejsce w przypadku większości nowoczesnych procesorów o wysokiej wydajności)
Operacje można zazwyczaj wykonywać na różne sposoby. Jeśli masz więcej tranzystorów, będziesz mieć więcej zasobów, aby użyć szybszej techniki. Kilka prostych przykładów:
Przesunięcie bitów:
Prosta manetka jest przez podłączenie szeregowo przerzutników razem.
To wymaga tylko jednego przerzutnika na bit, a zatem niezwykle kompaktowego. Ale potrzebuje jednego zegara, aby przesunąć bit w lewo lub w prawo. Dlatego mikrokontrolery i małe wbudowane procesory mają tylko instrukcje, aby przesuwać się o jeden. Widzieć
Gdy masz więcej tranzystorów do wydania, możesz zmienić na lufę . Teraz procesor może przesuwać bity w jednym zegarze kosztem setek lub tysięcy tranzystorów
Dodanie:
To samo dotyczy innych jednostek, takich jak mnożniki, dzielniki, harmonogram ... Na przykład możemy wykonać mnożenie bardzo szybko w jednym zegarze, używając logiki kombinacyjnej . Możesz zobaczyć kilka prostych przykładów w pytającym mnożniku 3-bitowym - jak one działają? . Ale potrzebne tranzystory wzrosną do kwadratu szerokości wejściowych, dlatego małe procesory z multiplikatorem używają logiki sekwencyjnej, aby zaoszczędzić dużo miejsca na multiplikator:
Gdy masz już ogromną pulę tranzystorów, możesz nawet użyć logiki kombinacyjnej, aby wykonać FMA, która wymaga znacznie więcej zasobów niż mnożnik
źródło
Zwiększenie liczby tranzystorów odbywa się zwykle poprzez zmniejszenie ich, co czyni je bliżej siebie, co skraca czas propagacji sygnału.
źródło