Чому мій двоядерний процесор визнаний чотирьохядерним?


52

Мій процесор - це Intel Core i3-380m . Як бачите, це 2 ядра та 4 нитки.

Хоча і Ubuntu 11.04, і Windows 7, здається, вважають це чотириядерний процесор:

введіть тут опис зображення

введіть тут опис зображення

Чому це? Це тому, що є 2 потоки на ядро, що розділяє процесор на 4 процесорні блоки?

Відповіді:


43

Як вже згадувалося, у вас є двоядерна система з 2 потоками на ядро.

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

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

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

Операційна система також може використовувати Core-parking (функція в новіших процесорах Intel), що дозволяє операційній системі призупиняти половину ядра з гіперпотоком, щоб, коли не потрібна додаткова обробна здатність для гіпертретування, тоді виконується функція єдиного потоку збільшується, оскільки ядро ​​більше не ділиться кешем на 2 потоки і тепер може повністю присвятити кеш-пам'ять основного ядра одному потоку.


Дякую за пояснення. Отже, чи можна тут сказати, що потік - це ядро, що є ядро ​​для процесора?
серйознийв

2
Певним чином, так. ОС бачить процесор, знає, скільки ядер знаходиться на цьому процесорі, і, в свою чергу, скільки потоків підтримує кожне ядро, тому використання процесора, яке ви бачите, тепер "за ниткою", а не "за ядро". Це не так просто (оскільки кожен потік насправді представляється ОС, що не має гіпертодування, як повноцінне ядро ​​CPU), але це загальна ідея цього.
Мокубай

@ Мокубай ядро-парковка не працює.
Бісвапріо

49

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


7
Це відоме як фізичні та логічні ядра?
xdumaine

11
Так, фізичне ядро ​​- добре ... фізичне. Ви можете доторкнутися до нього. Гіперточені ядра не справжні, отже, логічні. Ви також можете розбити фізичні ядра на логічні ядра за допомогою віртуалізації.
Келтарі

3
@Keltari насправді є фізична частина цього ... Hyperthreading - це апаратний компонент в ядрі процесора (і його можна відключити лише на апаратному рівні). Докладніше див. У цій довідці Intel . По суті, він розділяє ресурси ядра між двома підрозділами фізичного виконання. У технічному відношенні обидва ядра, що бачаться ОС в гіперточеному ядрі, є "логічними", немає і фізичних, і логічних.
Прорив

1
правда, гіперточення - це фізична частина процесора, але не фізичне ядро.
Келтарі

1
Найкращий спосіб подумати про HT - це "ядро з половиною", він ділиться з братом набагато більше ресурсів, ніж окремі ядра. Однак він здатний виконувати потік "самостійно", і ОС розглядає його як блок виконання потоку (який ви асоціювали з ядром).
катастрофа

12

Речі набагато складніші, ніж вони були в дні однієї інструкції процесора за один такт цикла.

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

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

Тут варто зауважити, що, хоча гіпертодування може значно збільшити кількість роботи, яку ви вийдете зі свого процесора, це ніде не так добре, як мати стільки фізичних ядер. Залежно від завантаженості роботи, це може означати покращення на 15% або 40%. За деяких обставин ви можете навіть відключити цю функцію, щоб інші ядра мали повний ексклюзивний доступ до кешу L1 / L2 для цього ядра (це іноді робиться з виділеними серверами баз даних).

Коли ваш чіп рекламує себе як 2 ядра з 4 потоками, це означає, що це двоядерний процесор, який підтримує гіперточування.


2

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

Utilization of Processor ResourcesКращий анімаційний, дивитися на нього і їх натисніть кнопку «авансовий».


1

Чому це? Це тому, що є 2 потоки на ядро, що розділяє процесор на 4 процесорні блоки?

Простіше кажучи, відповідь - так. Кожне ядро ​​вашого процесора може підтримувати два незалежних потоки, так що всього 4. Але це не означає, що він має таку ж продуктивність, як чотириядерний однопотоковий процесор. практично продуктивність двоядерного процесора з двома потоками нижче, ніж у чотирьохядерного однопотокового процесора. Як і AMD Phenom X4.


Ти знаєш чому?
серйознийв

1
Причина полягає в тому, що у двопотоковому ядрі апаратні ресурси (наприклад, буфер упорядкування) поділяються між двома потоками, тоді як в однопотоковому процесорі всі ресурси присвячені одному ядру. Варто зазначити, що наявність ядра з мульчуючим різьбленням збільшує використання обладнання та пропускну здатність, але це погано для затримок. Задіяно багато компромісів. Тож слово "вистава" тут справді неясне. Для звичайних людей це означає затримку однієї нитки.
aminfar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.