Чому у нас є процесори з усіма ядрами з однаковими швидкостями, а не комбінаціями різної швидкості?


79

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

Що стосується того, що є на ринку - всі процесори, здається, мають приблизно однакову швидкість, основні відмінності - це більше потоків або більше ядер.

Наприклад:

  • Intel Core i5-7600K, базова частота 3,80 ГГц, 4 ядра, 4 потоки
  • Intel Core i7-7700K, базова частота 4,20 ГГц, 4 ядра, 8 потоків
  • AMD Ryzen 5 1600X, базова частота 3,60 ГГц, 6 ядер, 12 ниток
  • AMD Ryzen 7 1800X, базова частота 3,60 ГГц, 8 ядер, 16 потоків

То чому ми бачимо цю схему збільшення ядер, коли всі ядра мають однакову тактову частоту?

Чому у нас немає варіантів із різною швидкістю тактової частоти? Наприклад, два "великих" ядра і безліч малих ядер.

Для прикладу, замість, скажімо, чотирьох ядер на 4,0 ГГц (тобто 4х4 ГГц ~ 16 ГГц максимум), як щодо процесора з двома ядрами, що працюють на скажімо 4,0 ГГц, і скажімо, чотири ядра, що працюють на частоті 2 ГГц (тобто 2x4,0 ГГц + 4х2,0 ГГц ~ максимум 16 ГГц). Чи не буде другий варіант настільки ж хорошим при однорядних навантаженнях, але потенційно кращий при багатопотокових навантаженнях?

Я задаю це питання загальним моментом - не конкретно щодо тих процесорів, які я перераховував вище, або щодо будь-якого конкретного навантаження. Мені просто цікаво, чому така модель є.


15
Існує багато мобільних телефонів із швидкими та повільними ядрами, і майже на всіх сучасних багатоядерних серверах тактова частота процесорних частот тактова частота залежить від навантаження, деякі навіть вимикають ядра, коли вони не використовуються. На комп'ютері загального призначення, де ви не проектуєте для економії енергії, однак, маючи лише два типи ядер (CPU та GPU), це просто робить платформу більш гнучкою.
eckes

5
Перш ніж планувальник потоків міг зробити розумний вибір, яке ядро ​​використовувати, потрібно було б визначити, чи може процес скористатися кількома ядрами. Робити це надійно було б дуже проблематично і схильне до помилок. Особливо, коли це може динамічно змінюватися відповідно до потреб програми. У багатьох випадках планувальнику доведеться зробити найоптимальніший вибір, коли використовується найкраще ядро. Ідентичні ядра спрощують справи, забезпечують максимальну гнучкість і, як правило, мають найкращі показники.
LMiller7

33
Не можна обгрунтовано сказати, що швидкість тактової частоти є додатковою в описаному вами способі. Наявність чотирьох ядер, що працюють на частоті 4 ГГц, не означає, що у вас є "загальний" 16 ГГц, а також не означає, що цей 16 ГГц можна розділити на 8 процесорів, що працюють на частоті 2 ГГц, або 16 процесорів, що працюють на частоті 1 ГГц.
Боб Джарвіс

16
Передумова питання просто неправильна. Сучасні процесори чудово здатні працювати з ядрами з різною швидкістю
phuclv

Відповіді:


85

Це відомо як гетерогенна багатопроцесорна ( HMP ) і широко використовується мобільними пристроями. У пристроях на основі ARM, які реалізують big.LITTLE , процесор містить ядра з різними профілями продуктивності та потужності, наприклад, деякі ядра працюють швидко, але забирають багато енергії (швидша архітектура та / або більш високі такти), а інші енергоефективні, але повільні ( повільна архітектура та / або менші такти). Це корисно, оскільки споживання електроенергії, як правило, непропорційно збільшується в міру збільшення продуктивності, коли ви пройдете певний момент. Ідея тут - отримати продуктивність, коли вона вам потрібна, і час автономної роботи, коли цього не потрібно.

