Българският ИТ портал
Потребителско име
Парола
Регистрация
Нова парола
Изпрати SMS | Новини | Онлайн превод
  SoftVisia

Защо броят на ядрата в централните процесори е толкова малък

Броят на ядрата в централните процесори расте твърде бавно. Първият наистина x86 двуядрен процесор, в който и двете ядра са на един и същ кристал се появи още през 2006 година. Той бе от фамилията процесори Intel Core Duo излязла преди цели четири години.

Оттогава 2-ядрените процесори не слизат от арената. Нещо повече, развиват се много активно. Съвсем наскоро излезе най-новият 10 nm процесор на Intel. Това е Intel Core i3-8121U, който има точно две ядра.

Броят на ядрата при потребителските процесори се застоя на 6 от от 2010 година с излизането на серията AMD Phenom X6. За AMD FX не може да се каже, че са „честни“ 8-ядрени процесори, понеже под капачката има 4 APU. Новите Ryzen 7 чипове използват технология за разполагането на два 4-ядрени блока в един и същи кристал – това вече е нещо по-ново. Естествено, възниква въпросът, защо производителите на чипове постъпват по този начин?

Като се замислим, видеокартите от 1995-1996 години бяха само с един шейдър. А към днешен ден Nvidia Titan V например, има 5120 CUDA ядра. А x86 процесорите така си и останаха с 6 ядра на един кристал. Дори по-специалните сървърни процесори често са с по 18 ядра. Това са над 100 пъти по-малко ядра, в сравнение с видеокартите. Защо? Да се опитаме да разберем.

Архитектурата на централните процесори

В началото, всички Intel x86 процесори имаха CISC (Complex Instruction Set Computing) архитектура с максимален брой инструкции. От една страна, това е супер: през 90-те години например, централният процесор върши всичко – включително рендиране на изображението и извеждането на звука. При някои игри, използващи тези процесори, спирането на звука увеличава броя кадри в секунда. Дори и днес процесорът е нещо като сложен комбайн, който може всичко. Именно това е и неговият проблем: да се извърши паралелизация на една случайна задача, съвсем не е проста работа. Може да се каже, че когато ядрата са две, всичко е лесно: едното ядро да поема операционната система и фоновите процеси (антивирусни, индексиране и т.н.), а другото ядро да се използва от приложенията. Този подход винаги действа, само че производителността не се увеличава два пъти. Фоновите процеси обикновено изискват много по-малко ресурси, отколкото изпълняването на някоя задача с тежък алгоритъм.

А сега да си представим, че имаме не две, а 4 или направо 8 ядра. Наистина, всички компресиращи, кодиращи и архивиращи алгоритми великолепно работят в паралелен режим (именно това е причината сървърните процесори да имат няколко десетки ядра). Но ако се изпълнява програма със случаен завършек? Като например една компютърна игра. В този случай, всяко действие изцяло зависи от геймъра и разпределянето на натоварването върху няколко ядра изобщо не е тривиална задача. Разработчиците най-често ръчно задават с какво да бъдат заети ядрата. Така например, едното може да се използва за работата на изкуствения интелект, другото се грижи за обемния звук и т.н. Но с този подход засега не може да бъде изцяло натоварен един 8-ядрен централен процесор.

При видеокартите всичко е много по-просто. Те се занимават само със сравнително ограничен брой видове пресмятания. Ето защо е възможно оптимизирането на изчислителните ядра именно за сравнително ограничения брой изпълнявани видове изчисления. А щом всички възможни задачи за изпълнение са предварително известни, то няма никакъв проблем те да се изпълняват чрез изцяло паралелни алгоритми. И още, заложено е управлението на групи от по 64-192 шейдъра, а не на всеки по отделно. Ето защо, огромният брой шейдъри не създава проблеми.

Консумацията на електрическа енергия

Една от причините надпреварата за най-висока тактова честота да приключи е рязкото увеличение на консумацията. Може с голямо приближение да се каже, че отделяната от процесора топлина зависи от тактовата честота, повдигната на трета степен. Така например, ако даден процесор при тактова честота 2 GHz отделя 100 W топлина и без проблем се охлажда с помощта на въздушен охладител, то при 4 GHz, същият чип ще отделя цели 800 W и ще е необходима изпарителна камера с течен азот.

Изходът от тази ситуация бе растежът не на честотата, а на процесорните ядра. Грубо казано, двуядрен процесор с тактова честота 2 GHz ще отделя 200 W топлина. А едноядреният при 3 GHz – почти 340 W. Тоест, печалбата е повече от 50%, като при добра оптимизация на многопоточната работа, двуядреният процесор ще е много по-бърз от едноядрения.

На пръв поглед, това е златното решение: веднага започваме да произвеждаме 10 ядрени процесори с честота 1 GHz, които консумират само около 25% повече енергия от едноядрен чип с честота 2 GHz. Има логика – ако 2 GHz процесор консумира 100 W, то 1 GHz чип ще консумира само 12,5 W и 10 подобни ядра ще са с консумация около 125 W, което е изгодно.

