Od logiki bitów do współczesnych procesorów
(czyli jak komputer naprawdę działa)
1. Wstęp: po co to wiedzieć
Kiedy piszesz program w Pythonie lub C++, raczej nie myślisz:
„a gdzie to się właściwie wykonuje w procesorze?”
Tymczasem komputer, który uruchamia Twój kod, ma bardzo konkretną, logiczną strukturę.
Zrozumienie jej pozwala Ci zrozumieć:
- dlaczego program czasem działa wolno,
- jak system operacyjny zarządza pamięcią,
- co naprawdę znaczy „optymalizacja”,
- jak działa pamięć, procesor, dysk i co je ogranicza.
To właśnie ta wiedza odróżnia kogoś, kto pisze kod, od kogoś, kto rozumie, jak kod pracuje.
2. Architektura von Neumanna – podstawa wszystkiego
W 1945 roku John von Neumann opisał koncepcję komputera, która stała się podstawą wszystkich współczesnych urządzeń – od smartfonów po superkomputery.
Cztery główne komponenty:
┌─────────────┐
│ PAMIĘĆ │ ← przechowuje dane i program
└──────┬──────┘
│
┌───┴───────────────┬──────────────┐
│ │ │
┌──▼──┐ ┌──────▼────┐ ┌────▼───────┐
│ CPU │◄──────►│ ALU & CU │ │ REG. I/O │
└─────┘ └───────────┘ └────────────┘
↑ ↑ ↑
Wykonuje Operacje logiczne Wejście/Wyjście
instrukcje i arytmetyczne (urządzenia peryf.)
Jak to działa:
- Pamięć – przechowuje zarówno dane, jak i program.
- CPU (Central Processing Unit) – odczytuje i wykonuje instrukcje z pamięci.
- ALU (Arithmetic Logic Unit) – wykonuje działania matematyczne i logiczne (+, −, ×, ÷, AND, OR, NOT).
- CU (Control Unit) – steruje przepływem danych.
- I/O (Input/Output) – umożliwia komunikację z otoczeniem: dyskiem, klawiaturą, monitorem itp.
Przykład:
Kiedy piszesz x = 5 + 3, procesor:
- pobiera instrukcję z pamięci,
- ALU wykonuje dodawanie,
- wynik (8) zapisuje z powrotem w pamięci.
3. Systemy liczbowe – język komputera
Komputer przechowuje wszystkie dane w systemie binarnym – za pomocą zer i jedynek.
Każdy bit to najmniejsza jednostka informacji:0 = brak impulsu, 1 = impuls elektryczny.
👉 Pełne omówienie systemów liczbowych znajdziesz w artykule „Systemy liczbowe – język komputera”.
Tutaj skupimy się nie na przeliczaniu liczb, ale na tym, jak CPU tę reprezentację wykorzystuje.
3.1 Bit, bajt i jednostki pochodne
| Jednostka | Wartość | Przykład |
|---|---|---|
| 1 bit | 0 lub 1 | jeden stan logiczny |
| 1 bajt | 8 bitów | np. litera ‘A’ = 01000001 |
| 1 kilobajt (KB) | 1024 bajty | krótki dokument tekstowy |
| 1 megabajt (MB) | 1024 KB | zdjęcie z telefonu |
| 1 gigabajt (GB) | 1024 MB | film HD |
| 1 terabajt (TB) | 1024 GB | dysk twardy komputera |
Ważne: 1 bajt = 8 bitów – to podstawowa jednostka pamięci i transferu danych.
Komputer mierzy nimi wszystko: od znaków tekstu po pliki wideo.
4. Reprezentacja danych w komputerze
Wszystkie dane — liczby, teksty, obrazy — zapisane są w formie binarnej.
Ale sposób ich interpretacji zależy od kontekstu.
4.1 Liczby całkowite (integers)
Jak komputer zapisuje liczbę ujemną, np. -5?
Metoda: uzupełnienie do dwóch (Two’s Complement)
Standard w architekturach procesorów.
Dla 8 bitów:
+5 = 00000101
-5 = 11111011 (odwrócenie bitów i dodanie 1)
x = 5
print(bin(x)) # 0b101
print(bin(-5)) # -0b101 (w pamięci: 11111011)
Zakres liczb 8-bitowych:
- bez znaku: 0 – 255
- ze znakiem: -128 – 127
4.2 Liczby zmiennoprzecinkowe (IEEE 754)
Służą do zapisu ułamków i liczb bardzo dużych lub małych.
Standard IEEE 754 zapisuje liczbę w postaci: (−1)s×1.m×2e(-1)^s × 1.m × 2^e(−1)s×1.m×2e
Dla 32-bitów:
- 1 bit → znak,
- 8 bitów → wykładnik,
- 23 bity → mantysa.
Przykład: liczba 3.14159
Krok 1: 11.001001...
Krok 2: 1.1001001 × 2^1
Krok 3: s=0, e=1+127, m=1001001...
x = 0.1 + 0.2
print(x) # 0.30000000000000004 — błąd zaokrąglenia
Dlatego przy obliczeniach zmiennoprzecinkowych należy uważać na dokładność.
4.3 Tekst i kodowanie (ASCII i Unicode)
Każdy znak w pamięci to liczba:
| Znak | ASCII (DEC) | Binarnie |
|---|---|---|
| ’A’ | 65 | 01000001 |
| ’a’ | 97 | 01100001 |
| ’0′ | 48 | 00110000 |
| ’ ’ | 32 | 00100000 |
Unicode rozszerza ten system na cały świat — zawiera polskie litery, emotikony i tysiące symboli.
ord('A') # 65
chr(65) # 'A'
ord('ą') # 261
ord('😀') # 128512
5. Hierarchia pamięci – złoty trójkąt
Każdy rodzaj pamięci różni się szybkością, pojemnością i kosztem.
Im szybsza pamięć, tym droższa i mniejsza.
5.1 Struktura hierarchii
Rejestry CPU (64 bajty) — nanosekundy (ns)
Cache L1 (32 KB) — ~4 ns
Cache L2 (256 KB) — ~10 ns
Cache L3 (8 MB) — ~40 ns
RAM (8–32 GB) — ~100 ns
SSD (500 GB–1 TB) — ~10 000 ns
HDD (2–8 TB) — ~10 000 000 ns
Porównanie czasu dostępu:
Jeśli dostęp do rejestru trwa 1 sekundę,
to dostęp do dysku HDD trwałby… 116 dni!
5.2 Rejestry CPU
Najmniejsza, ale najszybsza pamięć – CPU ma tylko kilkadziesiąt rejestrów.
a = 5
b = 3
c = a + b # wykonane bezpośrednio w rejestrach CPU
5.3 Cache L1, L2, L3
To pamięć pośrednia między CPU a RAM.
Przechowuje dane, do których procesor często sięga.
Rdzeń 1 ─→ L1 ─┐
Rdzeń 2 ─→ L1 ─┼─→ L3 (wspólny)
Rdzeń 3 ─→ L1 ─┤
Rdzeń 4 ─→ L1 ─┘
- L1 – najszybsza, ale bardzo mała
- L2 – większa, wolniejsza
- L3 – wspólna dla wszystkich rdzeni
5.4 RAM (Random Access Memory)
To główna pamięć, w której działają aktualne programy.
Cechy:
- szybka w porównaniu z dyskiem,
- ulotna (dane znikają po wyłączeniu),
- pojemność: 8–64 GB (w zależności od komputera).
lista = [1, 2, 3, 4, 5] # dane w RAM
5.5 SSD (Solid State Drive)
Pamięć masowa bez ruchomych części.
Działa znacznie szybciej niż tradycyjny dysk.
- prędkość: 400–550 MB/s
- trwała, cicha, energooszczędna
- pojemność: 256 GB – 4 TB
5.6 HDD (Hard Disk Drive)
Tradycyjny dysk z obracającymi się talerzami.
- wolniejszy (60–160 MB/s)
- bardzo pojemny (2–8 TB)
- wrażliwy na wstrząsy
- głośny i bardziej prądożerny
6. Procesor (CPU) – mózg komputera
6.1 Budowa procesora
┌──────────────────────────┐
│ Jednostka Sterująca (CU) │
│ - czyta instrukcje │
│ - dekoduje rozkazy │
│ - kieruje operacjami │
└─────────┬────────────────┘
│
▼
┌──────────────────────────┐
│ Jednostka Arytmetyczno- │
│ Logiczna (ALU) │
│ - +, -, *, /, AND, OR │
│ - porównania │
└──────────────────────────┘
6.2 Takt procesora (Clock Speed)
Procesor pracuje w rytmie impulsów zegara.
Każdy impuls = 1 cykl, czyli 1 krok wykonania instrukcji.
1 GHz = 1 miliard cykli na sekundę
| Procesor | Taktowanie | Szacowana wydajność |
|---|---|---|
| Stary Pentium | 800 MHz | 0.8 mld operacji/s |
| Nowoczesny i7 | 3.5 GHz | 3.5 mld operacji/s |
Ale częstotliwość to nie wszystko – liczy się także liczba rdzeni, wątków i architektura.
6.3 Rdzenie i wątki (Cores & Threads)
Nowoczesne procesory mają wiele rdzeni.
Każdy rdzeń może wykonywać oddzielne zadanie.
Dodatkowo każdy rdzeń potrafi symulować dwa „wątki” – dzięki technologii Hyper-Threading.
| Procesor | Rdzenie | Wątki | Przykład zastosowania |
|---|---|---|---|
| i3 | 2 | 4 | przeglądanie internetu |
| i5 | 4 | 8 | gry, edycja wideo |
| i7 / Ryzen 7 | 8 | 16 | montaż filmów, programowanie |
| i9 / Ryzen 9 | 12–16 | 24–32 | obliczenia naukowe |
6.4 Wydajność a energooszczędność
Każdy wzrost taktowania oznacza większe zużycie energii i temperaturę.
Dlatego procesory korzystają z dynamicznego zarządzania energią (Turbo Boost, Precision Boost),
które zwiększa moc tylko wtedy, gdy to potrzebne.
6.5 Nowoczesne procesory
Dzisiejsze CPU to hybrydy zbudowane z:
- rdzeni wydajnych (P-Cores) – do zadań wymagających mocy,
- rdzeni efektywnych (E-Cores) – do lekkich zadań i oszczędzania energii,
- zintegrowanych układów graficznych (iGPU),
- akceleratorów AI w najnowszych generacjach.
7. Podsumowanie
Zrozumienie, jak komputer przechowuje i przetwarza dane,
to fundament świadomego programowania.
- Programista „systemowy” rozumie, jak dane przepływają przez hierarchię pamięci.
- Programista „aplikacyjny” dzięki temu wie, jak pisać kod wydajnie.
- A każdy użytkownik może wreszcie pojąć, dlaczego „więcej GHz” nie zawsze znaczy „szybciej”.
💡 Zapamiętaj:
Komputer to nie magia, tylko logika — od bitów w pamięci po miliardy operacji w procesorze.
Kiedy to zrozumiesz, kodowanie przestaje być tajemnicą, a staje się sztuką sterowania myślą maszyny.

