Wszystkie zagadnienia: Teoria
podstawowy sprzętprocesorCPUmatura podstawowa z informatyki

Procesor (CPU) – budowa i parametry

Cykl rozkazowy krok po kroku: jednostka sterująca, ALU i rejestry oraz to, co naprawdę dają taktowanie, liczba rdzeni i architektura 64-bitowa.

01

Opis

Procesor wykonuje instrukcje programu – to jednostka, która faktycznie liczy. Składa się z kilku bloków. Jednostka arytmetyczno-logiczna wykonuje działania i porównania. Jednostka sterująca pobiera rozkazy i decyduje, co ma się wydarzyć. Rejestry to maleńkie, najszybsze komórki na dane w bieżącej obróbce.

Praca procesora to powtarzanie tego samego cyklu: pobierz rozkaz, zdekoduj go, wykonaj, zapisz wynik. Cykl powtarza się miliardy razy na sekundę.

Wydajność zależy od kilku parametrów naraz. Taktowanie w gigahercach mówi, ile cykli przypada na sekundę. Liczba rdzeni określa, ile instrukcji może być wykonywanych równolegle. Pamięć podręczna zmniejsza czas oczekiwania na dane.

Zanim zacznie się porównywać procesory, warto mieć w głowie trzy zdania, które porządkują cały temat:

  • Procesor nie rozumie programu – rozumie pojedynczy rozkaz. Nie widzi pętli, funkcji ani nazw zmiennych. Dostaje ciąg prostych poleceń typu „weź liczbę spod tego adresu", „dodaj", „zapisz tam", i wykonuje je jedno po drugim.
  • Wszystko, co procesor robi, dzieje się na danych leżących już w rejestrach. ALU nie doda dwóch liczb pozostawionych w pamięci operacyjnej – najpierw trzeba je do procesora przywieźć, a wynik odwieźć z powrotem. Dlatego tyle w jego konstrukcji dotyczy nie liczenia, tylko skracania drogi do danych.
  • Parametru nie da się czytać osobno. Taktowanie, liczba rdzeni i szerokość słowa opisują trzy różne rzeczy i żaden sam nie mówi, który procesor jest szybszy. Zadanie każące „porównać" sprawdza zwykle właśnie to, czy uczeń nie wybrał największej liczby.
02

Jak to działa

Sercem pracy procesora jest cykl rozkazowy – ta sama sekwencja czynności powtarzana dla każdej instrukcji programu. Zaczyna się od pobrania rozkazu: jednostka sterująca patrzy do rejestru zwanego licznikiem rozkazów, który przechowuje adres kolejnej instrukcji, i po magistrali ściąga ją z pamięci do rejestru rozkazu. Potem następuje dekodowanie – układ sterujący rozpoznaje, jaka to operacja i skąd wziąć argumenty. Dopiero wtedy dane wędrują z pamięci do rejestrów, ALU wykonuje działanie, a wynik jest zapisywany tam, gdzie każe rozkaz. Na końcu licznik rozkazów przesuwa się dalej i wszystko zaczyna się od nowa. Skok, warunek i pętla nie są osobnym mechanizmem – to rozkazy, które zamiast przesunąć licznik o krok, wpisują do niego inny adres.

Taktowanie to rytm, w jakim ten cykl postępuje. Zegar wysyła impulsy, a każdy impuls pozwala układom przejść do kolejnego stanu. Więcej impulsów na sekundę to więcej kroków na sekundę – ale krok krokowi nierówny. Ile pracy mieści się w jednym takcie, zależy od konstrukcji procesora, więc porównywanie samych gigaherców ma sens tylko w obrębie jednej rodziny.

Rdzeń to kompletny procesor: własna jednostka sterująca, własne ALU, własne rejestry. Procesor wielordzeniowy to kilka takich zestawów w jednej obudowie, więc może naprawdę równolegle prowadzić kilka cykli rozkazowych naraz. Zysk nie jest jednak automatyczny: żeby cztery rdzenie policzyły coś cztery razy szybciej, program musi dać się podzielić na niezależne części. Program napisany jako jeden ciąg kroków wykona się na jednym rdzeniu, a pozostałe będą w tym czasie robiły coś innego albo nic. Tym, który rdzeń dostanie który program, zajmuje się system operacyjny.

Architektura 32 albo 64 bity to szerokość słowa, czyli porcji danych obrabianej jednorazowo, oraz szerokość adresu. Adres jest numerem komórki pamięci, więc liczba jego bitów wyznacza, ile komórek da się w ogóle ponumerować: przy 32 bitach jest to 2 do potęgi 32, czyli 4 294 967 296 bajtów – dokładnie 4 GB. Stąd limit pamięci w systemach 32-bitowych. Architektura 64-bitowa ten sufit odsuwa, ale nie przyspiesza sama z siebie programu, który ani nie potrzebuje dużej pamięci, ani nie liczy na wielkich liczbach.