На робочих платформах споживання електроенергії значно менше, тому це справді не потрібно. Більшість застосувань очікують, що кожне ядро ​​має подібні експлуатаційні характеристики, а процеси планування для систем HMP набагато складніші, ніж планування для традиційних систем SMP. (Windows 10 технічно має підтримку HMP, але в основному призначений для мобільних пристроїв, які використовують ARM big.LITTLE.)

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

Хоча є кілька настільних процесорів, які мають одне або два ядра, здатні працювати швидше, ніж інші, ця можливість наразі обмежена певними процесорами Intel високого класу (як Turbo Boost Max Technology 3.0) і передбачає лише невеликий приріст продуктивності для тих сердечників, які можуть працювати швидше.


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

Візьміть гіпотетичний процесор з двома швидкими ядрами Kaby Lake (Core 7-го покоління) та вісьмома повільними ядрами Goldmont (Atom). У вас буде всього 10 ядер, і сильнопоточні робочі навантаження, оптимізовані для цього типу процесорів, можуть побачити підвищення продуктивності та ефективності в порівнянні з звичайним чотириядерним процесором Kaby Lake . Однак різні типи ядер мають різно різний рівень продуктивності, а повільні ядра навіть не підтримують деякі інструкції, які підтримують швидкі ядра, наприклад, AVX . (ARM уникає цієї проблеми, вимагаючи як великих, так і LITTLE ядер для підтримки однакових інструкцій.)

Знову ж таки, більшість багатопотокових програм на базі Windows припускають, що кожне ядро ​​має однаковий або майже однаковий рівень продуктивності і може виконувати однакові інструкції, тому такий тип асиметрії, ймовірно, призведе до меншої за ідеальну продуктивність, можливо, навіть до збоїв, якщо він використовує інструкції, не підтримувані повільними ядрами. Хоча Intel може змінювати повільні ядра, щоб додати розширену підтримку інструкцій, щоб усі ядра могли виконувати всі інструкції, це не вирішило б проблем із підтримкою програмного забезпечення для різнорідних процесорів.

Інший підхід до дизайну додатків, ближчий до того, про що ви, напевно, думаєте у своєму питанні, використовував би GPU для прискорення високопаралельних частин додатків. Це можна зробити за допомогою таких API, як OpenCL та CUDA . Що стосується рішення з одним мікросхемою, AMD сприяє апаратній підтримці прискорення графічного процесора в своїх APU, які поєднують традиційний процесор і високоефективний інтегрований графічний процесор на той же мікросхемі, що і гетерогенна архітектура системи , хоча це не спричиняє значного поширення галузі назовні. кількох спеціалізованих додатків.


1
У Windows вже є поняття "Програми", "Фонові процеси" та "Процеси Windows". Отже, це не поширюється на апаратний рівень?
Джеймі

2
@Jamie "Фоновий" процес отримує менші часові відрізки і, швидше за все, буде перерваний. Windows 10 певною мірою враховує системи HMP, хоча поки що не так багато інформації про те, як.
Боб

Тож я думаю, що після редагування @bwDraco в значній мірі відповів на мене. Якби був «змішаний» процесор, він легко міг би підтримувати той самий набір інструкцій, якби він був побудований таким чином, тож нам би знадобився якийсь планувальник, щоб вибрати правильне ядро. Я думаю, що справді програми, які отримують користь від переходу на багато маленьких ядер, ймовірно, виграють ще більше від переходу на багато та багато справді маленьких ядер. Таким чином, ми маємо прискорення GPU.
Джеймі

3
Зауважте, що випадок GPU не торгує 2 великими ядрами на 10 малих та повільних ядер, а скоріше (дуже грубо) еквівалент торгівлі 2 великими ядрами на 1024 малих та повільних ядер. Масивно паралельні, а не просто трохи паралельніші.
Якк

