Hyperthreading є більш дешевою і повільною альтернативою наявності подвійних ядер
Intel Керівництво Volume 3 Система Керівництво по програмуванню - 325384-056US вересня 2015 8,7 «INTEL Гіперпоточность TECHNOLOGY АРХІТЕКТУРА» описує HT коротко. Він містить таку схему:
TODO це повільніше на скільки відсотків у середньому в реальних програмах?
Hyperthreading можливий, оскільки сучасні одиничні процесорні ядра вже виконують кілька інструкцій одночасно за допомогою інструментального конвеєра https://en.wikipedia.org/wiki/Instruction_pipelining
Трубопровід інструкцій - це розділення функцій всередині одного ядра для забезпечення використання кожної частини схеми в будь-який момент часу: читання пам’яті, інструкцій з декодування, виконання інструкцій тощо.
Hyperthreading розділяє функції далі, використовуючи:
єдиний бекенд, який фактично виконує інструкції своїм конвеєром.
Подвійне ядро має дві версії, що пояснює більшу вартість та продуктивність.
два передніх кінці, які беруть два потоки вказівок і впорядковують їх таким чином, щоб максимально використовувати конвеєрний ланцюжок, уникаючи небезпек .
Подвійне ядро також матиме 2 передніх, по одному на кожен бекенд.
Існують крайні випадки, коли переупорядкування інструкцій не приносить користі, роблячи гіпертрейдинг марним. Але це призводить до значного поліпшення в середньому.
Дві гіперпотоки в одному ядрі поділяють додаткові рівні кешу (TODO скільки? L1?), Ніж два різних ядра, які мають лише L3, див.
Інтерфейс, який кожна гіперточка виставляє до операційної системи, аналогічний інтерфейсу фактичного ядра, і обидва можуть управлятися окремо. Таким чином, cat /proc/cpuinfo
мені показано 4 процесори, хоча я маю лише 2 ядра з 2 гіперточками кожен.
Однак операційні системи можуть скористатися тим, що знати, які гіперпотоки є на одному ядрі для запуску декількох потоків даної програми на одному ядрі, що може покращити використання кешу.
Це відео LinusTechTips містить несерйозне пояснення: https://www.youtube.com/watch?v=wnS50lJicXc