Zostaje pamięć podręczna. Procesor pracuje szybciej, niż pamięć operacyjna jest w stanie podawać dane, więc bez bufora spędzałby znaczną część cykli na czekaniu. Cache to niewielka pamięć tuż przy rdzeniach, w której lądują dane i rozkazy ostatnio pobrane oraz te, po które procesor prawdopodobnie sięgnie za chwilę. Czym cache jest jako rodzaj pamięci i jak wygląda hierarchia od rejestrów po dysk, opisuje hasło o rodzajach pamięci; tutaj wystarczy odpowiedź na pytanie „po co": żeby procesor nie czekał.

03

Wizualizacja

Tabela wejściowa
ElementStan przed wykonaniem rozkazu
Rozkaz do wykonaniadodaj zawartość komórek o adresach 100 i 101, wynik zapisz w komórce 102
Licznik rozkazówwskazuje adres, pod którym leży ten rozkaz
Komórka pamięci 1007
Komórka pamięci 1015
Komórka pamięci 1020
Rejestry roboczepuste – żadna z tych liczb nie jest jeszcze w procesorze
→
Wynik
FazaCo się dziejeCo bierze w tym udział
1. Pobranie rozkazujednostka sterująca odczytuje z pamięci rozkaz spod adresu wskazanego przez licznik rozkazów i wpisuje go do rejestru rozkazulicznik rozkazów, magistrala, rejestr rozkazu
2. Dekodowanieukład sterujący rozpoznaje, że to dodawanie, i ustala, że argumenty leżą pod adresami 100 i 101, a wynik ma trafić pod adres 102jednostka sterująca, dekoder rozkazu
3. Pobranie danychz pamięci operacyjnej wędrują do rejestrów wartości 7 oraz 5 – ALU nie umie liczyć na danych leżących w pamięcipamięć operacyjna, magistrala, rejestry robocze
4. Wykonanie w ALUjednostka arytmetyczno-logiczna dodaje 7 i 5, wynik 12 zostaje w rejestrze, a rejestr znaczników zapamiętuje cechy wyniku, na przykład że nie jest zeremjednostka arytmetyczno-logiczna, rejestr wyniku, rejestr znaczników
5. Zapis wynikuliczba 12 jedzie z rejestru po magistrali do komórki o adresie 102 i nadpisuje jej dotychczasową zawartośćrejestr wyniku, magistrala, pamięć operacyjna
6. Przejście dalejlicznik rozkazów wskazuje kolejną instrukcję i cały cykl zaczyna się od początku – chyba że rozkazem był skok, który wpisuje do licznika inny adreslicznik rozkazów, jednostka sterująca
04

Typowe błędy

Więcej gigaherców zawsze znaczy szybciej. Taktowanie mówi, ile taktów przypada na sekundę, a nie ile pracy mieści się w takcie. Dwa procesory z różnych rodzin mogą przy tej samej liczbie gigaherców różnić się wydajnością w obie strony, bo jeden w jednym takcie kończy operację, na którą drugi potrzebuje kilku. Bezpieczna reguła do zapisania w odpowiedzi brzmi: taktowanie porównuje się w obrębie tej samej rodziny procesorów, a poza nią jest jedną z kilku informacji, nie werdyktem.

Rdzeń, wątek i procesor to trzy różne rzeczy. Rdzeń to fizyczny komplet układów wykonawczych wewnątrz procesora – układ czterordzeniowy ma cztery takie komplety, ale nie jest czterema procesorami, bo dzielą one obudowę, gniazdo i część pamięci podręcznej. Wątek to pojęcie z poziomu programu: ciąg instrukcji, który da się wykonywać niezależnie od innych. Wątków bywa w systemie znacznie więcej niż rdzeni i wtedy nie działają one równocześnie, tylko na przemian, bo system przydziela im kolejne odcinki czasu.

Architektura 64-bitowa sama z siebie przyspiesza każdy program. Szerokość słowa daje przewagę tam, gdzie jest faktycznie potrzebna: przy adresowaniu pamięci powyżej limitu 4 GB i przy działaniach na dużych liczbach, które w trybie 32-bitowym trzeba składać z kawałków. Edytor tekstu ani przeglądarka zdjęć nie robią ani jednego, ani drugiego. Bity architektury nie są też stopniem wydajności, którym da się porównać dwa procesory – to informacja o tym, jak szerokimi porcjami procesor operuje i jakie wersje systemu oraz programów da się na nim uruchomić.

05