4
Intel, можливо, може отримати ядро ​​Goldmont для запуску інструкцій AVX2 без зайвого кремнію (повільно, розшифровуючи до пар 128b ops). Knight's Landing (Xeon Phi) має на основі SilverX сердечники з AVX512, тому не так, як неможливо змінити Silvermont. Але KNL додає виконання замовлень для векторних інструкцій, в той час як звичайний Silver / Goldmont робить лише OOO для цілого числа, тому вони, ймовірно, хочуть розробити його ближче до Goldmont, ніж KNL. У будь-якому разі, набори Інс не є справжньою проблемою. Саме підтримка ОС і невелика вигода є справжніми перешкодами для витрачання на площині низької потужності.
Пітер Кордес

68

Що ви запитуєте, чому в сучасних системах використовується симетрична багатопроцесорна, а не асиметрична багатопроцесорна .

Асиметричну багатопроцесорну систему використовували в старі часи, коли комп'ютер був величезним і розміщувався на декількох одиницях.

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

Існує також обмеження годин, яке регулює цикли процесора та доступ до оперативної пам'яті. Це стане неможливим при змішуванні процесорів різної швидкості. Експериментальні комп'ютери без годинника існували і були навіть досить швидкими, але складність сучасного обладнання накладала більш просту архітектуру.

Наприклад, сердечники Sandy Bridge та Ivy Bridge не можуть працювати одночасно з різною швидкістю, оскільки шина кеша L3 працює з тією ж тактовою швидкістю, що і сердечники, тому для запобігання проблем із синхронізацією всі вони повинні або працювати з цією швидкістю. або бути припаркованим / відключеним (посилання: архітектура Sandy Bridge від Intel ). (Також перевірено в коментарях нижче для Skylake.)

[EDIT] Деякі люди помилилися моєю відповіддю, сказавши, що змішувати процесори неможливо. На їхню користь я констатую: Змішування різних процесорів не виходить за межі сучасних технологій, але не робиться - питання "чому ні". Як було сказано вище, це було б технічно складно, тому коштує дорожче і за надто малий фінансовий прибуток, або не вимагає, тому виробників це не цікавить.

Ось відповіді на деякі коментарі нижче:

Turbo boost змінює швидкості процесора, щоб їх можна було змінити

Turbo boost відбувається за допомогою прискорення годинника та зміни деяких множників, саме це і роблять люди при розгоні, за винятком того, що апаратне забезпечення це робить для нас. Годинник поділяється між ядрами одного і того ж процесора, тому це прискорює рівномірно весь ЦП та всі його ядра.

Деякі телефони мають більше одного процесора різної швидкості

Такі телефони, як правило, мають власні стеки програмного забезпечення та програмного забезпечення, пов'язані з кожним процесором, більше, як два окремих процесора (або як CPU і GPU), і їм не вистачає єдиного перегляду системної пам'яті. Цю складність складно програмувати, і тому асиметрична багатопроцесорна робота була залишена в мобільній царині, оскільки вона вимагає розробки програмного забезпечення наближеного до апаратного рівня програмного забезпечення, яке уникає ОС настільних комп'ютерів загального призначення. Це причина, що такі конфігурації не знайдені в ПК (за винятком CPU / GPU, якщо ми досить розтягнемо визначення).

Мій сервер з 2x Xeon E5-2670 v3 (12 ядер з HT) на даний момент має ядра на 1,3 ГГц, 1,5 ГГц, 1,6 ГГц, 2,2 ГГц, 2,5 ГГц, 2,7 ГГц, 2,8 ГГц, 2,9 ГГц та багато інших швидкостей.

Ядро або є активним, або не працює. Всі активні ядра одночасно працюють з однаковою частотою. Те, що ви бачите, - це лише артефакт часу або усереднення. Я також зазначив, що Windows довго не паркує ядро, а окремо паркує / розпаковує всі ядра набагато швидше, ніж частота оновлення Resource Monitor, але я не знаю причину такої поведінки, яка, ймовірно, позаду вище зауваження.

Процесори Intel Haswell мають вбудовані регулятори напруги, які дозволяють використовувати окремі напруги та частоти для кожного ядра

