Яка різниця між гіпер-різьбленням та декількома ядрами?


42

У розмові з адміністратором мережі я згадав, що моя машина була двоядерною. Він сказав мені, що це не так. Я підняв диспетчера завдань, перейшов на вкладку продуктивності та показав йому, що є два окремих графіки використання процесора. У мене є чотириядерна машина вдома, і вона має чотири графіки. Він розповів, що на цій машині було два графіки через гіпер-різьблення. У мене раніше був процесор із гіперпотоком pentium 4, але я так і не зрозумів, що це означає. Тож у чому різниця між гіпер-нарізкою та двоядерною? І як ти розкажеш, який у тебе?

Відповіді:


20

Hyper-Threading відкриває кілька логічних ядер для одного фізичного ядра CPU. Простіше кажучи, гіпер-нарізка робить переключення контексту більш ефективним для кожного ядра процесора.

Двоядерні мікросхеми, з іншого боку, насправді мають два фізичних ядра ЦП, які можуть виконувати різні процеси одночасно.

Існують також інші багатоядерні мікросхеми, які мають набагато більше двох ядер, і - як зазначив Свіш - останні останні багатоядерні пропозиції Intel також підтримують Hyper-Threading на всіх ядрах.

Ви можете використовувати утиліту ідентифікації процесора типу CPU-Z, щоб визначити, скільки ядер у вас є. Як ви бачите біля нижньої частини екрана, ЦП у цьому випадку має 2 фізичні ядра. Якщо кількість ниток перевищує кількість ядер, увімкнено Hyper-Threading. На сьогоднішній день усі орієнтовані на споживача процесори з Hyper-Thading мають 2 потоки на ядро, тож якщо HT увімкнено, кількість потоків буде в 2 рази більше ядер.

введіть тут опис зображення

Якщо у вас є процесор Intel, ви можете замість цього завантажити завантажувальну програму Intel ID CPU .


І багатоядерні мікросхеми, що підтримують гіпер-нарізку, щоб ви отримали вдвічі більше логічних ядер
Свиш

Спасибі! Як мені сказати (зсередини ОС), який тип процесора у мене є?
Джош Стодола

3
У UltraSparc T2 + є 8 ядер, кожне з яких підтримує 8 потоків, що робить 64 віртуальні процесори на одному чіпі: en.wikipedia.org/wiki/UltraSPARC_T2
jlliagre

Спосіб пізнання процесора у вас залежить від операційної системи.
jlliagre

@jilliagre: приємно!
пограбувати

16

Hyper-threading - це ваш процесор, який видає, що має 2 фізичні ядра процесора, але має лише 1 і кілька зайвих непотріб.

Сенс гіперточення полягає в тому, що багато разів, коли ви виконуєте код у процесорі, є частини процесора, які не працюють. Включаючи додатковий набір регістрів процесора, процесор може діяти так, як він має два ядра, і таким чином використовувати паралельно всі частини процесора. Коли обидва ядра обидва повинні використовувати один компонент процесора, тоді одне ядро ​​закінчується очікуванням курсу. Ось чому він не може замінити двоядерні та такі процесори.

Дивіться також: Це питання


6

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


1
Ви збираєтесь відповідати на ваші запитання "TODO"?
pacoverflow

1
@pacoverflow, якщо я колись дізнаюся відповідь, або якщо хтось відредагує для мене відповідь :-)
Ciro Santilli 新疆 改造 中心 六四 六四 事件
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.