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).