Niemal każde polecenie wykonywane przez komputer przechodzi przez jeden komponent: procesor, czyli CPU. Odpowiada on za obliczenia, podejmowanie decyzji i przenoszenie danych, często w miliardowych częściach sekundy. Większość użytkowników nigdy go nie widzi, a mimo to jego wydajność decyduje o tym, jak działa urządzenie. Mechanizmy stojące za tą szybkością są bardziej złożone, niż się wydaje. To, co dzieje się krok po kroku wewnątrz układu, wyjaśnia, dlaczego dwa procesory o podobnych specyfikacjach mogą działać bardzo różnie.

Czym właściwie jest procesor (CPU)?

Podstawy jednostki centralnej opisane

Centralna jednostka przetwarzania, czyli CPU, to komponent komputera, który wykonuje instrukcje pochodzące z oprogramowania. Często nazywany mózgiem komputera, procesor wykonuje podstawowe operacje, takie jak arytmetyka, logika, sterowanie oraz zadania wejścia/wyjścia. Każdy program, od przeglądarki internetowej po system operacyjny, ostatecznie sprowadza się do sekwencji tych prostych działań. CPU realizuje cykl znany jako pobierz, dekoduj i wykonaj. Najpierw pobiera instrukcję z pamięci; następnie interpretuje, czego ta instrukcja wymaga; wreszcie wykonuje operację i zapisuje wynik.

Ten cykl powtarza się miliardy razy na sekundę we współczesnych procesorach, mierzonych w gigahercach. Każde powtórzenie jest regulowane przez sygnał zegarowy, który synchronizuje podzespoły. Sama częstotliwość taktowania nie determinuje ogólnej wydajności.

Co tak naprawdę robi procesor przez cały dzień?

Dokąd tak naprawdę idzie czas procesora? Znaczna jego część jest zużywana na przenoszenie danych, a nie na obliczenia. Każdy program to strumień instrukcji, a procesor CPU powtarza stały cykl dla każdej z nich: pobranie instrukcji z pamięci, zdekodowanie, co ona oznacza, wykonanie jej i zapisanie wyniku. Miliardy takich cykli wykonują się każdej sekundy, a większość z nich jest na tyle szybka, że pozostaje niezauważona.

Znaczna część tego czasu przepada na oczekiwanie. Pamięć jest znacznie wolniejsza od procesora, dlatego małe, szybkie pamięci podręczne przechowują dane, których CPU potrzebuje w następnej kolejności. Gdy brakuje jakiejś wartości, rdzeń wstrzymuje pracę, dopóki jej nie otrzyma. Rozgałęzienia powodują dalsze opóźnienia, ponieważ procesor musi zgadywać, którą ścieżką pójdzie program. Nowoczesne architektury ograniczają wstrzymywanie pracy, ale nigdy nie eliminują go całkowicie.

Rdzenie, pamięć podręczna i częstotliwość taktowania – wyjaśnienie

prędkości zegara pamięci podręcznej procesora czterordzeniowego

Wąskie gardła i bezczynne cykle ograniczają tempo pracy pojedynczego procesora, dlatego producenci dodali równoległy sprzęt i dopracowali trzy kluczowe parametry: liczbę rdzeni, rozmiar pamięci podręcznej oraz taktowanie zegara. Rdzenie to niezależne jednostki przetwarzające na jednym układzie, z których każda może wykonywać własny strumień instrukcji. Czterordzeniowy procesor może zatem uruchamiać cztery wątki jednocześnie, choć oprogramowanie musi być napisane tak, aby je wykorzystać.

Pamięć podręczna (cache) to niewielka, szybka pamięć umieszczona blisko rdzeni. Przechowuje ostatnio używane dane, zmniejszając liczbę odwołań do wolniejszej pamięci głównej. Nowoczesne układy zazwyczaj wykorzystują trzy poziomy pamięci podręcznej, przy czym L1 jest najmniejsza i najszybsza.

Taktowanie zegara, mierzone w gigahercach, określa liczbę cykli na sekundę. Każdy cykl przesuwa procesor o jeden krok, więc wyższe wartości oznaczają szybsze wykonywanie, chociaż wzrost wydajności ograniczają ciepło i pobór mocy.

Jak procesor przetwarza każdą instrukcję?

Jak procesor zamienia linię kodu maszynowego w wynik? Każda instrukcja przechodzi przez stałą sekwencję etapów zwaną cyklem instrukcji. Najpierw etap pobierania (ang. *fetch*) pobiera instrukcję z pamięci, używając adresu przechowywanego w liczniku rozkazów. Następnie etap dekodowania tłumaczy wzorzec binarny na sygnały sterujące, które określają operację i jej argumenty. Etap wykonania wykonuje właściwą pracę, zazwyczaj w jednostce arytmetyczno-logicznej (ALU). Na koniec etap zapisu wyniku zapisuje rezultat w rejestrze lub w pamięci, a licznik rozkazów przesuwa się do następnej instrukcji. Nowoczesne procesory nakładają na siebie te etapy dzięki potokowaniu (ang. *pipelining*), więc kilka instrukcji znajduje się jednocześnie na różnych etapach. Każdym cyklem steruje zegar, który określa, jak szybko każdy etap może się zakończyć.

Czy szybszy procesor naprawdę poprawia wydajność?

Prędkość zegara to nie wszystko, liczy się architektura

Zegar wyznacza tempo, w jakim kończy się każdy etap cyklu rozkazowego, co prowadzi do powszechnego założenia: wyższa częstotliwość zegara oznacza proporcjonalnie szybszy procesor.

W praktyce częstotliwość zegara jest tylko jednym z czynników. Wydajność zależy od tego, ile rozkazów zostaje ukończonych w jednym cyklu, jak efektywnie potok jest wypełniony oraz jak szybko dane docierają z pamięci. Procesor pracujący z wyższą częstotliwością może nadal się zatrzymywać, czekając na pamięć podręczną lub RAM, przez co dodatkowe cykle pozostają niewykorzystane. Ulepszenia architektury, takie jak szersze jednostki wykonawcze czy lepsze przewidywanie skoków, mogą przewyższyć proste zwiększenie częstotliwości. Ciepło stanowi kolejne ograniczenie, ponieważ wyższe taktowanie zwiększa zużycie energii i może wymusić throttling przy długotrwałym obciążeniu. Dlatego częstotliwość zegara ma największe znaczenie w obciążeniach ograniczonych przez moc obliczeniową, takich jak kodowanie wideo.

Wróć do indeksu A-Z