Дънни платки

Barcelona – новата AMD архитектура

Written by Редактор

Когато се появи ядрото AMD K8, много хора останаха страшно доволни от това, което в бяха сътворили AMD – изцяло нова архитектура, помогнала сериозно в здравата битка между AMD и Intel на процесорния фронт. Още тогава се заговори усилено за продължението, но по това време хората обръщаха повече внимание на първите процесори Athlon 64, и не мислеха толкова какво евентуално ще ни предложи K8L (това име бе обявено по-късно). След няколко забавяния и толкова дълго време чакане (а десктоп потребителите ще трябва да почакат дори още малко, защото чипът Phenom ще се позабави с месец-два), AMD тези дни обяви ядрото Barcelona– най-накрая архитектурата на K8 претърпя не просто освежаване, но и достатъчно сложна преработка, за да може да се противопостави по-адекватно на сериозната конкуренция на Intel. Но какво представлява Barcelona?


AMD K8L, или Barcelona, все още се базира на архитектурата на K8, но подобренията са повече от едно или две. На първо място, поради комплицираността на чипа можем да видим 11 метални слоя, което е с цели три повече в сравнение с двуядрените Athlon 64 X2. Общият брой на транзисторите е достигнал число, много близко до това при Intel Kentsfield – Barcelona се разпростира върху цели 463 милиона (Kentsfield – 582 милиона, но пък притежава общо над 8 MB бърза кеш памет), обаче за това си има и причина – не само промяната по самото ядро, но и наличието на ниво L3 води до подобно увеличение.


Като говорим за кеш, при Barcelona се случва нещо, което не бяхме виждали, откакто AMD обяви процесорите си K6-III – супербърза буфер памет на три нива. И въпреки че “тройната” кеш архитектура при K6-III не може да се сравнява с тази при K8L, фактът е налице. В AMD са запазили 128 KB L1 (вероятно повишаването на тази стойност до 192 или 256 е прекалено скъпа цел за постигане), а L2 за момента е само 512 KB за всяко ядро. След тях обаче имаме още 2 MB L3, разпределено между всички четири ядра. Това прилича малко на архитектурата на Intel Core, но реално подобен подход се оказа много сполучлив, поради което в AMD съвсем логично решиха да подходят в посока на усвояването му. Наличието на L3 кеш не само помага на четирите ядра да комуникират помежду си по много бърза “шина”, което да води до по-сериозно увеличение на производителността при многонишкови операции, но и служи като много бърз буфер с доста приличен обем, в който по-маловажната информация, налична в L2, да се пази до появата на нужда от нея отново в L2. Така вместо повторно прехвърляне между системната памет и L2 (вече веднъж се е случило в обратната посока), L2 изисква тази порция от информация от L3 и това се случва доста по-бързо.



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


И докато сме на темата за кешовете при новия K8L, едно нещо се промени сериозно (предполагам, че с него ще започне истинската борба между AMD и Intel, що се отнася до производителността) – L2 вече разполага със 128 bit шина за достъп. Това си е направо революция, защото още от K6-2 насам в AMD използват 64 bit шина и запазиха това правило дори и за процесорите K8, произведени до момента. И докато за ситуацията преди 7-8 години 64 bit достъп до L2 кеша беше достатъчен, през последните 2-3 години това бе “препъникамък” за показване на истинските възможности на чиповете K8. Тази промяна бе продиктувана не само от остарелият вече подход. Поради подобрението в обработката на SSE инструкции (сега Barcelona може да изпълнява 128 bit SSE на един такт, а не както при K8 – разбиване на 128 bit до 2 х 64 bit и след това последователното им изпълняване, което сумарно отнема 3 цикъла), AMD трябваше да попромени и други аспекти от работата между L1 и L2 кеша, както и между L2 и контролера за паметта. Сега L1 Data може да зарежда до две 128 bit SSE, в сравнение с 2х 64 SSE при K8 (това отново е наложено от обясненото по-горе за 128 bit SSE). Логично, щом работата между L1 и L2 е придобила 128-битов характер, то същото трябва да се случи и между L2 и паметта.


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


Освен това обемът на буфера за извършена работа (return stack) е удвоен. В този буфер ядрото пази информация какви операции са били извършвани на базата на какви предсказания от описания по-горе модул. Удвояването на return stack ще позволи на този модул да прави още по-точни предсказания, когато става дума за вече обработвани инструкции на определени адреси от паметта. По-голямото налично пространство ще позволява да се пази история на предсказанията за определени нишки и бъдещи предсказания на модула да се базират на вече извършени изчисления, което ще го прави по-ефективен.


Нека не забравяме, че и контролерът за работа с паметта е получил своите подобрения, които, между другото, се очакват от доста време насам. Всяка по-нова маска (степинг) при чиповете AMD K8, особено първите 3-4 ревизии, показваше промяна на възможностите на този контролер в някаква посока. Имаше както положителни промени, така и такива, които водеха до влошаване на производителността и стабилността при работа с различни чипове DDR1 и DDR2. AMD K8L демонстрира по-сериозни изменения, като досега използваният 128 bit вариант се заменя с два 64 bit контролера, което като цяло неминуемо ще доведе до увеличаване на ефективността при работа с паметта (спомнете си промените, които Nvidia и ATI направиха при графичните ускорители от ново поколение и увеличаването на броя на буферите към паметта за сметка на понижаване на честотната им лента). Разделянето на два контролера ще позволи независимата работа на всеки един от тях, което при наличието на четири ядра може да се окаже доста полезно и ефективно. Освен това в AMD са успели да понижат загубите от ефективност и латентността чрез една много интересна техника – вместо всеки запис в паметта да се извършва моментално, контролерът събира постъпилите записи в буфер и при напълването му всичко се изпълнява наведнъж. По този начин загубите от превключването от четене към запис и обратно се намаляват и ефективността се увеличава.


Що се отнася до мултимедийността и SSE, AMD от своя страна представи четири нови SSE инструкции, които очакваме да видим при появата на Intel Penryn, както и на бъдещи процесори на Intel. Изглежда, ако доскоро AMD следваше плътно Intel в пускането на допълнителен сет от инструкции, сега ситуацията леко се променя. Все пак не се знае дали Penryn няма да покаже още нови SSE инструкции, като за момента SSE4 предвижда описаните по-горе нови четири от AMD (наречени SSE4a).


С няколко думи, това са основните промени, които са “сполетели” новото ядро K8L на AMD. Както виждате, говорим за нещо повече от козметични промени и по всичко личи, че не само сървърният, но и десктоп вариантът ще може да предложи ново ниво на производителност, предлагана от многоядрените процесори на AMD. Както и да го погледнем, Athlon 64 X2 отдавна ни е дал всичко, на което е способен. Време е да бъде заменен.


Тодор Богданов

About the author

Редактор

Leave a Comment