Но тук се сблъскваме с проблема, че далеч не всички програми могат да работят в паралелен режим. На практика се получава, че много по-евтиният за производство 1-ядрен CPU с честота 2 GHz е съществено по-бърз от скъпия 10-ядрен, но с честота 1 GHz. Разбира се, многоядрените процесори се произвеждат. Те масово се използват в сървърния сегмент, където се използва предимно паралелна работа. В сървърите, 40-60 ядрения CPU с честота от около 1,5 GHz е многократно по-бърз от 8-10 ядрените процесори с честота 4 GHz, като отделя същата топлина.

Ето защо производителите на процесори внимателно следят с ръста на броя на ядрата да не спадне еднопоточната производителност. Според статистиките и анализите, пределът за отделяната топлина при домашните компютри е на ниво около 60-100 W. При условие, че се налага да се запази еднопоточната производителност и трябва да се остане в този диапазон от отделяна топлина, методите за увеличаване броя на ядрата са само два. Да се оптимизира самата архитектура на процесора и да се увеличи неговата производителност за един такт или да се намали технологичния процес.

Но уви, и едно и другото протичат все по-бавно: за над 30-те години съществуване на x86 процесорите, вече всичко възможно е „полирано“. При всяко следващо ново поколение процесори производителността нараства едва с 5%, а намаляването на технологичния процес е все по-трудно, поради възникващите фундаментални проблеми с транзисторите. При размери от няколко десетки нанометри започват да се проявяват квантовите ефекти и транзисторите не работят коректно. Ето защо, в тези условия, увеличаването броя на ядрата става все по-сложно.

Размерът на кристала

Ако погледнем площта на кристалите на процесорите отпреди 15 години, ще видим, че тя е само 100-150 квадратни милиметра. Преди 5-7 години чиповете пораснаха до 300-400 квадратни милиметра и… дотук. Този процес почти спря, понеже производството на гигантски кристали е твърде сложно, силно нараства бракът а оттук и цената на CPU.

Второ, нараства крехкостта на кристалите. При работа, различните зони на кристалите е възможно да се нагреят до различни температури и кристалът да се повреди.

Трето, скоростта на светлината също налага ограничения. Тя е много висока, но не е безкрайна и в големите кристали се появява твърде вредна задръжка на сигнала.

В крайна сметка, растежът на размера на кристалите се спря при около 500 квадратни милиметра и едва ли ще нарасне повече. За да се увеличи броя на ядрата при тези условия, самите ядра трябва някак да станат по-малки. На пръв поглед, Nvidia или AMD са постигнали това и техните графични процесори имат хиляди шейдъри. Но графичните ядра нямат собствен кеш и изпълняват точно определен клас задачи. Това оказва огромно влияние на техния размер. А CPU имат пълноценни ядра със собствен кеш. Често върху същия кристал е разположена и графиката, както и различните контролери. Остава единствено оптимизацията и намаляването на технологичния процес. А това става твърде бавно.

Оптимизация на работата

Да си представим група хора, които трябва да свършат някаква работа, Когато са двама, те ще се разберат и ще работят ефективно. Ако са четирима става малко по-сложно, но работата все още е ефективна. А ако са 10 или 20? Трябва да се намери някакъв начин те да общуват, докато работят. В противен случай ще има прекъсвания в работата, а някои ще стоят без да правят нищо. В процесорите на Intel за осъществяването на подобна комуникация се използва кръгова шина, която свързва всички ядра и дава възможност за обмен на информацията.

Но и това не помага. При еднакви честоти, ефективността на 10 и 18 ядрените процесори Skylake-X се различава само с 25-30%. А теоретично би трябвало да се увеличи с цели 80%. Причината е, че неизбежно възникват задръжки и забавяния. И колкото повече са ядрата, толкова по-големи са тези негативни ефекти.

Ако продължим сравнението, графичните ядра приличат на хора пред конвейера, които изпълняват строго определени инструкции. В този случай, загубите при увеличаване броя на ядрата, са съществено по-малко.

Този проблем е труден за решаване. Трябва да се измисли някаква нова шина, с която която данните между процесорните ядра да се обменят с еднаква скорост и еднаква задръжка. Може би трябва да се използва топологията звезда и всички ядра да се свързват с помощта на концентратор. Но засега нищо подобно няма.

 

Виждаме, че нарастването на броя на процесорните ядра, както и на тактовите честоти е твърде сложна задача, която икономически не е изгодна и не е оправдана. Едва ли скоро можем да очакваме промени в тази област, понеже засега се използват предимно силициеви кристали.

Коментари
Все още няма коментари
Статистика
Прегледи 16
Коментари 0
Рейтинг
Добавена на17 Май 2018
ИзточникKaldata

Тагове
Intel, Core, Nvidia
Ние във фейсбук