Чому чіпи містять все більше ядер? Чому б не виготовити більший одноядерний процесор? Чи простіше у виробництві? Чи дозволити програмам багатопотокові, використовуючи окремі ядра?
Чому чіпи містять все більше ядер? Чому б не виготовити більший одноядерний процесор? Чи простіше у виробництві? Чи дозволити програмам багатопотокові, використовуючи окремі ядра?
Відповіді:
Тенденція до декількох ядер - це інженерний підхід, який допомагає дизайнерам процесора уникнути проблеми споживання електроенергії, яка виникає із все більшим масштабуванням частоти. Коли швидкість процесора зросла в діапазоні 3-4 ГГц, кількість електричної потужності, необхідної для швидшого руху, стала непомірною. Технічні причини цього є складними, але такі фактори, як втрати тепла та струм витоку (потужність, яка просто проходить через схему, не роблячи нічого корисного), обидва зростають швидше, коли частота збільшується. Хоча це, безумовно, можливо побудувати 6 ГГц загального призначення x86 CPU, але це не доведено економічно зробити це ефективно. Ось чому почався перехід до багатоядерних і саме тому ми побачимо, що ця тенденція триватиме принаймні до тих пір, поки питання паралелізації не стануть непереборними.
В якості практичного прикладу E5640 Xeon (4 ядра при 2,66 ГГц) має потужність 95 Вт, тоді як для L5630 (4 ядра при 2,13 ГГц) потрібно лише 40 Вт. Це на 137% більше електроенергії на 24% більше потужності процесора для процесорів, які здебільшого сумісні з функціями. X5677 піднімає швидкість до 3,46 ГГц з деякими додатковими функціями, але це лише на 60% більша потужність обробки на 225% більше електричної потужності.
Тепер порівняйте X5560 (2,8 ГГц, 4 ядра, 95 Вт) з новітньою X5660 (2,8 ГГц, 6 ядер, 95 Вт) і в розетці є 50% додаткової обчислювальної потужності (можливо, припускаючи, що закон Амдала добрий для нас зараз), не вимагаючи додаткової електричної потужності. Процесори серії AM00 серії 6100 бачать аналогічні результати в сукупній продуктивності протягом серії 2400 \ 8400, зберігаючи при цьому електроенергію на рівні.
Для однопотокових завдань це проблема, але якщо ваші вимоги полягають у тому, щоб доставити велику кількість сумарної потужності процесора розподіленому кластеру обробки або кластеру віртуалізації, це розумний підхід. Це означає, що для більшості серверів сьогодні масштабування кількості ядер у кожному процесорі є набагато кращим підходом, ніж спроба побудувати швидше \ краще одноядерний процесор.
Тенденція триватиме деякий час, але виникають проблеми, і постійно зменшувати кількість ядер непросто (утримувати пропускну здатність пам’яті досить високу, а керування кешами стає набагато складніше, оскільки кількість ядер збільшується). Це означає, що поточне досить вибухонебезпечне зростання кількості ядер на розетку доведеться сповільнитись через пару поколінь, і ми побачимо інший підхід.
Це стало занадто важко, щоб зробити їх корисно швидшими.
Проблема полягає в тому, що вам потрібно працювати над купою інструкцій одразу, поточний процесор x86 має одразу 80 та більше інструкцій, і, здається, це межа, як це потрапило з P4 , Pentium Pro зробив 40 у 1995 році. Типові потоки інструкцій непередбачувані (ви повинні відгадати гілки, доступ до пам’яті тощо), щоб зробити виконання відразу декількома інструкціями (486 зробив 5, Pentium зробив 10, ледве) .
Тому, хоча ви можете зробити їх ширшими (більш функціональні одиниці для виконання кожної інструкції), довші (більш глибокі трубопроводи, щоб приховати затримку), це, здається, не приносить нічого хорошого. І ми, здається, також вдарилися по стіні з тактовою швидкістю. І ми все ще переганяємо пам’ять. Тож поділ на багато процесорів здається виграшним. Крім того, вони можуть ділитися кешами.
Тут є трохи більше, але це зводиться до того, що звичайні програми не можуть запускатися значно швидше на будь-якому технічному забезпеченні, яке ми можемо уявити, як проектувати та будувати.
Тепер, якщо передбачуваність не є проблемою, наприклад, багато наукових проблем та графіки (вони часто зводяться до множення цього набору чисел на цей набір чисел), це не так, і, отже, популярність IA64 Intel ( Itanium) та графічні процесори, які просто роблять швидше, але вони не допоможуть вам краще запустити Word.
Обчислювальна потужність і тактова частота одного процесора досягли свого піку кілька років тому, створити більш потужні та / або швидші процесори, ніж поточні, просто непросто; тож основні виробники процесорів (Intel, AMD) перейшли на стратегію і перейшли на багатоядерні. Це, звичайно, вимагає набагато більше роботи розробників додатків, щоб використати всю потужність багатозадачності: програма, що працює над одним завданням, просто не отримує ніякої користі від багатоядерного процесора (хоча система отримує загальний бонус, оскільки він не блокується, якщо один процес вимагає використання одного центрального процесора на 100%).
Про фізичну архітектуру (багатоядерні процесори замість декількох одноядерних) ... слід запитати Intel. Але я впевнений, що це має щось спільне з материнськими платами, що мають один роз'єм процесора, що набагато простіше проектувати та виготовляти, ніж плати з декількома.
Щоб збільшити тактову швидкість, кремнієві транзистори на мікросхемі повинні мати можливість швидше перемикатися. Ці більш високі швидкості вимагають більш високих вхідних напруг та виробничих напівпровідникових процесів, що призводить до більш високих витоків , що збільшує споживання енергії та тепловіддачу. Ви зрештою досягнете точки, коли більше не зможете збільшувати тактову частоту, не вимагаючи надмірної кількості енергії або використовуючи екзотичні рішення для охолодження.
Для ілюстрації цієї проблеми я порівняю два сучасних процесори AMD. AMD FX-9590 здатний досягти тактової частоти до 5 ГГц поза коробкою, але працює при напрузі в ядрі до 1.912 В, що надзвичайно високо для мікросхема 32 нм, і розсіює шалені 220 Вт тепла. FX-8350, який базується на тій же матриці, працює на максимумі 4,2 ГГц, але працює на максимумі 1,4 В і розсіює 125 Вт.
Як результат, замість того, щоб намагатися додатково збільшувати годинник, інженери прагнули змусити мікросхеми більше працювати швидше іншими способами, включаючи проектування їх для запуску декількох процесів одночасно - отже, багатоядерні процесори.
Закон Мура . В основному процесори не можуть бути більш швидкими (частота потрапляє 3 ГГц 5 років тому і ніколи не перевищувала це), тому вони роблять більш потужними, отримуючи більше ядер.