Rzeczy są o wiele bardziej skomplikowane niż w czasach, gdy jedna instrukcja procesora na jeden cykl zegara.
Dla każdej instrukcji istnieje teraz potok składający się z kilku kroków. Słyszałem aż 41, choć to było dawno temu i nie mam pojęcia, jak wyglądają obecne potoki procesorów. Wiem, że jeśli potok jest wystarczająco długi, możesz rozpocząć nową instrukcję w dół potoku przed zakończeniem ostatniej instrukcji, czasami w tym samym cyklu zegarowym, tak aby twój pojedynczy rdzeń skutecznie wykonywał dwie rzeczy naraz.
Jest jednak sztuczka. Nie można tego użyć do przyspieszenia tempa, w jakim procesor żuje instrukcje z określonego programu. W grę wchodzi problem poprawności: kolejna instrukcja może zależeć od dotychczas nieokreślonego wyniku poprzedniej instrukcji. Aby skorzystać z długiego rurociągu bezpiecznie , chip zaprezentuje dwa oddzielne rdzenie procesora do planującego system operacyjny i alternatywne instrukcje wysłane do każdego rdzenia tak, że dwie instrukcje do tego samego „rdzenia” nigdy nie są w rurociągu w tym samym czasie. W ten sposób możemy być pewni, że wszelkie instrukcje wykonywane jednocześnie nie będą ze sobą kolidować. Nazywa się to hyperthreading .
Warto tutaj zauważyć, że chociaż hyperthreading może znacznie zwiększyć ilość pracy, jaką dostajesz z procesora, nie jest tak dobry jak posiadanie tak dużej liczby rdzeni fizycznych. W zależności od obciążenia pracą może to oznaczać jedynie 15% poprawę lub nawet 40% poprawę. W niektórych okolicznościach możesz nawet chcieć wyłączyć tę funkcję, aby pozostałe rdzenie miały pełny wyłączny dostęp do pamięci podręcznej L1 / L2 dla tego rdzenia (czasami dzieje się tak w przypadku dedykowanych serwerów baz danych).
Gdy twój układ reklamuje się jako mający 2 rdzenie z 4 wątkami, oznacza to, że jest to dwurdzeniowy procesor, który obsługuje hyperthreading.