За повечето потребители изборът на оперативна памет прилича на избора на диск – колкото е по-голям капацитетът, толкова по-добре. Това в общи линии е вярно, понеже оперативната памет никога не е много. Но мнозина забравят за скоростните характеристики на RAM паметта и считат, че те твърде слабо влияят на производителността.

Но на практика се получава следното: при клокването на паметта, расте производителността на централния процесор и оттук – на цялата компютърна система. Това съвсем не са някакви части от процента или един-два процента, които могат да се усетят само в бенчмарковете. Не, това са съвсем осезаемите при ежедневната работа десетки проценти. На пръв поглед изглежда странно – клокваш един компонент, а се увеличава производителността на друг. Всъщност, нищо необикновено няма, понеже компютърът е съчетание от свързани един с друг електронни компоненти, които не могат да работят поотделно. Така например, никой не се учудва на сериозното ускоряване на компютърната система при замяната на стандартния HDD с SSD. Само че тук става дума за нещо по-друго.

С хард и флаш дисковете всичко е ясно – колкото е по-висока скоростта на четене и запис, толкова по-бързо ще се прочитат файловете и работата с тях ще бъде по-бърза. Но когато разглеждаме RAM и CPU нещата не са толкова ясни. Да се опитаме да ги изясним.

По какъв начин процесорът обработва данните

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

Процесорът обработва тази неструктурирана информация и при този процес се образува поредица от инструкции. Тоест, процесорът вече знае какво да прави с тези данни, но не ги обработва веднага.

Всеки процесор разполага с голям брой изчислителни блокове – ALU и FPU, предназначени за извършването на логически и аритметични инструкции. При всеки такт на тактовата честота процесорът избира от образувалата се поредица от инструкции именно тези микрооперации, които могат да заемат възможно най-много логически блокове. Разбираемо е, че когато всички изчислителни блокове или ресурси на процесора са заети, то тогава той е най-производителен.

Но на практика се случва той да престоява. Да разгледаме един съвсем опростен пример. Да съберем числата X и Y. Изглежда съвсем лесно, но за процесора не е съвсем така. За него задачата е лесна, само ако вече знае и разполага с тези X и Y. Но твърде често X трябва да се получи като резултат от събирането на A + B. А числото Y може да е резултат от разликата между C и D. Ето защо, процесорът най-напред трябва да пресметне A+B и C-D и чак след това да изчисли X+Y. В крайна сметка, изчисляването на X+Y се отлага минимум с един такт. А това води до възникването на празно място в конвейера за текущия такт.

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

Но програмистите от подобен ранг са твърде малко и процесорите непрекъснато се модифицират от производителите по такъв начин, че да бъдат заети, дори и когато данните са недостатъчни. За тази цел се използва предсказване на преходите чрез собствен, вътрешен алгоритъм, който организира работата на процесора, когато данните още не са готови и са недостатъчни.

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

Необходима е повече памет

Очевидно е, че проблемът с недостига на данни нямаше да го има, ако процесорът ги записваше в себе си. Но на практика това е твърде скъпо и е икономически неизгодно. Ето защо кеш паметта в процесорите растеше твърде бавно. През 90-те години това бяха няколко десетки килобайта кеш памет от първо ниво (L1). Преди началото на хилядолетието, това се оказа катастрофично малко и бе добавен кешът от второ ниво (L2) с капацитет стотици килобайти. В края на нулевите години се появи L3 кеш паметта, даваща възможност за запис на няколко MB информация. А съвсем наскоро – през 2015 година се появиха процесори с кеш памет от четвърто ниво (L4) с капацитет до 128 MB.

Смисълът в увеличението на кеш паметта е ясен – да се осигурят данни за процесора, до които той може да стигне максимално бързо, с най-малки задръжки, което намалява престоите. Естествено, няма как всички данни да бъдат поместени в кеша и те се съхраняват в оперативната памет. Но забавянето на RAM е около десет пъти по-голямо от L1 кеша и няколко пъти по-голямо от L3. И още, пропускателната способност на паметта е направо смешна, ако я сравним с гигантските обеми информация, с които процесорът може да оперира всяка една секунда.

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

По какъв начин оперативната памет влияе на производителността

