Донецкий техникум промышленной автоматики

Кількість "потрібних" ядер процесора в dx9 dx11 dx12 в іграх на ПК

Для правильного розуміння огляду (по простому - щоб «каші» в голові не було) внесемо ясність в деякі поняття які використовуються в тексті.

Центральний процесор (ЦП; також центральне процесорний пристрій - ЦПУ; англ. Central processing unit, CPU, дослівно - центральне обробляє пристрій) - електронний блок або інтегральна схема (мікропроцесор), виконуюча машинні інструкції (код програм), головна частина апаратного забезпечення комп'ютера або програмованого логічного контролера. Іноді називають мікропроцесором або просто процесором.

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

Потік (thread) - це структура всередині процесу, яка містить виконавчий код і отримує процесорний час для його виконання. Потік, на відміну від процесу, може виконувати якісь дії. Без потоку програма не може виконуватися.

Нить - властивість платформи (наприклад, операційної системи, віртуальної машини та т. Д.) Або додатка (в нашому випадку - ІГРОВОГО ДОДАТКИ), що складається в тому, що процес, породжений в операційній системі, може складатися з декількох потоків, що виконуються «паралельно », тобто без запропонованого порядку в часі. При виконанні деяких завдань такий поділ може досягти більш ефективного використання ресурсів обчислювальної машини.

DirectX (від англ. Direct - прямий, безпосередній, вимовляється як «Директ Ікс» - це набір API, розроблених для вирішення завдань, пов'язаних з програмуванням під Microsoft Windows. Найбільш широко використовується при написанні комп'ютерних ігор. Пакет засобів розробки DirectX під Microsoft Windows безкоштовно доступний на сайті Microsoft. Найчастіше оновлені версії DirectX поставляються разом з ігровими додатками.

Розібравшись з базовими поняттями перейдемо до самого огляду.

DirectX 9

У даній версії API поширеною за часів Windows XP основний код ігрового програми міг здійсняться тільки в один потік. Паралельно могли використовуватися деякі функції програми, але кількість їх було обмежено. Далі - в DX9 потік в системі був строго прив'язаний до ядра процесора - інший варіант роботи не допускаються. Тому по суті для ігор в той час найактуальнішим було 2х ядерний процесор (можна навіть сказати - для гри вистачало «півтора-ядерного», ще «пів-ядра» використовувалося для функціонування операційної системи (ОС). 3х і більше ядерний процесор в той час - був надлишковий для ігор.

Основний період використання данногоAPI в ігрових додатках 2003-2010г.

DirectX 11

Основним нововведенням в даному API (працює на Win 7 \ 8.1) стосовно ЦП було те, що ігрові програми могли використовувати кілька заздалегідь заданих потоків для своєї роботи, причому потік не був фізично прив'язаний до певного ядру процесора. Що дало можливість повністю використовувати можливості, що з'явилися у гравців в широких масах 4х ядерних процесорів. Зазвичай кількість потоків в іграх на DX11 одно 4м (в деяких випадках 3 або 2).

Це підтверджують результати наведені мною в статті:

www.playground.ru/blogs/other/pk_na_i3_i_i5_idealnyj_kompyuter_dlya_igr-238893/

Аналогічні результати були отримані тестерами тут:

gamegpu.com/test-video-cards/igry-2014-goda-protiv-protsessorov-test-gpu.html

Пов'язано це з тим що на початок 2010р процесорів з кількістю ядер більше 4х в настільних ігрових системах практично не було (що за статистикою Steam вірно і по сей день):

Пов'язано це з тим що на початок 2010р процесорів з кількістю ядер більше 4х в настільних ігрових системах практично не було (що за статистикою Steam вірно і по сей день):

Основний період використання данногоAPI в ігрових програмах - приблизно 2010-2020г.

DirectX 12

Даний API також серйозно відрізняється від DX11 як той від DX9. У новому DX12 програмний код спочатку не ділиться на певну кількість потоків - API ОС сам їх формує на підставі конфігурації ПК. Простими словами - якщо на DX11 спочатку задані потоки могли лише перекидатися по ядрах ЦП для прискорення роботи гри, то в DX12 API ОС сам створює кількість потоків, потрібних для роботи, які можуть мати кількість дорівнює кількості ядер ЦП, і контролює їх рівномірне завантаження. Що це дає - розробникам по суті стає не важливо скільки ядер має процесор на ігровий станції - 4, 10 або більше - ВСЯ сумарна потужність може використовуватися для роботи програми.

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

- Більшість відеокарт (на момент написання тексту) знаходяться у гравців не дають переваги в швидкості роботи в DX12 в порівнянні з DX11, і мало того - в DX11 вони працюють стабільніше і швидше. Це стосується ВСІХ поколінь відеокарт Nvidia крім останнього десятий і поколінь нижче HD 7000 у AMD (там взагалі підтримки DX12 нижче 7000й серії немає). Те що у АМД поколінь карт з нормальною підтримкою DX12 більше додає радості в житті тільки тим хто їх «юзает» - тк АМД «тримає» тільки 20-25% ринку ігрових відеокарт погоди це особливо не робить. Ситуація зміниться коли 10е і наступне 11е покоління відеокарт «зелених» почне домінувати в кількості над старими рішеннями - процес цей йде але коли це трапиться - точно не відомо.

- Так само впливають тенденції «сучасного ігростроя». ВСЕ гри класу ААА за термінами виконання знаходяться в діапазоні 3-5 років (а хто і більше за). Мало того - на ринку на даний момент домінують серії ігор, в яких ігроробів постійно використовують старі «допіленние» напрацювання з попередньої частини гри. А код під DX12 для підтримки всіх його переваг потрібно писати «з нуля». Так само - ТІЛЬКИ В кінця 2015 \ ПОЧАТКУ 2016 року ігрова індустрія «позбулася» від майнстріма ігор у яких все ще була DX9 підтримка. З цього випливають висновки - на найближчі рік-два масового переходу на DX12 в іграх - 100% не очікується.

- «префіксальних гальмо». На превеликий жаль гравців на ПК дуже багато ігор на цій платформі з'являються методом портирования з консолей. Зазвичай зараз на ПК портируют гри з Х-bох ONE яка працює під управлінням API дуже схожим з DX11 на ПК. І тому поки не вийде нове покоління приставок з букой Хи від дрібном'який (осінь 2017р) які по непідтверджений інформації працюють на API аналогічному DX12, чекати кроссплатформенную ігор на ПК з нормальним DX12 взагалі не варто.

- Windows 10. Плани по тотальному захоплення ринку цією системою виявилися у дрібном'який повністю провальні. Більше 30% гравців (на робочих станціях відсоток ще вищий) так і не перейшли на неї з різних причин. Тому виробники ігор прагнучи охопити весь діапазон грають на ПК до сих пір 100% підтримують Win7 \ 8.1 х64 (і відповідно DX11) в своїх програмах. Пара-трійка ігор з магазину Мелкомякгіх «only DX12» ролі не зіграло.


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