Індивідуальні регулятори напруги відрізняються від тактової частоти. Не всі ядра однакові - деякі швидші. Швидші сердечники отримують трохи менше енергії, створюючи запас для збільшення потужності, відданої слабшим ядрам. Основні регулятори напруги будуть встановлені якомога менше, щоб підтримувати поточну тактову частоту. Блок управління живленням центрального процесора регулює напруги і, в разі необхідності, замінить запити на ОС для ядер, що відрізняються за якістю. Короткий зміст: Окремі регулятори призначені для того, щоб усі ядра працювали економно з однаковою тактовою частотою, а не для встановлення швидкості окремих кернів


3
Ага. більше скорочення і до суті. +1
Хеннес

6
@harrymc є блоки синхронізаторів, які прекрасно керують ним; DRAM працює повільніше, ніж основна швидкість, і ви можете мати ядра Intel, що динамічно працюють на різних швидкостях на одній мікросхемі.
pjc50

10
Процесори серії Core Core працюють постійно з різною швидкістю на одній штампі.
Нік Т

9
Єдине існування архітектури big.LITTLE та підвищення рівня незалежних годин, доводить вас неправильно. Гетерогенна багатопроцесорність є основною. Це може бути зроблено, то це буде зроблено в телефонах, але по яким - то причин не в настільних комп'ютерах.
Agent_L

9
@Agent_L: Причина - складність. Настільні процесори вже досить дорогі. Тому я повторюю: все можливо, але актуальне питання, чому це не робиться, а не чи можна це зробити. Не нападайте на мене так, ніби я стверджував, що це неможливо - все, що я говорю, - це занадто складно і дорого, і за надто малий прибуток, щоб зацікавити виробників.
harrymc

46

Чому у нас немає варіантів із різною швидкістю тактової частоти? тобто. 2 "великих" ядра і багато дрібних сердечників.

Можливо, телефон у вашій кишені займається саме таким розташуванням - ARM big.LITTLE працює точно так, як ви описали. Існує навіть не лише різниця в швидкості тактової частоти, вони можуть бути абсолютно різними типами ядра - як правило, повільніше тактові частоти навіть "тупіші" (відсутність виконання поза замовлення та інших оптимізацій процесора).

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

Ідеальною схемою є виконання некритичних в часі фонових завдань або відносно невеликих інтерактивних завдань на «маленьких» ядрах і будити «великих» лише для великих, довгих обчислень (де додатковий час, витрачений на маленькі ядра, закінчується їжте більше акумулятора) або для середніх інтерактивних завдань, коли користувач відчуває млявість на маленьких ядрах.

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

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


Натомість вибір Intel - мати меншу кількість однакових інтелектуальних та швидких ядер, але з дуже агресивним масштабуванням частоти. Коли процесор зайнятий, він швидко піднімається до максимальної тактової частоти, робить роботу найшвидше, а потім зменшує його, щоб повернутися до режиму найнижчого енергоспоживання. Це не накладає особливого навантаження на планувальника і уникає поганих сценаріїв, описаних вище. Звичайно, навіть у режимі низького тактового режиму ці ядра є «розумними», тому вони, мабуть, споживають більше, ніж низькочастотні «дурні» великі.ЛІТЛІ ядра.


1
Евристика повинна бути досить простою. Будь-який мимовільний перемикач завдань (використання повного часового відрізка) є свідченням того, що повільний процесор недоцільний для завдання. Дуже низьке використання та всі добровільні комутатори завдань свідчать про те, що завдання можна перенести на повільний процесор.
Р ..

3
Інша проблема полягає в тому, що 4 дурні ядра 2 ГГц можуть мати більше розміру штампу, ніж 2 розумні ядра 4 ГГц, або вони можуть бути меншими і забирати набагато менше енергії, ніж 4 ГГц ядра, але працювати також набагато повільніше
phuclv

2
@ R .: відповідно до принципу, я погоджуюся з вами, але навіть увімкнувши якусь базову підтримку планувальника для цього, я побачив смішне стрижневе ядро ​​на платі ARM, яку я використовував, тому має бути щось інше. Крім того, більшість "звичайних" багатопотокових програм написано з урахуванням SMP, тому нетипово бачити пули потоків такими ж, як загальна кількість ядер, і завдання затягуються на повільні ядра.
Маттео Італія

