4. Hyper-threading технология
Технологията Intel Hyper-threading позволява на всяко ядро на процесора да изпълнява две задачи едновременно, като всъщност прави две виртуални ядра от едно реално ядро. Това е възможно поради факта, че в такива ядра състоянието на две нишки се запазва наведнъж, тъй като ядрото има свой собствен набор от регистри, собствен програмен брояч и собствен блок за прекъсване за всяка нишка. В резултат на това операционната система вижда такова ядро като две отделни ядра и ще работи с тях по същия начин, както би работила с двуядрен процесор.
Въпреки това, останалите елементи на ядрото за двете нишки са общи и се споделят между тях. Освен това, когато по някаква причина една от нишките освободи елементите на тръбопровода, другата нишка използва свободните блокове.
Елементите на тръбопровода може да не са включени, ако например е имало пропуск при достъп до кеш паметта и е необходимо да се прочетат данни от RAM, или преходът е неправилно предвиден, или се очакват резултатите от обработката на текущата инструкция, или някои блокове изобщо не се използват при обработката на тази инструкция и т.н.
Повечето програми не могат да натоварят напълно процесора, тъй като някои използват основно прости изчисления с цели числа, с малко или никакво използване на FPU. Други програми, като 3D Studio, изискват много изчисления с помощта на числа с плаваща запетая, но в същото време освобождават някои други изпълнителни единици и т.н.
В допълнение, почти всички програми имат много условни скокове и зависими променливи. В резултат на това използването на технологията Hyper-threading може да осигури значително повишаване на производителността чрез максимално натоварване на тръбопровода на ядрото.
Но не всичко е толкова просто. Естествено, печалбата в производителността ще бъде по-малка, отколкото при използването на няколкофизически ядра, тъй като нишките все още използват общи блокове от един и същи тръбопровод и често трябва да чакат необходимият блок да бъде освободен. В допълнение, повечето процесори вече имат няколко физически ядра и когато се използва технологията Hyper-threading, виртуалните ядра могат да станат твърде много, особено ако процесорът съдържа четири или повече физически ядра.
Има и друг сериозен проблем на Hyper-Threading технологията - това са конфликти, които възникват, когато инструкции от различни нишки се нуждаят от блокове от един и същи тип. Може да има ситуация, когато две подобни нишки ще работят паралелно, често използвайки едни и същи блокове. В този случай увеличението на производителността ще бъде минимално.
В резултат на това технологията Hyper-Threading е много зависима от типа натоварване на процесора и може да даде добър тласък на производителността или може да бъде практически безполезна.
3. Кеш памет
Въпреки всички технологии и трикове на разработчиците, производителността на процесора все още зависи директно от скоростта на извличане на инструкции и данни от паметта. И дори ако процесорът има балансиран и обмислен конвейер, използва технология Hyper-Threading и т.н., но не осигурява правилната скорост за извличане на данни и команди от паметта, тогава в резултат на това цялостната производителност на компютъра няма да отговаря на вашите очаквания.
Следователно, един от най-важните параметри на процесорното устройство е кеш паметта, предназначена да намали времето за извличане на команди и данни от основната RAM и действаща като междинен буфер с бърз достъп между процесора и основната RAM.
Кеш паметта е изградена на базата на скъпа SRAM-памет (статична памет с произволен достъп), която осигурява достъп до клетките на паметта много по-бързо, отколкото до клетките на DRAM-паметта (динамичнапамет с произволен достъп), на базата на която е изградена RAM. В допълнение, SRAM-паметта не изисква постоянно регенериране, което също повишава нейната производителност.
Кеш паметта е разделена на няколко нива. В съвременните процесори обикновено има три нива, а в някои топ модели процесори понякога има четири нива на кеш памет.
Кешът от по-високо ниво винаги е по-голям и по-бавен от кеша от по-ниско ниво.
Най-бързият и най-малък кеш е кешът от първо ниво. Обикновено работи на честотата на процесора, има обем от няколкостотин килобайта и се намира в непосредствена близост до блоковете за извличане на данни и инструкции. В същото време тя може да бъде единична (архитектура на Принстън) или разделена на две части (архитектура на Харвард): памет за инструкции и памет за данни. Повечето съвременни процесори използват споделен L1 кеш, тъй като това позволява извличането на данни едновременно с извличането на инструкции, което е изключително важно за работата на конвейера.
Кеш паметта от второ ниво е по-бавна (средно време за достъп 8-20 процесорни цикъла), но има обем от няколко мегабайта.
L3 кеша е още по-бавен, но сравнително голям. Има процесори с кеш от трето ниво, по-голям от 24 MB.
В многоядрените процесори обикновено последното ниво на кеш паметта се споделя между всички ядра. Освен това, в зависимост от натоварването на ядрата, количеството кеш памет на последното ниво, разпределено за ядрото, може динамично да се променя. Ако ядрото е под голямо натоварване, тогава към него се разпределя повече кеш памет чрез намаляване на количеството кеш памет за по-малко натоварени ядра. Не всички процесори имат тази възможност, но самоподдържаща технологията Smart Cache (например Intel Smart Cache или AMD Balanced Smart Cache).
Кеш памет от по-ниско ниво - обикновено индивидуална за всяко процесорно ядро.