Съвременните процесори имат по няколко модула за изчисление (обслужващи различните видове инструкции), които работят едновременно. Като цяло обаче съвкупността от тези модули (т.е. цялостният самостоятелен блок – т.н. „процесорно ядро”) в даден момент от време обработва една-единствена софтуерна нишка (контекст). Стартирането на няколко програми (или една програма с няколко обособени поотделно нишки от операции) естествено е възможно, но тогава ядрото се прехвърля от нишка на нишка, отделяйки по малко „време” (изчислителни ресурси) на всяка от тях. Процесът на прехвърляне се регулира от операционната система и в идеалния случай е „невидим” за потребителя (освен в моментите, когато някой от прозорците се изчертава бавно например).
Предимствата на многоядрените системи (т.е. такива с повече от едно процесорно ядро) са в пъти по-голямата теоретична максимална изчислителна мощност (която се проявява само при софтуер, поддържащ многонишкова обработка) и във възможността за достатъчно бърза и ненатрапчива (т.е. без паразитни забавяния) работа с няколко приложения едновременно (второто ядро е от полза дори при едно-единствено приложение – да поеме натоварването от самата операционна система и задачите във фонов режим).
Сървърите и мощните работни станции (използващи подходящ софтуер, който може да натовари всички предоставени му изчислителни модули) отдавна (от времето на 386) използват повече от едно ядро. Тези класически многоядрени системи просто имат повече от един процесорен цокъл (обикновено от два до осем). Комуникацията и синхронизирането на данните между отделните ядра (в случая и процесори) изцяло минава през системната шина, северния мост на чипсета и оперативната памет. Съответно се намалява ресурсът на тези елементи, който се използва за останалите задачи на системата. Въпреки този негативен ефект останалите предимства на многоядрените системи водят до доста по-висока производителност в крайна сметка.
Поради несъвършенства на софтуерния код и компилаторите много от програмните нишки не използват всички налични изчислителни модули в дадено ядро. Затова Intel разработиха Hyper-Threading технологията (в някои модели Pentium 4/XE и базираните на тях Xeon), чрез която едно физическо ядро се разглежда от операционната система като две логически и съответно изпълнява две нишки едновременно (работи с два програмни контекста) като второто логическо ядро предоставя единствено модулите незаети от първото. Това уплътняване на ресурсите може да увеличи производителността с 10-15%, но в някои случаи се отразява и негативно (заради свързаните с него преконфигурирания). Въвеждането на тази виртуална двуядреност стимулира и преминаването на масовия софтуер към използване на поне две програмни нишки.
През 2005-та година Intel и AMD пуснаха първите масови двуядрени процесори (P-D 8xx, A64X2).
Pentium D 8xx се състоеше от една силициева пластина с две P4 ядра, които си споделят системната шина. Освен физически (една пластина и съответно една керамична подложка, един корпус и един цокъл) P-D архитектурно не се отличава от обикновените двупроцесорни Xeon системи с по два цокъла/процесора.
Athlon64 X2 се възползва от заложената още в първите Opteron процесори възможност за добавяне на второ ядро. При A64 ядрото, системната шина и северният мост (заедно с контролер за достъп до паметта) са обединени в обща силициева пластина. Второто ядро се свързва с вградения северен мост посредством своя собствена допълнителна шина (т.е. поне този ресурс не се споделя между ядрата), а близостта на блоковете води до по-малки забавяния и по-ефективна комуникация. Синхронизирането на данните между ядрата все пак протича през оперативната памет и води до намаляване на пропускателния капацитет, макар че негативните последствия донякъде се облекчават от вградения контролер за достъп до паметта.
Малко по-късно при преминаването на Intel към 65nm производствена технология се появиха P-D 9хх моделите. При тях двете ядра са разположени в отделни силициеви пластини (което намалява производствените разходи) върху обща керамична подложка. Разликата отново е единствено физическа и архитектурно идентична с двуцокълните системи и P-D 8xx (две ядра, една пластина).
В началото на 2006-та Intel пуснаха поредната модификация на Pentium M – Core Duo.
Това, което отличава Core Duo от тогавашните двуядрени процесори, е обединената кеш памет от второ ниво (Level2), която се използва и от двете ядра. Този подход има няколко предимства – за синхронизиране между ядрата не се използват никакви външни ресурси, а като допълнение целият обем на кеш паметта се разпределя в зависимост от нуждата на двете ядра (при P-D/A64 ако част от кеш паметта на едното ядро е свободна, другото не може да я използва, дори да е запълнило своята). Процесорът на Intel от осмо поколение – Core 2 Duo също е двуядрен с обединена L2 кеш памет.
Core2 Quad
В края на 2006-та Intel обявиха първия четириядрен х86 процесор, използващ Core2 ядра. За разлика от пуска на P-D 8xx в този случай Intel нямаха нужда да настигат конкуренцията, а обявиха новия процесор, за да затвърдят допълнително нетипичната за тях и наскоро извоювана позиция на водач. Чрез четириядрения си процесор Intel демонстрират производствените си възможности (няколко 65nm фабрики в момент, когато AMD полагат неимоверни усилия да пуснат първите си 65nm A64). Рекламният ефект се подсилва от това, че той е първият масов такъв и че се появява по-малко от половин година след мащабния успех на Core2.
Core2 може да декодира по 1 сложна и 3 прости х86 инструкции (с 1 проста повече от Core) – A64 може да декодира до 3 инструкции независимо от типа, а P-D – само по 1 (използва микрооперации).
Декодираните инструкции се подават съответно на 6 порта (Core2 и A64), 5 порта (Core) или 4 порта (P-D). Kъм всеки от портовете са свързани от 1 до 3 изчислителни блока. Core2 има общо: два AGU (адресни), три ALU (целочислени – един пълен и два само за някои функции), три SSE (128bit), четири за операции с плаваща запетая (128bit FADD, 128bit FMUL/FDIV, два AGU) и съответно при подходящи инструкции може да изпълни до три 128bit SSE, три целочислени или четири с плаваща запетая. Core има общо: два AGU (адресни), два ALU (целочислени), два SSE (64bit), два за операции с плаваща запетая (64bit FADD, 64bit FMUL) и съответно при подходящи инструкции може да изпълни до една 128bit SSE (две 64bit), две целочислени или две с плаваща запетая. Pentium-D има общо: два AGU (адресни), един ALU (целочислен) и два ALU (ускорени, само за някои функции), един SSE (64bit), два за операции с плаваща запетая (64bit FP, AGU) и съответно при подходящи инструкции може да изпълни до една 64bit SSE, две целочислени или две с плаваща запетая. A64 има общо: три AGU (адресни), три ALU (целочислени), два SSE (64bit), три за операции с плаваща запетая (64bit FADD, 64bit FMUL, AGU) и съответно при подходящи инструкции може да изпълни до една 128bit SSE (две 64bit), три целочислени или три с плаваща запетая.
SSE регистрите са 128-битови и с увеличаването на разрядността на обработващите модули до 128bit Core2 на практика си удвоява SSE производителността (освен това има повече блокове в сравнение с останалите ядра).
Core2 изостава единствено по брой пълноценни модули за целочислена обработка и то само спрямо A64. На практика обаче силите им в тази област се изравняват, тъй като двата непълни модула в Core2 всъщност са предвидени за по-често срещаните инструкции и това, че не могат да изпълняват рядко срещаните не се отразява на производителността.
Core 2 Quad представлява две C2Duo силициеви пластини, разположени върху обща керамична подложка (както при P-D 9xx).
Двете пластини (всяка от които с по две ядра и 4МB L2 кеш) са изградени от общо 582 милиона транзистора и заемат общо 286 кв.мм площ. Разсейваната мощност е 130W (TDP), което е приемливо за четириядрен процесор и е точно два пъти повече в сравнение с C2D, работещ на същата тактова честота. Поддържат се всички функции на C2Duo – х86-64, SSE/2/3, SSSE3, NX-bit, EIST, VMX, LGA775 цокъл (но дънната платка трябва да може да предостави необходимото захранване), 266MHz/1066QPB шина и по 32КВ L1 кеш за инструкции и още толкова за данни на всяко ядро, т.е. общо 2х2х(32K+32K). Всяка от двете пластини има по 4МВ L2 кеш (т.е. общо 8MB за C2Quad). Вътрешно в пластините двете ядра споделят своите 4МВ L2 кеш (и не натоварват системната шина със синхронизация), но комуникацията между двете пластини минава изцяло през споделената системна шина, северния мост и оперативната памет с всички негативни последствия от това характерни за P-D.
Производителността в сравнение с C2Duo, работещ на същата тактова честота е между 0 и 60% по-голяма в зависимост от приложението. При въвеждането на второ ядро в почти всички имаше подобрение, защото то поемаше поне операционната система и множеството малки програми, работещи във фонов режим. Въвеждането на още две ядра води до подобрения единствено при подходящ софтуер. За щастие вече голяма част от приложенията за мултимедийна обработка (изображения, звук и видео) и работа с 3D модели поддържат многонишкова работа и се възползват от допълнителните ядра. При игрите подобрението е незначително и рядко надхвърля 3-5%.
Предлагат се два модела четириядрени Core2 – Q6600 работещ на 2.4GHz и QX6700 (Extreme Edition, отключен множител) работещ на 2.66GHz. Най-бързият двуядрен процесор X6800 работи на 2.93GHz, но въпреки това, ако ще давате над 1000$ (колкото струват двата върхови модела на Intel) по-добре вземете четириядрен, който да пуснете на 2.93GHz (или повече, Core2 често достигат над 3GHz) с подходящо дъно и охлаждане.
Core 2 Duo
Intel продължават да разширяват разпространението на Core2 ядрото в продуктовата си гама. Позициониран под C2D E6300 (1.86GHz, 266MHz/1066QPB шина, 2MB L2) е новият C2D E4300 (1.8GHz, 200MHz/800QPB, 2MB L2, без поддръжка за VMX/Virtualization Technology, което не е особена загуба за масовия потребител). Exxx предоставят добри възможности за overclock (заради по-ниската номинална честота на системната шина) и естествено са по-евтини.
Xeon DP (за двуцокълни системи с LGA771) получиха модели, базирани на 80W C2Q с 8MB L2 и имат EIST (освен за тези с неприложим множител 6х) – E5310 (1.6GHz, 1066QPB), Е5320 (1.86GHz, 1066QPB), E5335 (2GHz, 1333QPB), E5345 (2.33GHz, 1333QPB), X5355 (2.66GHz, 1333QPB, 120W – най-бързият четириядрен процесор). Xeon UP (за едноцокълни системи с LGA775) са базирани на 65W C2D с 1066QPB, без EIST – 3040 (1.86GHz, 2MB L2), 3050 (2.13GHz, 2MB L2), 3060 (2.4GHz, 4MB L2), 3070 (2.66GHz, 4MB L2) и на 105W C2Q с 1066QPB, 8МВ L2, без EIST – X3210 (2.13GHz), X3220 (2.4GHz).
C2Duo Mobile получиха два нови модела със 17W TDP (само с 2W над Core Duo L), 166MHz/667QPB, 4МB L2 и EIST – L7200 (1.33GHz) и L7400 (1.5GHz).
Celeron M получи първия си Core2 представител (и единствен засега едноядрен процесор с Core2) – 520 с 30W TDP (с 3W повече от Core базираните Celeron M), 1.6GHz, 1MB L2, 533QPB и без EIST. Това е и първият 64-битов (x86-64) Celeron M. Засега все още няма ULV Core2 Celeron M и C2D U7xxx модели.
По-старото Core Duo ядро се използва за два Xeon DP (за двуцокълни системи със Socket604) с 31W, 667QPB, 2МВ L2, без EIST и работещи на 1.66GHz и 2GHz (без моделни номера); за два Core Solo с 5.5W TDP, 133MHz/533QPB и 2МВ L2 – U1300 (1.06GHz) и U1500 (1.33GHz); както и за Celeron M 443 ULV (5.5W, 1.2GHz, 533QPB, 1MB L2, без EIST).
Последни модификации на Netbrust
Netbrust архитектурата започнала от Pentium 4 1.3GHz с 256KB L2 получи последните си варианти. Двуядрените Pentium D/XE достигнаха 960 (3.6GHz, 200MHz/800QPB, 2MB L2) и 965 (3.73GHz, 1066QPB, 2MB L2, HyperThreading – 4 нишки). Появиха се модификации на P-D без VMX/Virtualization – 915 (аналог на 920/2.8GHz), 925 (3GHz) и 945 (3.4GHz). Така и не се появи P-D 970 (3.8GHz), липсва и 935, а номерата 955/965 вече се използват от P-XE. P-D получиха и EIST поддръжка. Към апокрифните P4 LGA775 90nm с 533QPB, 1M L2, NX-bit, x86-64 и без EIST бяха добавени още три – 524 (3.06GHz, HyperThreding – 2 нишки); 519К (3.06GHz, без HT – 1 нишка) и 516 (2.93GHz, без HT). Подобно на тях 90nm Celeron D (256K L2, 533QPB) има два модела без x86-64 и без NX-bit – 315 (2.26GHz) и 310 (2.13GHz). Celeron D LGA775 получи последното 65nm NetBrust ядро с 512K L2 (двойно по-голям кеш спрямо 90nm Celeron D) и вече стандартните за серията 533QPB, x86-64, NX-bit, липса на EIST и VMX. Предлагат се четири модела – 347 (3.06GHz), 352 (3.2GHz), 356 (3.33GHz) и 360 (3.46GHz).
Xeon DP/MP (двуцокълни/четирицокълни системи Socket604) също получиха 65nm NetBrust ядрото (VMX/VT, HyperThreading, NX-bit, x86-64, EIST), което се използва за двуядрени модели: Xeon DP с по 2МВ L2 кеш на ядро (общо 4MB) – 5030 (2.67GHz, 667QPB, 95W), 5050 (3GHz, 667QPB, 95W), 5060 (3.2GHz, 1066QPB, 130W, без EIST) и 5063 (5060 с понижено напрежение, 95W), 5080 (3.73GHz, 1066QPB, 130W); Xeon MP с по 1МB кеш на ядро и обща силициева пластина на двете ядра (заимствана от P-D 8xx) заедно с допълнителен кеш от трето ниво (серия N с 667QPB и серия M с 800QPB) – 7110N/M (2.5GHz/2.6GHz, 4MB L3, без EIST, 95W), 7120N/M (3GHz, 4MB L3, без EIST, 95W), 7130N/M (3.16GHz/3.2GHz, 8MB L3, 150W), 7140N/M (3.33GHz/3.4GHz, 16MB L3, 150W), 7150N (3.5GHz, 16MB L3, 150W). Celeron-D и XeonMP са единствените фамилии процесори на Intel, които все още нямат нито един представител от осмо поколение (Core2).
Intel все още развиват и Itanium2 процесорите си, които са несъвместими с x86 софтуера. Първият двуядрен такъв се появи под формата на Hondo mx2 модул в някои HP системи през 2003-та. mx2 обединява два 130nm I2 процесора (1.1GHz, 4MB L3) и 32МB L4 кеш памет от четвърто ниво.
Истинските двуядрени I2 се появиха едва през 2006-та при преминаването на фамилията към 90nm производствена технология. Нововъведенията са въвеждането на моделни номера и поддръжката на IA-64 варианти на HyperThreading, Virtualization и по-добра корекция на грешките в кеш паметта. Предлагат се един едноядрен (75W) 90nm I2 – 9010 (1.6GHz, 6MB L3, без HT – 1 нишка, 128bit 533QPB@8.5GB/s) и пет двуядрени (104W) – 9015 (1.4GHz, 128bit 400QPB@6.4GB/s, 12MB L3, HT – общо 4 нишки), 9020 (1.42GHz, 533QPB, 12MB L3, HT), 9030 (1.6GHz, 533QPB, 8MB L3, без HT – 2 нишки), 9040 (1.6GHz, 533QPB, 18MB L3, HT) и 9050 (1.6GHz, 533QPB, 24MB L3, HT). Кеш паметта на 90nm е по-голяма от максималната при 130nm I2 (9MB), но тактовите честоти на процесора и системната шина са по-ниски (130nm I2 1.66GHz, 128bit 667QPB@10.6GB/s).
Автор: Стоян Спахиев