1
@Ramhound: 10-ядерна частина потужністю 120 Вт має бюджет потужності 12 Вт на ядро ​​(за винятком одноядерного турборежиму). Ось чому найвищі одноядерні тактові частоти знаходяться у чотирьохядерних частинах, де, наприклад, i7-6700k Intel має бюджет потужності 91 Вт на 4 ядра: 22,75 Вт на ядро, підтримуваний усіма активними ядрами (при 4,0 ГГц навіть при AVX2 + FMA навантаження як Prime95). І тому одноядерний запас Turbo - це лише зайвий 0,2 ГГц, порівняно з 22-ядерним Broadwell E5-2699v4 з базовою частотою 2,2 ГГц при 145 Вт, 3,6 ГГц турбо.
Пітер Кордес

@Ramhound: додав відповідь, яка на це розширюється. Здається , що багатоядерний Xeon саме те, що шукає ОП: експлуатуйте якомога більше ядер з низькою потужністю або витрачайте багато енергії, працюючи за допомогою однониткової швидкості, коли це можливо (турбо).
Пітер Кордес

14

Продуктивність в іграх, як правило, визначається швидкістю однієї основної,

У минулому (ігри епохи DOS): Правильно.
У ці дні це вже не так. Багато сучасних ігор є потоковими і користуються кількома ядрами. Деякі ігри вже задоволені 4 ядрами, і ця кількість, здається, з часом зростає.

тоді як такі програми, як редагування відео, визначаються кількістю ядер.

Сорт справжній.

Кількість ядер * разів швидкість роботи серцевини * ефективність.
Якщо ви порівнюєте одне ідентичне ядро ​​з набором однакових ядер, то ви здебільшого правильні.

Що стосується того, що є на ринку - всі процесори, здається, мають приблизно однакову швидкість, основні відмінності - це більше потоків або більше ядер. Наприклад:

Intel Core i5 7600k, Base Freq 3,80 ГГц, 4 ядра Intel Core i7 7700k, Base Freq 4,20 ГГц, 4 ядра, 8 ниток AMD Ryzen 1600x, Base Freq 3,60 ГГц, 6 ядер, 12 ниток AMD Ryzen 1800x, Base Freq 3,60 ГГц, 8 серцевин, 16 ниток

Порівнювати різні архітектури небезпечно, але добре ...

То чому ми бачимо цю схему збільшення ядер, коли всі ядра мають однакову тактову частоту?

Частково тому, що ми натрапили на бар’єр. Збільшення тактової частоти додатково означає більше необхідної енергії та більше тепла. Більше тепла означало ще більше необхідної енергії. Ми так і пробували, в результаті вийшов жахливий пентий 4. Гарячий і владний голодний. Важко охолонути. І навіть не швидше, ніж розумно розроблений Pentium-M (A P4 на 3,0 ГГц був приблизно таким же швидким, як P-mob на частоті 1,7 ГГц).

З того часу ми здебільшого відмовилися від натискання на тактову частоту і замість цього ми будуємо розумніші рішення. Частина цього полягала в тому, щоб використовувати декілька ядер над необробленою тактовою частотою.

Наприклад, одне ядро ​​4 ГГц може забирати стільки енергії і генерувати стільки ж тепла, скільки три ядра 2 ГГц. Якщо ваше програмне забезпечення може використовувати декілька ядер, це буде набагато швидше.

Не все програмне забезпечення могло це зробити, але сучасне програмне забезпечення, як правило, може.

Що частково відповідає чому ми маємо чіпи з декількома ядрами і чому ми продаємо чіпи з різною кількістю ядер.

