Швидка однопотокова продуктивність та дуже висока багатопотокова пропускна здатність - це саме те, що ви отримуєте з процесором, як Xeon E5-2699v4 від Intel .
Це 22-ядерний Бродвелл. Стійка тактова частота становить 2,2 ГГц з усіма активними ядрами (наприклад, кодування відео), але одноядерний макс турбо - 3,6 ГГц.
Отже, виконуючи паралельне завдання, він використовує свій бюджет потужності 145 Вт як 22 6,6 Вт ядер. Але, виконуючи завдання лише з декількома потоками, цей самий бюджет потужності дає змогу декілька ядер турбо до 3,6 ГГц. ( Нижня одноядерна пам'ять та пропускна здатність кеш-пам'яті L3 у великому Xeon означає, що він може працювати не так швидко, як настільний чотирьохядерний на 3,6 ГГц. Однак, одне ядро в настільному процесорі Intel може використовувати набагато більше загальна пропускна здатність пам'яті.)
Номінальна тактова частота 2,2 ГГц є низькою через теплові межі. Чим більше ядер у процесора, тим повільніше вони повинні працювати, коли всі вони активні. Цей ефект не дуже великий у 4 та 8 основних процесорах, про які ви згадуєте у запитанні, оскільки 8 не так багато ядер, і вони мають дуже високий бюджет енергії. Навіть ентузіастичні настільні процесори помітно демонструють цей ефект: Intel Skylake-X i9-7900X Intel є частиною 10c20t з базовим 3.3GHz, max turbo 4.5GHz . Це набагато більше одноядерного турбо-запасу, ніж i7-6700k (4,0 ГГц / 4,2 ГГц турбо без розгону).
Масштабування частоти / напруги (DVFS) дозволяє одній ядрі працювати в широкому діапазоні кривої продуктивності / ефективності. Дивіться також цю презентацію IDF2015 про управління потужністю Skylake , з великою кількістю цікавих деталей про те, що процесори можуть робити ефективно, і торгувати продуктивністю порівняно з ефективністю як статично під час проектування, так і в ході з DVFS.
На іншому кінці спектру процесори Intel Core-M мають дуже низьку стійку частоту, як , наприклад, 1,2 ГГц на 4,5 Вт , але можуть турбо до 2,9 ГГц. При активних кількох ядрах вони будуть запускати свої ядра з більш ефективною тактовою частотою, як і гігантські ксеони.
Вам не потрібна неоднорідна архітектура в стилі big.LITTLE, щоб отримати максимальну користь. Невеликі сердечники в ARM big.LITTLE - це досить хитрі ядра порядку, які не підходять для обчислювальної роботи. Сенс у тому, щоб просто запустити інтерфейс користувача з дуже низькою потужністю. Багато з них не були б чудовими для кодування відео чи іншого серйозного скорочення кількості. ( @ Lưu Vĩnh Phúc знайшов деякі дискусії про те, чому x86 не має великих розмірів . ЛІТТЛ . В основному, витрачати зайвий кремній на дуже малопотужний надповільний ядро, це не варто для типового використання робочого столу / ноутбука.)
тоді як такі програми, як редагування відео, визначаються кількістю ядер. [Чи не було б 2x 4,0 ГГц + 4х 2,0 ГГц краще при багатопотокових робочих навантаженнях, ніж 4х 4 ГГц?]
Це ваше ключове непорозуміння. Ви, здається, думаєте, що однакова кількість загальних годинних тиків на секунду корисніша, якщо поширюватись на більше ядер. Це ніколи не буває. Це більше схоже
cores * perf_per_core * (scaling efficiency)^cores
( perf_per_core
це не те саме, що тактова частота, тому що 3GHz Pentium4 отримає набагато менше роботи за тактовий цикл, ніж 3GHz Skylake.)
Що ще важливіше, дуже рідко ефективність становить 1,0. Деякі заплутані паралельні завдання виконують масштаб майже лінійно (наприклад, компілювання декількох вихідних файлів). Але кодування відео не таке. Для x264 масштабування дуже добре до кількох ядер, але погіршується з більшою кількістю ядер. наприклад, перехід від 1 до 2 ядер майже вдвічі перевищить швидкість, але перехід від 32 до 64 ядер допоможе набагато менше для типового кодування 1080p. Точка, в якій плато швидкості залежить від налаштувань. ( -preset veryslow
робить більше аналізу на кожному кадрі і може тримати більше ядер, ніж -preset fast
).
З великою кількістю дуже повільних сердечників однопоточні частини x264 стануть вузькими місцями. (наприклад, кінцеве кодування біткоїну CABAC. Це еквівалент gzip h.264, і не паралельний.) Маючи декілька швидких ядер, це вирішило б, якби ОС знала, як планувати це (або якщо x264 прикріпив відповідні потоки до швидкі сердечники).
x265 може скористатися більшою кількістю ядер, ніж x264, оскільки у неї є більше аналізу, а дизайн WPP h.265 дозволяє більше паралелізму кодування та декодування. Але навіть за 1080p у вас в певний момент не вистачає паралелізму.
Якщо у вас є кілька відео для кодування, добре робите кілька відео у паралельних масштабах, за винятком конкуренції за спільні ресурси, такі як ємність кешу L3 та пропускна здатність та пропускна здатність пам'яті. Менш швидкі ядра можуть отримати більше користі від тієї ж кількості кешу L3, оскільки їм не потрібно працювати відразу над такою кількістю різних частин проблеми.