Какво е многоядрен процесор?

click fraud protection

От средата на нулевите години процесорите за настолни компютри предлагат множество процесорни ядра в един пакет. Това е многоядрен процесор. Докато ранните проекти бяха ограничени до две или четири процесорни ядра, съвременните процесори предлагат до 64 физически ядра на един процесор. Толкова високият брой ядра не е стандартен за настолни процесори и обикновено е запазен за работни станции или сървъри от висок клас. Типичният брой ядра в съвременните настолни процесори е между 4 и 16. Но какво е в многоядрените процесори, което ги прави доминиращи в съвременните компютри?

Едноядрен

В исторически план едноядрен процесор е бил ограничен само до изпълнение на една задача наведнъж. Това идва с цял набор от проблеми. Например, на модерен компютър има огромно количество фонови процеси. Ако процесорът може да обработва само едно нещо наведнъж, това означава, че тези фонови процеси трябва да отнемат време за обработка от процеса на преден план. Освен това пропуските в кеша означават, че данните трябва да бъдат извлечени от – сравнително – бавна RAM. През времето, когато данните се извличат от RAM, процесорът просто не работи, тъй като не може да направи нищо, докато не получи данните. Това задържа работещия процес, както и всички други процеси, които чакат да завърши.

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

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

Многоядрени

Добавянето на второ ядро ​​звучи така, сякаш трябва да удвои суровата производителност. Нещата, за съжаление, са по-сложни от това. Логиката на програмата често е еднонишкова, което означава, че има само едно нещо, което програмата се опитва да направи във всеки един момент. Това, което може да се случи обаче, е, че други процеси могат да използват другото ядро ​​едновременно. Въпреки че няма присъщо повишаване на производителността на повечето отделни програми, предоставянето на доп обработващ ресурс, ефективно намалява конкуренцията за ограничен ресурс, което осигурява a повишаване на производителността. Това повишаване на производителността, просто от намаляване на конкуренцията за процесорно време, е най-забележимо при преминаване от единичен към двуядрен CPU има намаляваща възвръщаемост от по-нататъшно увеличаване на броя на ядрата, въпреки че по принцип е повече По-добре.

За да се възползвате правилно от многоядрените системи и действително да видите солидно увеличение на производителността, програмите трябва да бъдат програмирани да използват множество нишки за обработка. Известно е, че многонишковата логика е трудна за надеждно изпълнение, тъй като често е трудна за научаване и има много потенциални клопки. Един примерен капан е известен като състояние на състезание. В състояние на състезание един процес предполага, че друг процес, който стартира, ще работи гладко, след което се опитва да направи нещо, което разчита на това, че този друг процес е работил гладко. Например, представете си, че процес стартира друг процес, за да затвори един документ и да отвори друг. Ако първоначалният процес не провери правилно дали вторият процес е завършен, това може да доведе до неочаквани резултати. Ако е имало проблем при затварянето на първия документ, например, той може все още да е отворен, когато първоначалният процес просто записва повече данни в него.

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

Термични проблеми

Един от най-големите проблеми, с които многоядрените процесори в крайна сметка се борят, е топлината. Докато едно ядро ​​на процесора не отделя толкова много топлина, две отделят повече. При процесорите с голям брой ядра тази концентрация на топлина може да доведе до по-ниска тактова честота, тъй като процесорът управлява своята температура. По-нисък часовник за усилване ще доведе до по-ниска производителност в еднонишкови приложения. Това често може да се види в тестовете за производителност на игрите. Видеоигрите често са силно зависими от една нишка. Като такава, еднопоточната производителност често е критична за игрите. Процесорите с голям брой ядра като 16-ядрените модели често са от високопроизводителни кошчета. Въпреки това, редовно може да се установи, че те са превъзхождани от „по-малките“ процесори с по-нисък брой ядра в еднонишкови бенчмаркове. Този проблем е още по-очевиден при процесори с ултрависок брой ядра като 64-ядрения AMD Threadripper, където тактовата честота е забележимо по-ниска от процесорите за настолни компютри от висок клас.

Успехи

Много приложения са в състояние да използват правилно множество процесорни ядра. Например изобразяването на CPU е сравнително лесна задача за паралелизиране. Подобренията в производителността могат да се видят до 64 ядра и повече, въпреки че нито един процесор не предлага повече от 64 ядра в момента. Много приложения просто не могат да бъдат многонишкови, тъй като разчитат на последователна логика. Въпреки че те не виждат никъде близо до ускоряването на многонишкова програма, фактът, че многонишковите програми и други програми с една нишка могат да използват други ядра на процесора, освобождава процесорно време, позволявайки по-добро производителност.

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

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

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

Заключение

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