Щодо тактової швидкості, я думаю, я можу визначити три моменти:

  • Процесори з низькою потужністю мають сенс для досить багатьох випадків, коли швидкість сировини не потрібна. Наприклад, контролери домену, установки NAS, ... Для цього ми маємо центральні процесори нижчої частоти. Іноді навіть із більшою кількістю ядер (наприклад, 8-кратний низькошвидкісний процесор має сенс для веб-сервера).
  • В іншому ми зазвичай знаходимося біля максимальної частоти, яку ми можемо зробити, без того, як наш сучасний дизайн стає занадто гарячим. (скажімо, від 3 до 4 ГГц із сучасними конструкціями).
  • І поверх цього ми робимо бінінг. Не всі процесори генеруються однаково. Деякі процесори погано оцінюють або погано забивають частину своїх фішок, вимкнено ці частини та продаються як інший продукт.

Класичним прикладом цього був 4-ядерний чіп AMD. Якщо одне ядро ​​було зламано, його було відключено та продано як 3-ядерний чіп. Коли попит на ці 3 ядра був високим, навіть деякі 4 ядра продавались як 3-ядерна версія, і при правильному злому програмного забезпечення ви могли повторно включити 4-е ядро.

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

А потім є виробництво та маркетинг, і це псує це ще більше.

Чому у нас немає варіантів із різною швидкістю тактової частоти? тобто. 2 "великих" ядра і багато дрібних сердечників.

Так. У місцях, де це має сенс (наприклад, мобільні телефони), ми часто маємо SoC з повільним ядром CPU (низька потужність) і декількома швидшими ядрами. Однак у типовому настільному ПК це не робиться. Це зробило б налаштування набагато складнішим, дорожчим, і немає батареї для зливу.


1
Як я зазначив, "я задаю це питання загальним моментом - не конкретно про ті перелічені вище програми," і була причина, що я наводив два приклади з кожної архітектури. Якщо ми розглядаємо два сценарії як 1. всі великі ядра, і 2. два великі та два малі - то, я думаю, всі моменти, які ви згадуєте, стосуються обох випадків - тобто. теоретична максимальна швидкість одноядерної, бінінг мікросхем, зняття знов, коли не використовується.
Джеймі

Ядро однієї максимальної швидкості - не все так цікаво, коли вона не вибирається. Планувальників потрібно буде оновити, щоб дійсно віддати перевагу високошвидкісним ядрам.
Hennes

10

Чому у нас немає варіантів із різною швидкістю тактової частоти? Наприклад, два "великих" ядра і безліч малих ядер.

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

У нас вже є сердечники, які можуть сповільнитись для економії енергії. Який би сенс обмежувати їх пікові показники?


2
Це я думав. Навіщо навмисно використовувати деякі неповноцінні компоненти, коли всі вони могли бути елітарними? +1.
MPW

1
@MPW Вибір полягає не в тому, щоб створити велике ядро, а потім стерти його, це між усіма великими по відношенню до кількох великих і безлічі малих ядер. Оскільки у вас є два конкуруючих сценарії - однопоточна та багатопотокова продуктивність - чому б не збільшити максимум обох? Чи знаємо ми, що ви не можете виготовити чіп з кількома великими і безліччю маленьких ядер?
Джеймі

@Jamie Ви можете створити мікросхему з кількома великими і безліччю маленьких ядер. Але менші ядра не працюватимуть із меншою тактовою частотою.
Девід Шварц

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

@ Джемі, я не розумію, що ти говориш. Весь процесор повинен бути виготовлений з однаковим процесом виготовлення, а максимальна тактова частота є значною мірою характеристикою процесів виготовлення. Ядра , які вимагають більш низьку тактову частоту на тому ж рівні виготовлення , як правило , бути більш складним і займають більше місця, інакше навіщо б вони вимагають більш низьку тактову частоту?
Девід Шварц

9

Чому у нас немає варіантів із різною швидкістю тактової частоти? Наприклад, два "великих" ядра і безліч малих ядер.

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

Я начебто здивований багатьма іншими відповідями. Сучасні процесори можуть і робити це. Ви можете перевірити це, наприклад, відкривши CPU-Z на смартфоні - мій Google Pixel цілком здатний працювати з різними ядрами з різною швидкістю:

Це номінально 2,15 ГГц, але два ядра - 1,559 ГГц, а два - 1,132 ГГц.