Да спрем с теорията и нека да си обясним, как точно влияе RAM паметта на производителността на CPU. Да си представим хипотетична задача, при която процесорът престоява 50% от времето си. На пръв поглед, таск мениджърът би трябвало да показва 50%. Но не, мениджърът на задачите ще си показва пълните 100%. Лъже ли? Общо взето, не. На процесора му е поставена задача и той с всички сили я изпълнява. А това, че конвейерът е 50% зает – то поставената задача е някаква нестандартна и процесорът не може да изпълни по-бързо.

А сега да си представим, че разполагаме с някаква идеална памет, честотата на която може да удвоим. Какво ще се случи? Първо, двойно ще се увеличи пропускателната способност. Второ, двойно ще се намали времето за достъп.

Разбира се, на практика това няма как да стане. Контролерът на паметта има свое забавяне на достъпа. А и двойно да се увеличи честотата, без да се увеличат таймингите си е фантастика. Но нека да приемем, че това е възможно. Тоест, при удвояването на тактовата честота на оперативната памет ще намалим двойно времето за достъп и процесорът ще престоява 25% от времето си.

Ако още веднъж удвоим RAM честотата, процесорът ще престоява 12,5%, И ако още веднъж удвоим тази честота, то това ще добави на процесора още 6,25% производителност и т.н. Добре се вижда, че „безкрайното“ клокване на паметта не е ефективно – само след три удвоявания на честотата, вече печелим само единични проценти производителност и това в случай, че първоначалната задача го е натоварвала до 50%. На практика този процент е по-малък и увеличението на честотата над определено ниво престава да оказва съществено влияние на производителността.

Ето защо паметите и процесорите винаги се развиват паралелно – така например, с бурния ръст на производителността на CPU през 90-те години, когато новите процесори само след две години станаха двойно по-производителни, оперативната памет извърши качествен скок от от SDRAM към DDR, при която „външната“ честота на паметта стана двойно по-висока от „вътрешната“. А днес сме свидетели на нови бързи многоядрени процесори с по над 10 ядра. Паметта съответно, извършва преход от 4-канална към 6-канална.

 


Ако искаме да сме по-точни, трябва да кажем, че RAM паметта всъщност не увеличава производителността на процесора. Тя намалява времето на неговия престой и го приближава към неговата идеална производителност, която би могъл да даде в един идеален свят. Ето защо, няма как с един Intel Celeron и DDR4-5000 да получим производителността на Core i7. Не е възможно. Но един бърз съвременен процесор може да даде учудващо висока производителност чрез клокване на RAM паметта.

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

6
ДОБАВИ КОМЕНТАР

avatar
2 Коментари
4 Отговори на коментарите
5 Последователи
 
Коментарът с най-много реакции
Най-горещя коментар
5 Автори на коментарите
rootботКольоAnonimousТео Автори на последните коментари
  Абонирай се  
нови стари оценка
Извести ме за
Тео
Тео

Много подробно и интересно

Anonimous
Anonimous

Далеч от подробно е, но върши работа. И честно казано, не програмистите пишещи програмите са виновни, защото в крайна сметка няма стандарт за броя на ядрата, така че да пишат за всяко ядро по отделно. тук идва на помощ асемблирането, което не се е променило може би от поне 10 години. Колкото и нови версии да са се предлагали на операционните системи, то асемблирането в машинен, разбираем код за процероа не се е променило почти никак. Следващата крачка, би трябвало да е изработката на некомпресирана заготовка в асемблер, която да се поема индивидуално във всяка машина от ИИ според броя… Виж още »

root
root

ужас… това ти ли го сътвори или го копира от интернет…

Кольо
Кольо

То така баш става лесно и безпроблемно удвояването на честотата на оперативната памет, а после и още веднъж…Тук трябва да изредя цяла поредица емотикони…Освен, че тази чисто теоретична постановка е практически невъзможна, идва момента, че нещата не са съвършени и по отношението на това, че опираме и до скорост на работа на кешовете на процесора, най-вече по отношение на по-бавните кешове с по-големите номера…да, кешовете са от няколко до десетки пъти по-бързи от оперативната памет…но и обемът им е десетки, стотици, че и хиляди пъти по-малък и въпреки голямата си скорост може да се окажат тясно място и до както… Виж още »

бот
бот

XDDD

бот
бот

ok