Zapamiętaj

  • Procesor składa się z jednostki sterującej, jednostki arytmetyczno-logicznej i rejestrów, a jego praca to powtarzany cykl rozkazowy: pobranie rozkazu, dekodowanie, pobranie danych, wykonanie, zapis wyniku, przejście do następnego rozkazu.
  • Licznik rozkazów przechowuje adres kolejnej instrukcji; skoki i pętle działają przez wpisanie do niego innego adresu, a nie przez osobny mechanizm.
  • ALU liczy wyłącznie na zawartości rejestrów, więc argumenty trzeba najpierw pobrać z pamięci, a wynik do niej odesłać.
  • Taktowanie to liczba taktów na sekundę i porównuje się je tylko w obrębie jednej rodziny procesorów – o wydajności decydują razem takt, liczba rdzeni, pamięć podręczna i to, ile pracy mieści się w jednym takcie.
  • Rdzeń to komplet układów wykonawczych, a 64 bity to szerokość słowa i adresu: przy 32 bitach adres obejmuje 4 GB pamięci, a szersze słowo pomaga tylko programom, które tego potrzebują.
06

Sprawdź się

Procesor ma wykonać jeden rozkaz. Stan przed jego wykonaniem wygląda tak:

ElementZawartość
Rozkazdodaj zawartość komórek 200 i 201, wynik zapisz w komórce 202
Komórka 2009
Komórka 2014
Komórka 2020

Odpowiedz na pytania o przebieg tego cyklu:

PytanieOdpowiedź
Jaka liczba znajdzie się w komórce 202 po wykonaniu rozkazu?
Ile razy procesor sięga do pamięci po argumenty tego dodawania?
Który blok procesora wykonuje samo dodawanie? Podaj trzyliterowy skrót
Który blok pobiera rozkaz i rozpoznaje, co on oznacza? Wpisz: jednostka
Jak nazywa się rejestr przechowujący adres kolejnego rozkazu?
Która faza cyklu następuje bezpośrednio po pobraniu rozkazu?

Zanim ALU cokolwiek doda, oba argumenty muszą trafić z pamięci do , a gotowy wynik wraca z procesora do .

07

Najczęściej zadawane pytania

Czy więcej gigaherców zawsze znaczy szybciej?

Nie. Porównanie ma sens tylko w obrębie tej samej rodziny procesorów. Nowsza konstrukcja wykonuje więcej pracy w jednym cyklu, więc może wygrywać mimo niższego taktowania. Na czas wykonania wpływają też liczba rdzeni i pamięć podręczna: procesor czekający na dane marnuje takty, choć zegar tyka tak samo szybko.

Co to jest architektura 64-bitowa?

Określa szerokość słowa, czyli porcji danych przetwarzanej jednorazowo, oraz szerokość adresu pamięci. Adres 32-bitowy pozwala ponumerować 2 do potęgi 32 komórek, czyli 4 294 967 296 bajtów – stąd znany limit 4 GB w systemach 32-bitowych. Architektura 64-bitowa ten limit odsuwa, ale programowi, który nie potrzebuje ani dużej pamięci, ani działań na wielkich liczbach, nic nie daje.

Po co procesorowi pamięć podręczna?

Bo pamięć operacyjna podaje dane wolniej, niż procesor potrafi je przetwarzać, więc bez bufora spędzałby dużą część taktów na czekaniu. Cache trzyma tuż przy rdzeniach dane i rozkazy ostatnio używane oraz sąsiadujące z nimi w pamięci – programy czytają ją zwykle fragmentami leżącymi obok siebie.

Czym rdzeń różni się od wątku?

Rdzeń to sprzęt: kompletny zestaw układów wykonawczych wewnątrz procesora, zdolny prowadzić własny cykl rozkazowy. Wątek to pojęcie z poziomu programu: niezależny ciąg instrukcji do wykonania. Wątków jest w działającym systemie zwykle znacznie więcej niż rdzeni, więc większość z nich czeka na swoją kolej i wykonuje się na przemian, a nie równocześnie.

Czy program skompilowany dla jednego procesora zadziała na każdym innym?

Nie. Kod maszynowy jest ciągiem rozkazów zapisanych w postaci, którą rozumie konkretna architektura procesora, więc plik przygotowany dla jednej nie uruchomi się na innej – potrzebna jest wersja skompilowana na nowo. Jak z tekstu programu powstaje kod maszynowy, opisuje hasło o drodze od kodu źródłowego do maszynowego.

Przećwicz w zadaniach maturalnych

Do tego hasła nie mamy jeszcze przypisanych pojedynczych zadań. Cały spis zadań maturalnych z tego działu jest tutaj:

Zadania z działu: Teoretyczne

↗

Powiązane zagadnienia