Насправді, з 2009 року основні процесорні процесори Intel мали логіку підвищити рівень окремих ядер, одночасно розбиваючи інші ядра, дозволяючи покращити одноядерні показники, залишаючись у бюджеті TDP: http://www.anandtech.com/show/2832/4

Новіші процесори Intel із "Favored Core" (термін маркетингу Intel) мають кожне ядро, яке характеризується на заводі, причому найшвидші ядра мають можливість підвищити надмірну кількість: http://www.anandtech.com/show/11550/the-intel -skylakex-огляд-core-i9-7900x-i7-7820x-і-i7-7800x-випробуваний / 7

Бульдозерські мікросхеми AMD мали примітивну версію цього: http://www.anandtech.com/show/4955/the-bulldozer-review-amd-fx8150-ested/4

Мабуть , це має і нові мікросхеми Ryzen AMD , хоча тут прямо не вказано: http://www.anandtech.com/show/11170/the-amd-zen-and-ryzen-7-review-a-deep-dive -on-1800x-1700x-і-1700/11


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

3
Це не я читав питання. Питання не згадує архітектурно різних ядер, незважаючи на вживання слів "великий" і "малий". Він орієнтований виключно на тактову частоту.
Грант Ву

8

У сучасній системі ви часто робите у всіх ядер , що працюють на різних швидкостях. Згортання ядра, яке не використовується великою мірою, зменшує споживання енергії та теплову потужність, що добре, а такі функції, як "turbo boost", дозволяють одному або двом ядрам працювати значно швидше, поки інші ядра простоюють, а отже, і споживання енергії і тепловіддача всього пакету не надто висока. Що стосується мікросхеми з такою функцією, швидкість, яку ви бачите в лістингу, - це найвища швидкість, яку ви можете отримати з усіма ядрами одночасно. І чому б усі ядра мали однакову максимальну швидкість? Ну, вони всі однакової конструкції, на одній фізичній мікросхемі, закладеній тим самим напівпровідниковим процесом, так чому вони повинні бути різними?

Причина, що всі ядра однакові, полягає в тому, що це полегшує тему, яка працює на одному ядрі в одній точці, і починає працювати на іншому ядрі в іншій точці. Як було сказано в іншому місці, є загальновживані мікросхеми, які не відповідають цьому принципу однакових ядер, а саме процесори ARM "big.LITTLE". Хоча, на мій погляд, найважливіша різниця між "великими" і "маленькими" ядрами не є тактовою швидкістю ("великі" сердечники, як правило, більш вигадливі, ширші, більш спекулятивні ядра, які отримують більше інструкцій за такт за вищу ціну споживання енергії, тоді як "маленькі" сердечники ближче до єдиного випуску ARM-корінь, що мають порядок, малопотужні), оскільки вони "

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


7

Швидка однопотокова продуктивність та дуже висока багатопотокова пропускна здатність - це саме те, що ви отримуєте з процесором, як 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, оскільки їм не потрібно працювати відразу над такою кількістю різних частин проблеми.


4

Незважаючи на те, що можна створити комп'ютери, які мають різні частини, що працюють з різною незалежною швидкістю, арбітраж ресурсів часто вимагає можливості швидко вирішити, який запит подати на обслуговування, що, в свою чергу, вимагає знати, чи може якийсь інший запит надійти досить швидко, щоб отримати пріоритет . Вирішити такі речі, як правило , досить просто. Щось на кшталт схеми "вікторина" може бути реалізовано з двома транзисторами. Проблема полягає в тому, що швидко і надійно приймати рішенняоднозначно важко. Єдиний практичний спосіб зробити це у багатьох випадках - використовувати рішення, яке називається "синхронізатором", яке дозволяє уникнути двозначностей, але вводить затримку на два цикли. Можна було б розробити кешований контролер, який би надійно мав арбітраж між двома системами з окремими тактовими часами, якби хтось готовий допустити затримку на два цикли на кожній операції, щоб визначити, хто виграв арбітраж. Такий підхід був би менш корисним, якщо хочеться, щоб кеш негайно відповідав на запити за відсутності суперечок, оскільки навіть безспорні запити все-таки матимуть затримку на два цикли.

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


