Підсумок
Економіка. Це дешевше і простіше розробити процесор, який має більше ядер, ніж більша тактова частота, оскільки:
Значне збільшення споживання електроенергії. Споживання енергії процесора швидко збільшується в міру збільшення тактової частоти - ви можете подвоїти кількість ядер, що працюють з меншою швидкістю в тепловому просторі, необхідного для збільшення тактової частоти на 25%. Чотириразовий на 50%.
Існують й інші способи збільшення швидкості послідовної обробки, і виробники процесорів добре використовують їх.
Я буду сильно звертатися до відмінних відповідей на це запитання на одному з наших сестер SE сайтів. Тож продовжуйте їх підтримувати!
Обмеження тактової швидкості
Існує кілька відомих фізичних обмежень на тактову частоту:
Час передачі
Час, необхідний електричному сигналу для проходження ланцюга, обмежується швидкістю світла. Це жорстка межа, і немає відомого способу її подорожі 1 . У гігагерц-годинах ми наближаємось до цієї межі.
Однак, ми ще не там. 1 ГГц означає одну наносекунд на тактовий тик. У той час світло може подорожувати 30см. При 10 ГГц світло може подорожувати 3 см. Одне ядро процесора шириною близько 5 мм, тому ми зіткнемося з цими проблемами десь за 10 ГГц. 2
Затримка перемикання
Недостатньо просто врахувати час, який потрібен для переходу сигналу від одного кінця до іншого. Нам також потрібно врахувати час, який потрібен, щоб логічний хвірт в процесорі перейшов з одного стану в інший! Коли ми збільшуємо тактову частоту, це може стати проблемою.
На жаль, я не впевнений у конкретних характеристиках і не можу надати жодної кількості.
Мабуть, перекачування в неї більше енергії може прискорити перемикання, але це призводить до проблем споживання електроенергії та відведення тепла. Крім того, більша потужність означає, що вам потрібні об’ємні трубопроводи, здатні поводитися з нею без пошкоджень.
Розсіювання тепла / споживання електроенергії
Це велике. Цитуючи відповідь fuzzyhair2 :
Останні процесори виготовляються за технологією CMOS. Кожен раз, коли відбувається тактовий цикл, потужність розсіюється. Тому більш висока швидкість процесора означає більше відведення тепла.
У цьому форумі AnandTech є кілька чудових вимірювань , і вони навіть вивели формулу споживання енергії (яка йде рука об руку з виробленим теплом):
Кредит Idontcare
Ми можемо візуалізувати це на наступному графіку:
Кредит Idontcare
Як бачимо, споживання електроенергії (і вироблене тепло) зростає надзвичайно швидко, оскільки швидкість тактової частоти збільшується за певний момент. Це робить непрактичним безмежно збільшувати тактову частоту.
Причина швидкого збільшення споживання електроенергії, ймовірно, пов’язана із затримкою перемикання - недостатньо просто збільшити потужність, пропорційну тактовій частоті; напруга також повинна бути підвищена для підтримки стабільності при більш високих тактових частотах. Це може бути не зовсім правильно; не соромтеся вказувати виправлення в коментарі або редагувати цю відповідь.
Більше ядер?
Так навіщо більше ядер? Ну, я не можу відповісти на це остаточно. Вам доведеться запитати людей у Intel та AMD. Але ви бачите вище, що з сучасними процесорами в якийсь момент збільшувати тактову частоту стає недоцільним.
Так, багатоядерний також збільшує необхідну потужність і тепловіддачу. Але це акуратно уникає часу передачі та проблем із затримкою перемикання. І, як видно з графіку, ви можете легко подвоїти кількість ядер у сучасному процесорі з тією ж тепловою накладкою, що і на 25% збільшення тактової частоти.
Деякі люди це зробили - поточний світовий рекорд розгону просто сором’язливий у 9 ГГц. Але це суттєва інженерна задача зробити це, зберігаючи споживання електроенергії у прийнятних межах. Дизайнери в якийсь момент вирішили, що додавання більшої кількості ядер для виконання більшої роботи паралельно забезпечить більш ефективне підвищення продуктивності в більшості випадків.
Ось звідки приходить економіка - ймовірно дешевше (менше дизайнерського часу, менш складне виготовлення) пройти багатоядерний шлях. І легко продати на ринок - хто не любить новенький окта-ядерний чіп? (Звичайно, ми знаємо, що багатоядерність є досить марною, коли програмне забезпечення не використовує її ...)
У багатоядерності є і зворотний бік: для розміщення додаткового ядра вам потрібно більше фізичного простору. Однак розміри процесорних процесів постійно скорочуються, тому є достатньо місця для розміщення двох копій попереднього дизайну - справжній компроміс не в змозі створити більші, більш складні, єдині ядра. Знову ж таки, збільшення складності основної роботи - це погана справа з дизайнерської точки зору - більша складність = більше помилок / помилок та виробничих помилок. Ми, здається, знайшли щасливе середовище з ефективними сердечниками, які досить прості, щоб не зайняти занадто багато місця.
Ми вже досягли межі кількості ядер, які ми можемо вмістити на одній штампі при поточних розмірах процесу. Ми можемо досягти межі того, наскільки скоро ми можемо скоротити речі. Отже, що далі? Чи потрібно нам більше? На жаль, відповісти важко. Хтось тут ясновидець?
Інші способи підвищення продуктивності
Отже, ми не можемо збільшити тактову частоту. І більше ядер мають додатковий недолік - а саме вони допомагають лише тоді, коли програмне забезпечення, яке працює на них, може ними скористатися.
Отже, що ще ми можемо зробити? Як сучасні процесори настільки швидші, ніж старші з однаковою тактовою частотою?
Тактова швидкість насправді є лише дуже приблизним наближенням до внутрішньої роботи процесора. Не всі компоненти процесора працюють з такою швидкістю - деякі можуть працювати раз на два тики тощо.
Що важливіше - це кількість інструкцій, які ви можете виконати за одиницю часу. Це набагато кращий показник того, скільки може досягти одне ядро процесора. Деякі інструкції; деякі візьмуть один тактовий цикл, інші - три. Поділ, наприклад, значно повільніше, ніж додавання.
Таким чином, ми могли б зробити процесор ефективнішим, збільшивши кількість інструкцій, які він може виконувати за секунду. Як? Ну, ви могли б зробити інструкцію більш ефективною - можливо, зараз поділ займає лише два цикли. Потім є інструкція по конвеєрному транспортуванню . Розбиваючи кожну інструкцію на кілька етапів, можна виконувати інструкції "паралельно" - але кожна інструкція все ще має чітко визначений, послідовний порядок, відповідний інструкціям до і після неї, тому не потрібна підтримка програмного забезпечення, як багатоядерна робить.
Є й інший спосіб: більш спеціалізовані інструкції. Ми бачили такі речі, як SSE, які дають інструкції одночасно обробляти велику кількість даних. Постійно вводяться нові набори інструкцій з подібними цілями. Знову ж таки, вони потребують програмної підтримки та підвищують складність обладнання, але вони забезпечують приємне підвищення продуктивності. Нещодавно з'явився AES-NI, який забезпечує апаратне прискорене шифрування та дешифрування AES, набагато швидше, ніж купа арифметики, реалізованої в програмному забезпеченні.
1 Не обійшлося без поглиблення в теоретичну квантову фізику.
2 Це насправді може бути нижчим, оскільки поширення електричного поля не так швидко, як швидкість світла у вакуумі. Крім того, це лише для прямолінійної відстані - цілком ймовірно, що існує хоча б один шлях, який значно довший, ніж прямий.