Prawie wszystkie postępy w szybkości komputera pochodzą z jednego z następujących obszarów:
Mniejsze tranzystory
Dwie rzeczy wynikają z zmniejszenia tranzystorów:
- Są one fizycznie bliżej siebie, więc czas potrzebny na przebycie sygnału elektrycznego ze źródła do miejsca przeznaczenia jest krótszy. Więc chociaż sygnały elektryczne nie przemieszczają się szybciej niż 50 lat temu, często teraz podróżują na krótsze odległości .
- Więcej tranzystorów może być zawartych w układzie, co oznacza, że więcej „pracy” można wykonać jednocześnie. Im więcej tranzystorów zostanie dodanych, tym trudniej jest znaleźć dla nich przydatną pracę, ale stosuje się wiele sprytnych sztuczek (patrz poniżej).
Więcej „użytecznej pracy” na instrukcję
Na przykład niektórym procesorom brakuje instrukcji mnożenia lub dzielenia liczb całkowitych; zamiast tego to zadanie należy wykonać przy użyciu powolnych procedur oprogramowania. Dodawanie instrukcji mnożenia i dzielenia znacznie przyspiesza. Dodanie instrukcji zmiennoprzecinkowych może przyspieszyć oprogramowanie wymagające liczb zmiennoprzecinkowych.
Ważnym sposobem wykonywania bardziej „użytecznej pracy” na instrukcję jest zwiększenie rozmiaru słowa . Procesory, które mogą wykonywać operacje na liczbach 32-bitowych, często wymagają znacznie mniej instrukcji, aby wykonać to samo zadanie, co 16-bitowe lub 8-bitowe procesory.
Niektóre procesory obsługują instrukcje, które wykonują kilka czynności jednocześnie, w szczególności instrukcje, które wykonują tę samą operację na wielu elementach danych ( SIMD ).
Więcej instrukcji na cykl
„Cykl zegarowy” to sposób, w jaki procesor przechodzi z obecnego stanu do następnego. W pewnym sensie jest to najmniejsza jednostka pracy, jaką procesor może wykonać jednocześnie. Jednak liczba cykli zegara wykonywanych przez poszczególne instrukcje zależy od konstrukcji procesora.
Wraz z pojawieniem się procesorów potokowych stało się możliwe, że oddzielne instrukcje „nakładają się”, tzn. Zaczynałyby się przed zakończeniem poprzedniego. Jednak niektóre instrukcje mogą unieważnić następną instrukcję, która nie będzie znana, dopóki następna instrukcja nie zostanie częściowo wykonana, więc sprawy mogą się skomplikować. (Procesory potokowe zawierają logikę, aby upewnić się, że wszystko działa poprawnie, ale charakterystyka wydajności jest bardziej złożona).
Procesory superskalarne przenoszą to na wyższy poziom, dosłownie pozwalając na wykonanie dwóch instrukcji jednocześnie, a wykonywanie poza kolejnością idzie o krok dalej, umożliwiając wykonywanie instrukcji poza kolejnością. Te funkcje wymagają analizy strumienia instrukcji, aby dowiedzieć się, które instrukcje nie kolidują ze sobą.
Chociaż istnieją inne takie sztuczki (np. Przewidywanie gałęzi , wykonywanie spekulacyjne ), ważniejszy jest ogólny obraz:
- każda instrukcja wymaga określonej liczby cykli zegara (niekoniecznie stała)
- ale wiele instrukcji może być w toku jednocześnie
- dlatego istnieje mierzalne „ instrukcje na cykl ”, które wynoszą> 1 dla wysokiej klasy procesorów
- ale zależy to bardzo mocno od obciążenia pracą
Więcej cykli na sekundę
Innymi słowy, wyższa częstotliwość zegara . Zwiększenie prędkości zegara nie tylko zwiększa wytwarzane ciepło, ale także wymaga znacznie bardziej zdyscyplinowanej konstrukcji chipów, ponieważ istnieje mniejszy limit czasu na stabilizację obwodu. Dzięki temu udało nam się pokonać wiele kilometrów do 2000 roku, kiedy osiągnęliśmy praktyczne ograniczenia.
Dane we właściwym miejscu we właściwym czasie
Chociaż komponenty w procesorze zbliżają się coraz bliżej ze względu na kurczące się tranzystory, procesor i pamięć RAM są nadal w odległości 5-10 cm. Jeśli instrukcja potrzebuje czegoś z pamięci RAM, wykonanie tej instrukcji nie zajmie 5 lub 6 cykli, zajmie to około 200. Jest to problem wąskiego gardła von Neumanna .
Naszą główną bronią przeciwko temu jest pamięć podręczna . Dane, do których ostatnio uzyskiwano dostęp, są częściej dostępne, dlatego są przechowywane w specjalnej pamięci (zwanej cache), która znajduje się w układzie procesora, co znacznie przyspiesza dostęp.
Jednak inne techniki (takie jak potokowanie i przewidywanie rozgałęzień ) pomagają, umożliwiając procesorowi wykonanie użytecznej pracy podczas oczekiwania na dane, a także przewidywanie, które dane mogą być wkrótce potrzebne.
Wiele i / lub wyspecjalizowane procesory
O wiele łatwiej jest pisać oprogramowanie dla jednego procesora niż dla wielu procesorów. Czasami jednak korzyści wynikające z wydajności / kosztów / zużycia energii są tego warte.
Ponadto niektóre procesory są szczególnie dobrze dostosowane do niektórych zadań. Na przykład procesory graficzne są specjalnie zaprojektowane do obliczeń wymaganych do renderowania grafiki i efektów 2D i 3D.
Procesory wielordzeniowe to zasadniczo wiele procesorów w jednym układzie.