Hyperthreading jest tańszą i wolniejszą alternatywą niż posiadanie podwójnych rdzeni
Intel Manual Volume 3 System Programming Guide - 325384-056US wrzesień 2015 8,7 "Intel Hyper-Threading Technology ARCHITEKTURA" opisuje HT krótko. Zawiera następujący schemat:
TODO jest wolniejszy o ile procent średnio w rzeczywistych aplikacjach?
Hyperthreading jest możliwy, ponieważ współczesne pojedyncze rdzenie procesorów wykonują już wiele instrukcji jednocześnie za pomocą potoku instrukcji https://en.wikipedia.org/wiki/Instruction_pipelining
Potok instrukcji jest rozdziałem funkcji wewnątrz jednego rdzenia, aby zapewnić, że każda część obwodu jest używana w danym momencie: czytanie pamięci, instrukcje dekodowania, wykonywanie instrukcji itp.
Hyperthreading oddziela funkcje dalej za pomocą:
pojedynczy backend, który faktycznie uruchamia instrukcje za pomocą potoku.
Dwurdzeniowy ma dwa backendy, co tłumaczy większy koszt i wydajność.
dwa interfejsy, które pobierają dwa strumienie instrukcji i porządkują je w taki sposób, aby zmaksymalizować wykorzystanie potokowego pojedynczego zaplecza przez unikanie zagrożeń .
Dwurdzeniowy miałby również 2 interfejsy, po jednym dla każdego backendu.
Zdarzają się przypadki skrajne, w których zmiana kolejności instrukcji nie przynosi żadnych korzyści, dzięki czemu hiperwątkowanie jest bezużyteczne. Ale powoduje znaczną poprawę średniej.
Dwa hiperwątki w jednym rdzeniu współużytkują kolejne poziomy pamięci podręcznej (TODO ile? L1?) Niż dwa różne rdzenie, które współużytkują tylko L3, patrz:
Interfejs, który każdy hyperthread udostępnia systemowi operacyjnemu, jest podobny do interfejsu rzeczywistego rdzenia i oba mogą być kontrolowane osobno. To cat /proc/cpuinfo
pokazuje mi 4 procesory, mimo że mam tylko 2 rdzenie z 2 hiperwątkami każdy.
Systemy operacyjne mogą jednak skorzystać z wiedzy, które hiperwątki znajdują się w tym samym rdzeniu, aby uruchomić wiele wątków danego programu na jednym rdzeniu, co może poprawić wykorzystanie pamięci podręcznej.
Ten film LinusTechTips zawiera beztroskie wyjaśnienie nietechniczne: https://www.youtube.com/watch?v=wnS50lJicXc