Добавянето на няколко ядра към един процесор предлага значителни предимства благодарение на многозадачната природа на съвременните операционни системи. За някои цели обаче има горна практическа граница за това колко ядра водят до подобрения спрямо цената на добавянето им.
Напредък на многоядрената технология
Многоядрените процесори се предлагат в персоналните компютри от началото на 2000-те години. Многоядрените проекти адресираха проблема с процесорите, които достигат тавана на своите физически ограничения по отношение на техните тактови скорости и колко ефективно могат да бъдат охладени и все пак да поддържат точност. С преминаването към допълнителни ядра на един процесорен чип, производителите избегнаха проблеми с тактовите честоти, като ефективно умножиха количеството данни, които могат да бъдат обработени от процесора.
Когато първоначално бяха пуснати, производителите предлагаха само две ядра в един процесор, но сега има опции за четири, шест и дори 10 или повече. В допълнение към добавянето на ядра, едновременните многопоточни технологии - като Hyper-Threading на Intel - могат да удвоят виртуалните ядра, които операционната система вижда.
Процеси и нишки
Процесът е специфична задача, като програма, изпълнявана на компютър. Процесът се състои от една или повече нишки.
Потокът е просто единичен поток от данни от програма, преминаващ през процесора на компютъра. Всяко приложение генерира своя собствена една или много нишки в зависимост от това как работи. Без многозадачност, едноядрен процесор може да обработва само една нишка наведнъж, така че системата бързо превключва между нишките, за да обработва данните по привидно паралелен начин.
Ползата от наличието на множество ядра е, че системата може да обработва повече от една нишка едновременно. Всяко ядро може да обработва отделен поток от данни. Тази архитектура значително увеличава производителността на система, която изпълнява едновременно приложения. Тъй като сървърите са склонни да изпълняват много едновременни приложения в даден момент, технологията първоначално е разработена за корпоративни клиенти - но тъй като персоналните компютри стават по-сложни и многозадачността нараства, те също се възползват от наличието на допълнителни ядра.
Всеки процес обаче се управлява от основна нишка, която може да заема само едно ядро. По този начин относителната скорост на програма като игра или видео рендер е трудно ограничена до възможностите на ядрото, което основната нишка консумира. Основната нишка може абсолютно да делегира вторични нишки на други ядра - но една игра не става два пъти по-бърза, когато удвоите ядрата. По този начин не е необичайно една игра да максимизира едно ядро (основната нишка), но да вижда само частично използване на други ядра за вторични нишки. Никакво удвояване на ядрото не заобикаля факта, че основното ядро е ограничител на скоростта за вашето приложение и приложения, които са чувствителни към тази архитектура, ще работят по-добре от приложения, които не са.
Софтуерна зависимост
Въпреки че концепцията за многоядрени процесори звучи привлекателно, има голямо предупреждение за тази технология. За да се насладите на истинските предимства на множеството процесори, работещият на компютъра софтуер трябва да бъде написан така, че да поддържа многопоточност. Без софтуера, поддържащ такава функция, нишките ще се изпълняват предимно през едно ядро, като по този начин се влошава цялостната ефективност на компютъра. В края на краищата, ако може да работи само с едно ядро в четириядрен процесор, всъщност може да е по-бързо да го работи на двуядрен процесор с по-високи базови тактови честоти.
Всички основни настоящи операционни системи поддържат възможност за многопоточност. Но многонишковостта също трябва да бъде записана в приложния софтуер. Поддръжката за многопоточност в потребителския софтуер се е подобрила през годините, но за много прости програми поддръжката за многопоточност все още не е внедрена поради сложността на софтуерната компилация. Например, програма за електронна поща или уеб браузър е малко вероятно да види огромни ползи от многопоточността, както би направила програма за редактиране на графики или видео, където компютърът обработва сложни изчисления.
Добър пример за обяснение на тази тенденция е да разгледаме типична компютърна игра. Повечето игри изискват някаква форма на машина за изобразяване, за да покажат какво се случва в играта. В допълнение, някакъв вид изкуствен интелект контролира събитията и героите в играта. При едноядрен и двете задачи се изпълняват чрез превключване между тях. Този подход не е ефективен. Ако системата разполага с множество процесори, изобразяването и AI могат да работят на отделно ядро – идеална ситуация за многоядрен процесор.
Е 8 > 4 > 2?
Преминаването отвъд две ядра носи смесени ползи, като се има предвид, че отговорът за всеки даден купувач на компютър зависи от софтуера, който той или тя обикновено използва. Например, много класически игри все още предлагат малка разлика в производителността между две и четири ядра. Дори съвременните игри - някои от които предполагаемо изискват или поддържат осем ядра - може да не работят по-добре от шест-ядрена машина с по-висока базова тактова честота, като се има предвид, че ефективността на основната нишка управлява ефективността на многопоточната производителност.
От друга страна, програма за кодиране на видео, която транскодира видео, вероятно ще има огромни ползи, тъй като изобразяването на индивидуален кадър може да се предава на различни ядра и след това да се събира в един поток от софтуера. По този начин наличието на осем ядра ще бъде дори по-полезно от наличието на четири. По същество основната нишка не се нуждае от сравнително богати ресурси; вместо това може да прехвърли упоритата работа на дъщерните нишки, които изчерпват максимално ядрата на процесора.
Скорости на часовника
Общо казано, по-високата тактова честота означава по-бърз процесор. Тактовите скорости стават по-мъгляви, когато вземете предвид скоростите спрямо множество ядра, тъй като процесорите обработват множество нишки с данни благодарение на допълнителните ядра, но всяко от тези ядра ще работи на по-ниски скорости поради термичните ограничения.
Например, двуядрен процесор може да поддържа базови тактови скорости от 3,5 GHz за всеки процесор, докато четириядрен процесор може да работи само на 3,0 GHz. Само като погледнем едно ядро на всеки от тях, двуядреният процесор е с 14 процента по-бърз от четириядрения. По този начин, ако имате програма, която е само еднонишкова, двуядреният процесор всъщност е по-ефективен. След това отново, ако вашият софтуер може да използва и четирите процесора, тогава четириядреният процесор всъщност ще бъде около 70 процента по-бърз от този двуядрен процесор.
Изводи
В по-голямата си част наличието на процесор с по-голям брой ядра обикновено е по-добро, ако вашият софтуер и типичните случаи на употреба го поддържат. В по-голямата си част, двуядрен или четириядрен процесор ще бъде повече от достатъчна мощност за обикновен компютърен потребител. По-голямата част от потребителите няма да видят осезаеми ползи от надхвърлянето на четирите процесорни ядра, тъй като толкова малко неспециализиран софтуер се възползва от това. Най-добрият случай за използване на процесори с голям брой ядра е свързан с машини, които изпълняват сложни задачи като редактиране на видео настолни компютри, някои форми на игри от висок клас или сложни научни и математически програми.
Вижте нашите мисли относно колко бърз компютър ми трябва? за да получите по-добра представа какъв тип процесор най-добре отговаря на вашите компютърни нужди.