4

Настільні комп'ютери вже роблять це.

Вони мають (набір) процесор (и), з одночасно активними 1-72 потоками та (набір) GPU (ив) з 16-7168 обчислювальними одиницями.

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

Це комп'ютер з кількома великими ядрами і безліччю малих ядер.

Взагалі торгувати одним ядром на X FLOPS за три ядра на X / 2 FLOPS не варто; але торгувати одним ядром на X FLOPS за сто ядер на X / 5 FLOPS дуже варто.

Програмуючи для цього, ви генеруєте дуже різний код для процесора та для GPU. Багато роботи робиться для розподілу навантаження, щоб GPU отримував завдання, які найкраще виконуються в GPU, а CPU отримує завдання, які найкраще виконуються в CPU.

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

Тепер мобільні пристрої роблять це з іншої причини. У них є низькопотужні ядра, які значно повільніше, але використовують і значно меншу потужність на одиницю обчислення. Це дозволяє їм розтягувати ресурс акумулятора набагато довше, коли не виконують інтенсивних завдань процесора. Тут ми маємо різний вид "великої виплати"; не продуктивність, а енергоефективність. Потрібно ще багато роботи з боку ОС, а можливо, і з програми програми, щоб зробити це правильно; тільки велика розплата зробила це вартим.


-1

Причина, що загальні системи мають ядра з однаковою швидкістю, - це проста математична задача. Час введення та виведення (з оптимізаціями) на основі одного набору констант (які можна масштабувати = множимо на кількість одиниць).

І хтось тут сказав, що мобільні пристрої мають багатопроцесорні системи з різною швидкістю. Це просто неправда. Його не є центральним процесором, якщо він не є блоком центральної обробки; незалежно від того, що каже виробник, це є чи ні. у цьому випадку [не процесор] його просто "пакет підтримки".


-10

Я не думаю, що ОП розуміє основну електроніку. Для всіх комп'ютерів потрібна одна річ, щоб вони функціонували - годинник. Цикли годин, породжені внутрішнім годинником, є метроном для руху всіх даних. Для досягнення синхронності всі операції повинні бути прив’язані до загального годинника. Це справедливо як для внутрішнього виконання даних на ізольованому комп'ютері, так і для цілих мереж.

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

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


1
Я не знаю, звідси моє запитання. Порівнюючи Intel i5 7600 з i5 7600k, ми бачимо, що базовий годинник становить 100 МГц для обох, а різниця - це співвідношення ядра. Отже, у вас можуть бути два ядра з однаковим базовим тактовим частотою 100 МГц, але з різними коефіцієнтами ядра - чи цей сценарій порушує вимогу синхронічності?
Джеймі

4
Так, це занадто сильно спрощує; насправді це не так, що всі операції повинні бути прив’язані до одного і того ж годиннику, існує багато доменних годин, і цілком можливо запускати різні ядра з однаковою швидкістю. Годинник автобуса не такий, як внутрішній годинник тощо
pjc50

11
Сучасні мікросхеми вже мають кілька тактових доменів (навіть RTC дешевого та німого мікроконтролера зазвичай працює на окремому домені 32,7 кГц). Вам просто потрібно синхронізувати між доменами годин. Навіть за допомогою звичайного годинника ви могли поділити його на 2, 4, 8 тощо.
Майкл

1
Все правда. Але це все ще знижує ефективність експлуатації. І це завжди мета щодо ефективності. Це був мій пункт. Звичайно, ви можете це зробити. Але ви будете брати участь у виконанні.
RyRoUK

"Знижує продуктивність" - порівняно з чим? Ви припускаєте базовий стан, де у вас є n процесорів, що працюють з одним і тим же годинником. Це не повинно бути так. Процесор X + процесор Y є більш потужним / гнучким рішенням, ніж сам процесор X, незалежно від того, що саме є процесор Y.
hmijail
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.