Когато персоналните компютри са били изобретени за първи път, централният им процесор (CPU) стоял самостоятелно и имал само едно ядро на процесора. Самият процесор беше ядрото; идеята да има многоядрен процесор беше все още нечувана. Днес изобщо не е рядкост да виждате компютри, телефони и други устройства с множество ядра - наистина всеки почти всеки наличен в търговската мрежа компютър от всякакъв вид има множество ядра. Тези ядра се намират в един и същ, единичен, процесор или централен процесор.
Наличието на няколко ядра е голямо предимство. Само с едно ядро, компютърът може да работи само по една задача в даден момент, като трябва да изпълни задача, преди да премине към друга. С повече ядра обаче компютърът може да работи върху множество задачи наведнъж, което е особено полезно за тези, които правят много многозадачност.
Преди да се потопите в как точно работят многоядрените процесори, е важно да поговорим малко за историята на технологията за обработка, след което ще обсъдим какво правят многоядрените процесори.
Някаква история
Преди да бъдат изградени процесори с множество ядра, хора и компании като Intel и AMD се опитаха да създадат компютри с множество процесори. Това означаваше, че е необходима дънна платка с повече от един процесор. Това не само беше по-скъпо, заради физическия хардуер, необходим за друг процесорен гнездо, но и увеличи латентността поради засилената комуникация, която беше необходима за осъществяване между двата процесора. Дънната платка трябваше да раздели данните между две напълно отделни места в компютър, а не просто да ги изпрати на процесора. Физическото разстояние всъщност означава, че процесът е по-бавен. Поставянето на тези процеси на един чип с множество ядра не само означава, че има по-малко разстояние за пътуване, но също така означава, че различни ядра могат да споделят ресурси за изпълнение на особено тежки задачи. Например чиповете Pentium II и Pentium III на Intel бяха реализирани във версии с два процесора на една дънна платка.
След известно време процесорите трябваше да бъдат по-мощни, така че производителите на компютри излязоха с концепцията за хипер-резба. Самата концепция идва от Intel и първоначално е замислена през 2002 г. на сървърните процесори на Xeon на компанията, а по-късно и на настолните процесори на Pentium 4. Hyper-Threading се използва и до днес в процесорите и дори е основната разлика между i5 чиповете на Intel и i7 чиповете му. Основно се възползва от факта, че често има неизползвани ресурси в даден процесор, особено когато задачите не изискват много мощност на обработка, която може да бъде използвана за други програми. Процесор, който използва хипер-резба, се представя на операционна система, сякаш има две ядра. Разбира се, той всъщност няма две ядра, но за две програми, които използват половината от наличната или по-малка мощност на обработка, може да има и две ядра поради факта, че заедно могат да се възползват от цялата мощност, която процесор може да предложи Hyper-Threading обаче ще бъде малко по-бавен от процесор с две ядра, когато няма достатъчно процесова мощност за споделяне между двете програми, използващи ядрото.
Можете да намерите проницателен видеоклип, даващ тук кратко, по-подробно обяснение на хипер-резбата.
Multi-процесори
След много експерименти, накрая процесорите с множество ядра бяха в състояние да бъдат изградени. Това означаваше, че един единствен процесор по същество има повече от един процесор. Например, двуядрен процесор има две процесорни единици, четириядрен има четири и т.н.
Така че защо компаниите разработиха процесори с множество ядра? Е, нуждата от по-бързи процесори ставаше все по-очевидна, но развитието в процесорите с едно ядро се забавяше. От 80-те до 2000-те години инженерите успяват да увеличат скоростта на обработка от няколко мегагерца до няколко гигагерца. Компании като Intel и AMD направиха това, като свиха размера на транзисторите, което позволи на повече транзистори в същото пространство, като по този начин подобри производителността.
Поради факта, че тактовата честота на процесора е много свързана с това колко транзистори могат да се поберат на чип, когато технологията за свиване на транзисторите започна да се забавя, развитието на увеличените скорости на процесора също започна да се забавя. Въпреки че това не е, когато компаниите за първи път разбраха за многоядрени процесори, това е, когато те започнаха да експериментират с многоядрени процесори за комерсиални цели. Докато многоядрените процесори за първи път са разработени в средата на 80-те, те са проектирани за големи корпорации и всъщност не са преразгледани, докато едноядрената технология не започне да се забавя. Първият многоядрен процесор е разработен от Rockwell International и представлява версия на чипа 6501 с два 6502 процесора на един чип (повече подробности са достъпни тук в този запис в Wikipedia).
Какво прави многоядрен процесор?
Е, наистина всичко е доста просто. Наличието на няколко ядра позволява да се правят няколко неща наведнъж. Например, ако работите върху имейли, имате отворен интернет браузър, работите върху таблица на excel и слушате музика в iTunes, тогава четириядрен процесор може да работи върху всички тези неща наведнъж. Или, ако потребителят има задача, която трябва да бъде завършена веднага, той може да бъде разделен на по-малки, по-лесни за обработка задачи.
Използването на няколко ядра също не е ограничено само до няколко програми. Например Google Chrome представя всяка нова страница с различен процес, което означава, че може да се възползва от няколко ядра едновременно. Някои програми обаче се наричат еднопоточни, което означава, че не са написани, за да могат да използват множество ядра и като такива не могат да го направят. Hyper-Threading отново влиза в игра тук, което позволява на Chrome да изпраща множество страници до две „логически ядра“ на едно действително ядро.
Да вървим ръка за ръка с многоядрени процесори и хипер-резба е концепция, наречена многопоточна работа. Multithreading е по същество способността на операционната система да се възползва от множество ядра чрез разделяне на кода в най-основната му форма или нишки и захранването му в различни ядра едновременно. Това, разбира се, е важно за многопроцесорите, както и за многоядрените процесори. Мулти-резбата е малко по-сложна, отколкото звучи, тъй като изисква операционните системи правилно да поръчват код по начин, по който програмата може да продължи да работи ефективно.
Самите операционни системи правят подобни неща със собствени процеси - не се ограничават само до приложения. Процесите на операционната система са неща, които операционната система винаги прави на заден план, без потребителят да го знае непременно. Поради факта, че тези процеси винаги продължават, наличието на хипер-резба и / или множество ядра може да бъде много полезно, тъй като освобождава процесора, за да може да работи и по други неща, като това, което се случва в приложенията.
Как работят многоядрени процесори?
Първо, дънната платка и операционната система трябва да разпознаят процесора и че има няколко ядра. По-старите компютри имаха само едно ядро, така че една по-стара операционна система може да не работи прекалено добре, ако потребителят се опита да го инсталира на по-нов компютър с множество ядра. Windows 95, например, не поддържа хипер-резба или множество ядра. Всички скорошни операционни системи поддържат многоядрени процесори, включително харесванията на Windows 7, 8, новоиздадените 10 и OS X 10.10 на Apple.
По принцип, операционната система казва на дънната платка, че трябва да се извърши процес. След това дънната платка казва на процесора. В многоядрен процесор операционната система може да каже на процесора да прави няколко неща наведнъж. По същество чрез посоката на операционната система данните се преместват от твърдия диск или RAM, през дънната платка, към процесора.
Многоядрен процесор
В рамките на процесор има няколко нива на кеш памет, които съхраняват данни за следващата операция или операции на процесора. Тези нива на кеш паметта гарантират, че процесорът не трябва да търси много далеч, за да намери следващия си процес, спестявайки много време. Първото ниво на кеш паметта е кешът L1. Ако процесорът не може да намери необходимите данни за следващия си процес в кеша L1, той поглежда към кеша L2. Кешът на L2 е по-голям в паметта, но е по-бавен от кеша L1.
Едноядрен процесор
Ако процесор не може да намери това, което търси в кеша на L2, той продължава надолу по реда до L3, а ако процесор го има, L4. След това той ще изглежда в основната памет, или RAM паметта на компютър.
Съществуват и различни начини, по които различните процесори обработват кешовете за разлика. Например, някои дублират данните в L1 кеша на кеша на L2, което всъщност е начин да се гарантира, че процесорът може да намери това, което търси. Това, разбира се, заема повече памет в кеша на L2.
Различните нива на кеша също играят в многоядрени процесори. Обикновено всяко ядро ще има свой L1 кеш, но те ще споделят L2 кеш. Това е различно от това, ако имаше няколко процесора, защото всеки процесор има свой собствен L1, L2 и всеки друг кеш на ниво. При множество едноядрени процесори споделянето на кеш е просто невъзможно. Едно от основните предимства на споделянето на кеш е възможността да се използва кеш в най-голяма степен, поради факта, че ако едното ядро не използва кеша, другото може.
В многоядрен процесор, когато търси данни, ядрото може да прегледа собствения си уникален кеш L1 и след това ще се разклони към споделен L2 кеш, RAM и в крайна сметка твърдия диск.
Вероятно ще продължим да виждаме развитието на повече ядра. Тактовите скорости на процесора със сигурност ще продължат да се подобряват, макар и с по-бавни темпове от преди. Макар че сега не е рядкост да виждаме окта-ядрени процесори в неща като смартфони, достатъчно скоро можем да видим процесори с десетки ядра.
Къде мислите, че следващата се насочва многоядрената технология за обработка? Уведомете ни в коментарите по-долу или като започнете нова тема в нашия форум на общността.