Відповіді:
Як говорили інші, це повністю залежить від завдання.
Щоб проілюструвати це, давайте розглянемо фактичний орієнтир:
Це було взято з моєї магістерської роботи (наразі недоступна в Інтернеті).
Це показує відносне прискорення 1 алгоритмів відповідності рядків (кожен колір є різним алгоритмом). Алгоритми були виконані на двох чотирьохядерних процесорах Intel Xeon X5550 з гіперточуванням. Іншими словами: було 8 ядер, кожне з яких може виконати два апаратних потоки (= "гіпертоки"). Тому тест тестує прискорення до 16 потоків (що є максимальною кількістю одночасних потоків, яку може виконати ця конфігурація).
Два з чотирьох алгоритмів (синій і сірий) масштабують більш-менш лінійно по всьому діапазону. Тобто, це отримує вигоду від гіпертренування.
Два інші алгоритми (червоний і зелений; невдалий вибір для сліпих кольорів) лінійно масштабуються до 8 ниток. Після цього вони застоюються. Це чітко вказує на те, що ці алгоритми не отримують користі від гіперточення.
Причина? У цьому конкретному випадку це навантаження на пам'ять; Перші два алгоритми потребують більше пам'яті для обчислення і обмежуються продуктивністю основної шини пам'яті. Це означає, що поки один апаратний потік чекає пам’яті, інший може продовжувати виконання; основний випадок використання для апаратних потоків.
Іншим алгоритмам потрібно менше пам'яті і не потрібно чекати шини. Вони майже повністю пов'язані з обчисленнями і використовують лише цілу арифметику (фактично бітові операції). Таким чином, немає можливості для паралельного виконання і ніякої користі від паралельних конвеєрних інструкцій.
1 Тобто коефіцієнт прискорення 4 означає, що алгоритм працює в чотири рази швидше, як якщо б він був виконаний лише одним потоком. За визначенням, тоді кожен алгоритм, виконаний на одному потоці, має відносний коефіцієнт швидкості 1.
Проблема в тому, це залежить від завдання.
Ідея, що стоїть за гіпертонуванням, в основному полягає в тому, що всі сучасні процесори мають більше одного питання виконання. Зазвичай ближче до десятка або близько того зараз. Розділений між цілим числом, плаваючою точкою, SSE / MMX / потоковим потоком (як би це не називалося сьогодні).
Крім того, кожен блок має різні швидкості. Тобто для обробки щось може знадобитися цілий математичний блок 3 циклу, але 64-бітове поділ з плаваючою комою може зайняти 7 циклів. (Це міфічні числа, не засновані ні на чому).
Виконання поза замовлення допомагає багато в утриманні різних підрозділів максимально повно.
Однак будь-яке окреме завдання не використовує кожну одиницю виконання кожного моменту. Навіть розщеплення ниток може допомогти цілком.
Таким чином, теорія стає, роблячи вигляд, що є другий процесор, на ній може працювати інший потік, використовуючи наявні одиниці виконання, які не використовуються, скажімо, вашим перекодування аудіо, що становить 98% SSE / MMX, а блоки int і float повністю простою, крім деяких речей.
Для мене це має більше сенсу в одному процесорному світі, оскільки підробка другого процесора дозволяє потокам легше перетнути цей поріг з невеликим (якщо є) додатковим кодуванням для обробки цього підробленого другого процесора.
Чи допомагає це в основному світі 3/4/6/8, маючи процесор 6/8/12/16? Данно. Стільки? Залежить від задач, які є під рукою.
Отже, щоб реально відповісти на ваші запитання, це залежало б від завдань у вашому процесі, які одиниці виконання він використовує, а також у вашому процесорі, які виконавчі блоки в режимі очікування / недостатнього використання та доступні для цього другого підробленого процесора.
Кажуть, що деякі "класи" обчислювальних матеріалів приносять користь (неясно загально). Але жорсткого і швидкого правила немає, і для деяких занять це уповільнює справи.
У мене є деякі анекдотичні докази, які слід додати до відповіді geoffc, що я фактично маю CPU Core i7 (4-ядерний) з гіперточенням і трохи пограв з перекодуваннями відео, що є завданням, яке вимагає великої кількості зв'язку та синхронізації, але має достатньо паралелізм, що ви можете ефективно повно завантажувати систему.
Мій досвід роботи з тим, скільки процесорів призначено для виконання завдання, як правило, з використанням 4-х "додаткових" ядер, рівних еквіваленту приблизно 1 додатковому процесорові вартості процесорної потужності. Додаткові 4 "гіперточені" ядра додають приблизно стільки ж корисної потужності процесора, що і від 3 до 4 "справжніх" ядер.
Зрозуміло, це не є строго справедливим тестом, оскільки всі потоки кодування, ймовірно, змагатимуться за одні й ті ж ресурси в процесорі, але, як на мене, це показало принаймні незначне збільшення загальної потужності процесора.
Єдиним реальним способом показати, чи справді це допомагає, було б одночасно виконати кілька різних тестів типу Integer / Floating Point / SSE в системі з увімкненою та вимкненою гіперрезінуванням та вимкнути, яка потужність обробки доступна в контрольованому середовище.
Це дуже залежить від процесора та навантаження, як говорили інші.
Виміряна продуктивність процесора MP Intel® Xeon® з технологією Hyper-Threading показує підвищення продуктивності до 30% на загальних орієнтирах серверних додатків для цієї технології
(Це здається мені трохи консервативним.)
І є ще одна довша папір (яку я ще не читав) з більшою кількістю номерів . Одне цікаве відхилення від цієї роботи полягає в тому, що гіперточування може зробити тонші повільнішими для деяких завдань.
Бульдозерна архітектура AMD може бути цікавою . Вони описують кожне ядро як ефективно 1,5 ядра. Це свого роду екстремальне багатоядерне або субстандартне багатоядерне, залежно від того, наскільки ви впевнені в його ймовірній продуктивності. Цифри в цьому фрагменті говорять про прискорення коментарів між 0,5x та 1,5x.
Нарешті, продуктивність також залежить від операційної системи. Сподіваємось, ОС буде надсилати процеси до реальних процесорів, віддаючи перевагу гіпертокам, які просто маскуються як процесори. Інакше в двоядерній системі у вас може бути один непрацюючий процесор і одне дуже зайняте ядро з двома обмотками. Здається, я пам'ятаю, що це сталося з Windows 2000, хоча, звичайно, всі сучасні ОС мають належні можливості.