Я чув терміни "гіпер-нарізка" та "багатонитка", але в чому саме різниця між ними? Який процесор Intel використовує їх?
Я чув терміни "гіпер-нарізка" та "багатонитка", але в чому саме різниця між ними? Який процесор Intel використовує їх?
Відповіді:
Багатопотокова редакція стосується загальної задачі виконання декількох потоків виконання в операційній системі. Багатопотоковість більш загально називається "багатопроцесорна", яка може включати в себе декілька системних процесів (простим прикладом для 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-ядерний процесор кожного разу.
Багатопотокове читання - це термін для паралельної обробки на рівні операційної системи. Процесор не має нічого спільного з багатопотоковою читанням.
Hyperthreading - концепція Intel, яка реалізує "одночасну" обробку декількох потоків в одному ядрі процесора. Операційна система бачить два процесорних ядра, хоча є лише одне фізичне ядро.