Rdzeń procesora

Niezależna jednostka wykonawcza wewnątrz procesora realizująca obliczenia. Współczesne procesory mają wiele rdzeni, co umożliwia pracę równoległą.

Rdzeń procesora (ang. core) to niezależna jednostka wykonawcza wewnątrz CPU, która sama potrafi pobierać, dekodować i wykonywać instrukcje. Innymi słowy: to kompletny „mały procesor” w środku procesora. Kiedyś chip miał jeden rdzeń i robił wszystko po kolei. Dziś standardem są procesory wielordzeniowe (4, 8, 16, a w serwerach grubo ponad 100 rdzeni), co pozwala wykonywać wiele zadań naprawdę równolegle, a nie tylko udawać równoległość przez szybkie przełączanie.

Jak to działa

Każdy rdzeń ma własne jednostki arytmetyczno-logiczne (ALU), rejestry i zwykle prywatną pamięć podręczną L1/L2. Dzięki temu dwa rdzenie mogą w tej samej chwili liczyć dwie różne rzeczy. System operacyjny widzi rdzenie jako osobne jednostki i rozdziela na nie wątki (threads) działających programów.

Dodatkowo wiele procesorów ma technologię SMT (u Intela zwaną Hyper-Threading): jeden fizyczny rdzeń udaje dwa logiczne, żeby lepiej wykorzystać przestoje. Dlatego CPU „8 rdzeni / 16 wątków” ma 8 prawdziwych rdzeni, ale system widzi 16 jednostek logicznych.

Przykład z praktyki

Chcesz sprawdzić, ile rdzeni masz pod maską? Na Linuksie wpisz nproc (pokaże liczbę dostępnych wątków logicznych) albo lscpu dla pełnego rozbicia na gniazda, rdzenie i wątki. Liczba ma znaczenie praktyczne: kompilując projekt narzędziem make, dasz make -j$(nproc), żeby rozbić kompilację na wszystkie dostępne jednostki naraz. Różnica między make a make -j8 na dużym projekcie to często kilka minut versus kilkadziesiąt sekund.

Częste mity

„Więcej rdzeni = zawsze szybciej” — nieprawda. Jeśli program jest jednowątkowy (a takich wciąż jest mnóstwo), użyje jednego rdzenia i reszta będzie się nudzić. Tu liczy się wydajność pojedynczego rdzenia i taktowanie, nie ich liczba.

Drugi mit: rdzeń logiczny to to samo co fizyczny. SMT pomaga, ale dwa wątki logiczne na jednym rdzeniu dzielą te same zasoby — to nie podwojenie mocy. Nie myl też rdzenia z GHz: częstotliwość mówi, jak szybko jeden rdzeń tyka, a nie ile ich jest.

Pojęcia powiązane

Warto skojarzyć: CPU, wątek (thread), SMT / Hyper-Threading, cache L1/L2/L3, taktowanie (GHz), wielowątkowość, GPU (gdzie rdzeni są tysiące, ale prostszych).