Чи багатопроцесорні процесори все ще страждають від зменшення віддачі в сучасному світі?


8

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

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

Будь ласка, резервні копії будь-яких претензій із посиланнями.


2
Перебуваючи в операційній системі x64, це не має жодного значення, якщо у вас програма з декількома потоками. Різниця в ландшафті компілятора між 2008 і 2012 роками величезна. Поки не було простого способу виконувати дію на декількох потоках, наявність процесора з можливістю виконувати декілька потоків одночасно є безглуздим. Навіть сьогодні це все ще не так просто зробити для цього.
Рамхаунд

Відповіді:


7

Це сильно залежить від того, що ти робиш.

Для звичайних ol 'Word і Excel та Minesweeper і будь-чого іншого, що використовує ваша мама, одного ядра все одно достатньо, і більше двох - це надлишок. Ці види додатків проводять більшу частину часу в режимі очікування, чекаючи введення користувачем.

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

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

Користувачі потужності люблять багатозадачність. Torrent, VirtualBox, захоплення екрана, відео, Minecraft та веб-перегляд веб-сайтів, які працюють одночасно. Таким чином, ви будете отримувати користь від кожного додатка, що голодує на процесорі, який має своє ядро. У наш час популярною є пряма трансляція вашої гри. Отже, це два ядра для гри, принаймні ще одне для потоку кодера, і щонайменше ще одне для решти системи. Це щонайменше 4 ядра.


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

Я сумніваюся, що одне ядро ​​- це завжди правильний вибір (просто введіть дійсно повільну формулу в Excel ...), і я думаю, ви трохи спрощуєте. А як щодо, наприклад, функції Turbo Core (AMD) / Turbo Boost (Intel) на нових процесорах? Це дозволяє моєму шестигранному AMD припаркувати половину ядер і запустити іншу половину при більш швидкій тактовій частоті - і, на мій погляд, версія Intel ще більш тонко зрозуміла, тому процесор може повторно оптимізувати на ходу роботу, необхідну для це. Це робить їх кращим вибором? Проблему можна точно вирішити лише за допомогою реальних вимірювань та орієнтирів.
DMA57361

Я повністю погоджуюся з @ DMA57361 Кілька років тому дядько купив кілька одноядерних комп'ютерів AMD для своїх дітей-підлітків. Фонові процеси (Windows Update є найбільш кричущим правопорушником) регулярно робили їх практично непридатними протягом декількох хвилин, збільшуючи процесор.
День вигадує Firelight

Не забувайте про гіпертренінг. Більш просунуті процесори Intel можуть імітувати додаткове ядро ​​процесора, надаючи додатковий набір регістрів у кожному ядрі та дозволяючи потокам одночасно використовувати різні частини кожного ядра процесора для подальшого підвищення продуктивності багатозадачності.
bwDraco

3D-рендерінг - це ще одне, що показує велику перевагу. Якщо ви аніматор або графічний дизайнер і багато рендерінгу; все програмне забезпечення професійного рівня має перевагу, щоб скористатись усіма основними процесорами, що пропонуються вашою машиною (і більше у випадку з мережевими кластерами). Продуктивність буде масштабуватися лінійно з кількістю ядер.
Джейсон C

5

Боюся, що відповідь все ще є, як це було завжди, "це залежить від того, що ти робиш".

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

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

Варто зауважити, що є кілька «великих» додатків, які не мають багатопотокових запитів (просто перевірте еквівалент диспетчера завдань ОС; він повинен мати можливість сказати, скільки належить до кожного процесу - мій Firefox зараз використовує 31, наприклад ).

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

Наприклад, цей апарат Tom's Hardware (з 2009 р.) Намагається переглянути ефективність декількох багатоядерних процесорів під одночасними програмами - запускаючи гру поряд зі скануванням AVG (обидва вони, ймовірно, багатопотокові). Чотири-, три- та двоядерні процесори працюють аналогічно лише грі, але додають одночасне сканування AVG, а продуктивність (вимірюється середнім FPS) падає на 22%, 40% та 59% відповідно.

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


І тоді ви повинні взяти до відома сучасні особливості процесорів, такі як Intel Turbo Boost / AMD Turbo Core. Ці особливості дозволяють багатоядерному процесору паркувати ядра (вводити їх у більш повільний режим з низькою потужністю) і використовувати запасну енергію для розгону ядер, які залишаються активними - дозволяючи процесору оптимізувати себе, щоб забезпечити максимальну потужність процесора якомога більше для кількості завдань, з якими вона представлена.


2

Для додавання масла в вогонь, я прочитав тут , що Android насправді сповільнюється при наявності більш одного ядра:

Використання багатоядерних процесорів може насправді зробити пристрої Android повільнішими, заявив Майк Белл, генеральний менеджер групи мобільних і комунікаційних технологій Intel, який звинувачує багатопроцесорну здатність Android або її відсутність у труднощах операційної системи в ефективному керуванні потужними процесорами.

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


Хм, чи не вдалося б краще відредагувати це у вашому оригінальному запитанні?
Подорожник Geek

Я думаю, що весь цей потік буде перетворений на вікі / FAQ, і я вважав, що найкраще залишити питання таким, яким є, і додати це окремо. @Moderators - чи слід цю відповідь об'єднати з питанням чи залишити так, як є?
rishimaharaj

0

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.