Anonim

Коли вперше були винайдені персональні комп'ютери, їх центральний процесор (CPU) стояв окремо і мав лише одне ядро ​​процесора. Сам процесор був ядром; ідея мати багатоядерний процесор була ще нечуваною. Сьогодні зовсім не рідко можна побачити комп'ютери, телефони та інші пристрої з декількома ядрами - адже кожен доступний у продажу комп'ютер будь-якого типу має декілька ядер. Ці ядра знаходяться в одному, єдиному процесорі або центральному процесорі.

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

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

Деяка історія

До того, як були побудовані процесори з декількома ядрами, люди та компанії, такі як Intel та AMD намагалися створити комп'ютери з декількома процесорами. Це означало, що потрібна материнська плата з більш ніж одним процесорним сокетом. Це було не тільки дорожче через фізичне обладнання, необхідне для іншого процесорного сокета, але й збільшило затримку через посилену комунікацію, яка мала відбуватися між двома процесорами. Материнська плата повинна була розділити дані між двома повністю окремими місцями в комп'ютері, а не просто надсилати їх усім процесору. Фізична відстань насправді означає, що процес відбувається повільніше. Розміщення цих процесів на одній мікросхемі з декількома ядрами означає не лише відстань до подорожі, але й означає, що різні ядра можуть обмінюватися ресурсами для виконання особливо важких завдань. Наприклад, мікросхеми Intel Pentium II та Pentium III були реалізовані у версіях з двома процесорами на одній материнській платі.

Через деякий час процесори повинні були бути більш потужними, тому виробники комп'ютерів придумали концепцію гіпер-різьблення. Сама концепція вийшла від Intel, і вона була вперше задумана у 2002 році на серверних процесорах Xeon компанії, а згодом на настільних процесорах Pentium 4. На сьогоднішній день в процесорах досі застосовується Hyper-Threading, і це навіть основна відмінність між мікросхемами i5 від Intel та її мікросхемами i7. Це в основному користь того, що в процесорі часто є невикористані ресурси, особливо коли завдання не потребують великої потужності обробки, яку можна використовувати для інших програм. Процесор, який використовує гіпер-нарізку, в основному представляє операційну систему так, ніби має два ядра. Звичайно, він насправді не має двох ядер, однак для двох програм, які використовують половину доступної потужності обробки або менше, може бути два ядра через те, що разом вони можуть скористатися всією потужністю, яку Процесор може запропонувати. Однак Hyper-Threading буде трохи повільнішим, ніж процесор з двома ядрами, коли недостатньо потужності для обміну між двома програмами за допомогою ядра.

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

Мультипроцесори

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

То чому компанії розробляли процесори з декількома ядрами? Ну, потреба у швидших процесорах ставала все очевиднішою, проте розвиток в процесорах з одним ядром сповільнювався. З 1980-х до 2000-х років інженери змогли збільшити швидкість обробки з декількох мегагерців до декількох гігагерців. Такі компанії, як Intel та AMD, зробили це за рахунок зменшення розміру транзисторів, що дозволило отримати більше транзисторів за однаковий простір, покращивши тим самим продуктивність.

Через те, що тактова частота процесора дуже пов'язана з тим, скільки транзисторів може вміститися на мікросхемі, коли технологія скорочення транзисторів почала сповільнюватися, розвиток із збільшенням швидкості процесора також почав сповільнюватися. Хоча це не тоді, коли компанії вперше дізналися про багатоядерні процесори, це коли вони почали експериментувати з багатоядерними процесорами для комерційних цілей. У той час як багатоядерні процесори були вперше розроблені в середині 1980-х, вони були розроблені для великих корпорацій, і насправді їх не переглядали, поки одноядерні технології не почали сповільнюватися. Перший багатоядерний процесор був розроблений компанією Rockwell International і являв собою версію мікросхеми 6501 з двома процесорами 6502 на одному мікросхемі (детальніше можна ознайомитись тут у цій статті з Вікіпедії).

Що робить багатоядерний процесор?

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

Використання декількох ядер також не обмежується кількома програмами. Наприклад, Google Chrome надає кожній новій сторінці різний процес, що означає, що вона може скористатися кількома ядрами одночасно. Деякі програми, однак, називаються однопотоковими, а це означає, що вони не були написані, щоб мати можливість використовувати декілька ядер, і як такі не можуть цього зробити. Тут знову грає Hyper-Threading, що дозволяє Chrome надсилати кілька сторінок до двох «логічних ядер» на одне фактичне ядро.

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

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

Як працюють багатоядерні процесори?

По-перше, материнській платі та операційній системі потрібно розпізнати процесор і наявність декількох ядер. Старіші комп'ютери мали лише одне ядро, тому стара версія операційної системи може працювати не надто добре, якби користувач спробував встановити її на більш новому комп'ютері з декількома ядрами. Наприклад, Windows 95 не підтримує гіпер-нарізку або кілька ядер. Усі останні операційні системи підтримують багатоядерні процесори, включаючи подібні Windows 7, 8, нещодавно випущені 10 та Apple X OS 10.10.

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

Багатоядерний процесор

Всередині процесора є кілька рівнів кеш-пам'яті, які містять дані для наступної операції або операцій процесора. Ці рівні кеш-пам'яті гарантують, що процесору не потрібно шукати дуже далеко, щоб знайти свій наступний процес, економлячи багато часу. Першим рівнем кеш-пам'яті є кеш L1. Якщо процесор не може знайти потрібні дані для свого наступного процесу в кеші L1, він звернеться до кешу L2. Кеш L2 більше в пам'яті, але повільніше, ніж кеш L1.

Одноядерний процесор

Якщо процесор не може знайти те, що шукає у кеші L2, він продовжує вниз по лінії L3, а якщо процесор має, L4. Після цього він буде виглядати в основній пам'яті, або оперативній пам'яті комп'ютера.

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

Різні рівні кешу також грають у багатоядерні процесори. Зазвичай у кожного ядра буде свій власний кеш L1, але вони поділять кеш L2. Це відрізняється від наявності декількох процесорів, оскільки кожен процесор має свій кеш L1, L2 та будь-який інший кеш рівня. З декількома одноядерними процесорами обмін кешем просто неможливий. Однією з головних переваг спільного кешу є можливість використання кешу в повній мірі через те, що якщо одне ядро ​​не використовує кеш, інше може.

У багатоядерному процесорі під час пошуку даних ядро ​​може переглядати власний унікальний кеш L1, а потім розгалужується на спільний кеш L2, оперативну пам’ять та врешті-решт на жорсткий диск.

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

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

Все про багатоядерні процесори: що вони таке, як вони працюють і звідки вони взялися