Яка різниця між багатопотоковим і гіперточним? [зачинено]


10

Я чув терміни "гіпер-нарізка" та "багатонитка", але в чому саме різниця між ними? Який процесор Intel використовує їх?


2
Ви намагаєтеся порівняти речі, які не є безпосередньо порівняними; просто пов'язані. Це як запитати "Яка різниця між стопою та взуттям?" Що осторонь, що досі виявили ваші дослідження? Де саме ви завісите, визначаючи різницю на основі визначень, легко отриманих з Інтернету?
Ƭᴇcʜιᴇ007


1
я не знаю ні многопоточности , ні Hyperthreading поставив мене просять знати їх
троянда

1
переповнення стеку нацисти закрили тему як її "поза темою" ... Це дуже гарне питання, популярне і не повинно закриватися ..
Robbo_UK

Відповіді:


19

Багатопотокова редакція стосується загальної задачі виконання декількох потоків виконання в операційній системі. Багатопотоковість більш загально називається "багатопроцесорна", яка може включати в себе декілька системних процесів (простим прикладом для Windows може бути, наприклад, запуск Internet Explorer і Microsoft Word одночасно), або вона може складатися з одного процесу, який має декілька потоків всередині це.

Багатопоточна редакція (або, я повинен сказати, багатопроцесорна) - це програмне поняття. Практично будь-який процесор, повний Тьюрінг, може виконувати багатопотоковість, навіть якщо на комп'ютері є лише одне ядро ​​CPU і це ядро ​​не підтримує гіперточування. Для підтримки багатопроцесорного процесора буде перемежовано виконання різних потоків виконання, виконуючи один, потім інший, потім інший, де операційна система розділить доступний час на "фрагменти" і надасть приблизно однакову кількість часу кожен потік (час не повинен бути рівним, але зазвичай це робиться, якщо процес не вимагає більш високого пріоритету).

Зауважте, що коли є більше програмних потоків виконання, які намагаються виконати в будь-який момент часу, ніж є наявні апаратні (одночасні) потоки виконання, то ці програмні потоки будуть "переплетені" серед доступних ядер. У випадку з "uniprocessor" (одне ядро ​​процесора без гіперточення), якщо у вас є більше одного програмного потоку, вони завжди будутьперемежовуватися. Якщо у вас 4-ядерний процесор з гіперточкою, це 8 "апаратних потоків", тобто процесор може виконати 8 одночасних потоків виконання в один і той же момент, тому якщо у вас було 8 програмних ниток, які намагаються запустити, вони могли б запуститися відразу ; але якщо у вас було 9 програмних потоків, один з апаратних потоків повинен був би переплести пару потоків (обрана точна пара потоків залежатиме від реалізації планувальника операційної системи).


Hyperthreading, з іншого боку, відноситься до дуже специфічної апаратної технології, створеної Intel, яка дозволяє одному ядру процесора ефективніше переплутати кілька потоків виконання. Іншими словами, процесор з гіперпереборкою забезпечить продуктивність, яка дещо більша, ніж процесор, який інакше такий же, але без гіперточення, тому що процесор із гіперпотоком зможе одночасно збалансувати два (іноді більше, але гіперпереборка зазвичай становить 2- спосіб) нитки виконання на заданому ядрі.

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

Візьмемо наступний приклад, де "1 ядро" передбачається виконувати однаково у всіх прикладах:

Приклад 1: 2 ядра, без гіперточення.
Приклад 2: 4 ядра, без гіперточення.
Приклад 3: 2 ядра з гіперточуванням.
Приклад 4: 4 ядра з гіперточуванням.

У цьому випадку Приклад 4 завжди буде найшвидшим. Приклад 2 іноді може бути приблизно таким же швидким, як Приклад 4, на робочих навантаженнях, які вкрай погано підходять для того, щоб скористатися оптимізаціями гіперточення.

Приклад 3, з іншого боку, може іноді навантаження, де гіперпереборка є найбільш вигідною, бути майже такою ж швидкою, як приклад 2, хоча вона має вдвічі менше фізичних ядер.

Приклад 1, звичайно, буде найповільнішим з усіх прикладів, але іноді це може бути приблизно таким же швидким, як Приклад 3, коли виконується навантаження, що погано підходить для гіперточення.

У реальних світових орієнтирах із сучасними процесорами Intel, як правило, ми виявляємо, що гіпертемізація призводить до поліпшення продуктивності на 20% до 40% порівняно з відсутністю гіперточення (при відсутності гіперпереборки у випадку відключення функції гіперточення). BIOS). Іноді з'являються навантаження, коли відключення гіперточення показує перевагу у виконанні , але ці робочі навантаження можуть бути рідкісними в реальному використанні. Але, якби у мене був вибір між 4 ядрами з гіпертретуванням або 8 ядрами, припускаючи, що кожне саме ядро ​​має однакові показники, я б обирав 8-ядерний процесор кожного разу.


2
Якщо бути точним, багатопотокова та багатопроцесорна робота - це не одне і те ж. Нитки діляться контекстом виконання з процесом, з яким вони пов'язані, в той час як процеси мають власний контекст виконання. Однак для цієї відповіді ця відмінність не настільки важлива.
Tero Kilkanen

1
Технологія Hyperthreading не була "створена Intel"; для mainline x86 - це лише торговельна марка для одночасного багатопотокового прочитання. Якби Alpha 21464 була вироблена, вона була б одним з перших видатних користувачів SMT. Intel вперше випустила використання SMT (можливо, виключаючи менш відомі процесори) з деякими Pentium 4s, але основна ідея не була винаходом Intel.
Пол А. Клейтон

2
Суперечка: гіперточення не суворо повільніше, ніж окремі ядра. Можна розробити (штучні) випадки, коли обмін кешами L1 є більшою користю, ніж повноцінне використання основних ресурсів. Інший особливий випадок може бути, коли одна нитка наполегливо активна, а інша коротко обробляє переривчасті події; періодичне пробудження ядра дорожче, ніж прокидання потоку на активному ядрі. Для потоків з надзвичайно низьким ILP, якщо конфіденційність кешу не є проблемою, то більша енергоефективність використання одного ядра може забезпечити більшу турбобустінг (кращі показники).
Пол А. Клейтон

3
Відповіді можна редагувати в SU, тому якщо ви хочете вдосконалити її, будь ласка, не соромтеся. Також пам’ятайте про очевидний рівень знань про ОП; навіть моя відповідь, яка стоїть сама по собі, напевно, більш технічна, ніж вони очікували чи хотіли. Я навмисно оглянув деякі деталі на користь простоти пояснення. Я сумніваюся, чи ОП збирається незабаром проектувати процесори, і відчайдушно потрібно знати всі ці деталі. Тим не менш цікаві коментарі.
allquixotic

1
Запропоновані редагування, які змінюють вміст (тобто не лише виправлення граматики / друку або перефразовування для наочності), ймовірно, будуть відхилені.
Пол А. Клейтон

4

Багатопотокове читання - це термін для паралельної обробки на рівні операційної системи. Процесор не має нічого спільного з багатопотоковою читанням.

Hyperthreading - концепція Intel, яка реалізує "одночасну" обробку декількох потоків в одному ядрі процесора. Операційна система бачить два процесорних ядра, хоча є лише одне фізичне ядро.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.