Поглед в процесора
Част 3 – възходът и падението на AMD
![]()
С представянето на Core 2 от страна на Intel настъпиха доста тежки дни за AMD. Оказа се, че от страна на AMD просто не съществува адекватен отговор под формата на процесор, който да бъде равностоен на моделите, използващи архитектура Core 2. При разработката на процесорите с архитектура Barcelona, явяващи се наследници на моделите К8, фирмата срещна сериозни затруднения, отчасти произтичащи от факта, че тя съвпадна с прехода към по-малък производствен процес. Година по-късно AMD най-сетне е готова да предложи трета ревизия на процесорите Phenom, при която се използват пълноценно нативната четириядрена структура на чипа, както и пълните възможности, заложени в дизайна на архитектура. В какво се състоят самите промени и ще бъде ли по силите на ревизията със степинг В3 да се изяви като достоен конкурент на Core 2? Както вече отбелязахме, за съжаление на AMD в момента, в който Intel анонсира своите Core 2 процесори, тя нямаше с какво да отговори равностойно. Наистина последното поколение процесори на AMD представляваше изключително усъвършенствано от гледна точка на еволюцията на К7 ядро, но съпоставено такт за такт с Core 2, то изоставаше чувствително. За да успее да задържи своите пазарни позиции, фирмата трябваше изключително бързо да разработи, представи и пусне в серийно производство алтернативен вариант с адекватна производителност, което тя така и... не успя да направи.
Проблемът тук далеч не се корени в това, че ядрото Barcelona използва лош дизайн – затрудненията на AMD дойдоха от няколко неща едновременно. На първо място фирмата и нейните дизайнерски екипи бяха притиснати от времето, като им се налагаше за по-малко от година да вложат в своя продукт това, което екипите на Intel направиха за няколко години. В допълнение към това фирмата планираше да произвежда своите нови процесори по 65nm технология, преходът към нея обаче се оказа далеч по-труден, отколкото се очакваше.
Въпреки затрудненията, които AMD успя да преодолее, компанията анонсира на пазара своето ново поколение процесори, използващи архитектурата, наречена от нея Barcelona. Освен използваната 65nm производствена технология процесорите Barcelona представляват нативни четириядрени чипове, при които всички ядра са обединени на общ кристал. За съжаление късите срокове на разработка налагат за изходен материал при дизайна на Barcelona да се използва архитектурата на предишното поколение процесори на фирмата – К7 и К8. Това обаче съвсем не означава, че между К8 и Barcelona няма големи разлики. Напротив, в Barcelona АМD правят редица съществени промени, чрез които се цели повишаване на производителността на процесора като цяло. Целта на тази статия далеч не се състои в недвусмисленото посочване на „първенец“ между моделите на двете фирми, а в това да се представят разликите между тях на разбираем език. Що се отнася до въпроса кой процесор все пак е по-добрият, нека оставим на тестовете да покажат.
Подобренията в Barcelona – 128 битов SSE модул и последствията от добавянето му
Едно от доста сериозните нововъведения в Barcelona е наличието на модул, способен да изпълнява наведнъж 128-битови SSE инструкции. Предишното поколение процесори на AMD К8 също може да изпълнява 128-битови инструкции, но тъй като разполага само с 64-битови модули, за изпълнението им се налага те да бъдат разделени на 2 части с такава широчина. Освен допълнителното затруднение и натоварване на шината за трансфер на данните тази задача налага използването на още един допълнителен модул за извличане и декодиране на операнди. Разширяването на SSE модулите в Barcelona до 128 бита позволява за един такт всеки такъв модул да изпълнява по една инструкция. В допълнение към това фактът, че те са с широчина от 128 бита, не налага SSE инструкциите да се „разчупват“ на две 64-битови парчета, което допълнително намалява натоварването над декодерите.
Това разширяване на SSE модулите от 64 към 128 бита всъщност повежда след себе си още няколко доста любопитни и полезни промени, ползата от които не касае само и единствено SSE кода. За начало извличането, декодирането и складирането в процесорната кеш памет на 128-битовите SSE инструкции изисква наличието на нова, по-широка шина за трансфер на операндите към процесора. Ето защо при Barcelona АМD разширяват канала за трансфер на операнди към извличащите модули от 16 на 32 бита за процесорен такт. Това разширяване обаче далеч не касае само SSE кода – от него имат полза и integer инструкциите, а като цяло и всички инструкции с по- голям размер.
![]()
Разширяването на SSE модулите и шината за трансфер на код към извличащите модули извежда на преден план ново тясно място в структурата на Barcelona – става въпрос за шината за комуникация между L1 кеш паметта и SSE регистрите на процесора. При К8 архитектурата процесора може да изпълнява до 2 трансфера от регистрите към процесорът, всеки от които с максимална широчина от 64 бита, при Barcelona тяхната широчина е увеличена до 128 бита. Така процесорът за един такт може да извърши два 128-битови трансфера от SSE регистрите към ядрото. В допълнение към това AMD също така увеличават широчината на шината за трансфер на данни между L2 кеша и контролера на паметта, който се намира в самия процесор.
Подобрен модул за предсказване на преходите, Sideband Stack Optimizer
Производителността на днешните процесори е в доста пряка зависимост от това как те ще успеят да предскажат правилно, извлекат и кешират преходите в кода, които наистина ще се състоят. За да успеят да предскажат правилно преходите в програмния код, освен отличните си алгоритми модулите, занимаващи се с тази задача, се нуждаят от колкото се може по-пълни данни за вече извършените такива. Любопитното при Barcelona е, че за пръв път AMD влага в своите процесори модул за предсказване на индиректни преходи и разклонения в кода. Този тип преходи не водят към директна инструкция, а към адрес в паметта, в който се съхранява адресът на инструкцията, към която води разклонението в кода. Предсказването на индиректни преходи обикновено облагодетелства архитектури с по-дълбок конвейер на инструкциите, ето защо е малко вероятно добавянето му в Barcelona да доведе до значимо ускорение.
В допълнение към възможността за предсказване на индиректни преходи в Barcelona AMD увеличават също така и броя предишни разклонения, чието изпълнение е избрал да кешира предварително процесорът. Тъй като предсказването на преходите се базира на рекурсивно проследяване на успешно избраните разклонения, за модула, занимаващ се с тази задача, е от важно значение броят на запазените в списъка преходи да е възможно най-голям.
Една доста любопитна нова функция, която AMD добавят в Barcelona, е нареченият от тях Sideband Stack Optimizer. Технологично това представлява допълнителен модул, чиято единствена цел е да се занимава с х86 стековите операции и на практика е идея, първоначално разработена от Intel за процесорите Pentium M. Принципната идея в случая е следната: в х86 кода доста често се срещат инструкции, манипулиращи стека, които инструкционните декодери на процесора третират като обикновените инструкции. Добавянето на отделен модул, занимаващ се само с тях, позволява известно освобождаване на декодерите, което, разбира се, повишава цялостната производителност на процесора.
Благодарение на добавянето на Sideband Stack Optimizer от AMD в Barcelona освен освобождаване на декодерите се постига също така и облекчаване на целочислените (integer) модули, които преди това са се занимавали със стековите операции.
![]()
Оптимизирано извличане на инструкциите и по-бърз контролер на паметта
Друга област, в която AMD променят Barcelona (съпоставена спрямо предшественика си в лицето на К8), са модулите, занимаващи се с извличането и съответно доставянето на инструкциите от паметта. Когато Intel представи Core 2, тя наблегна на факта, че всяко от ядрата разполага с 3 собствени модула за извличане. Благодарение на големия брой модули за ядро процесорите с архитектура Core 2 имат наистина изключително ниско забавяне при извличането на инструкции от паметта, което естествено значително повишава IPC (Instruction Per Clock) за процесора като цяло.
При Barcelona АМD не променят броя на модулите, извличащи инструкции от паметта – както и при К8 тук те са по 2 броя на ядро – по един брой за данни и инструкции. В какво тогава се състои тяхната оптимизация спрямо К8? Разликата е, че при Barcelona те могат да доставят извлечените от тях данни директно в L1 кеша на ядрото, като по този начин се избягва излишното задръстване на L2 кеша с излишна информация. Тъй като при AMD контролерът на паметта се намира директно в ядрото на процесора, компанията няма нужда от добавянето на повече декодери, които да прикриват закъснението в обръщенията на процесора към паметта, а е достатъчно просто да се оптимизира работата на вече наличните такива.
Като стана въпрос за контролера на паметта, в Barcelona той също е подложен на известно усъвършенстване, което не е за пренебрегване. Най-важното тук е променената организация на работа на контролера като цяло, с възможност за избирателно извършване на запис или четене. За да поясним смисъла на тази промяна, нека разгледаме принципа на работа на класически контролер на паметта за DDR или DDR2 памет, както и такъв за FB-DIMM памет, разработен от Intel. Едно от най-големите превъзходства на Intel-ския контролер се състои в това, че той може да записва и чете от адреси в паметта едновременно. При DDR/DDR2 паметите това е невъзможно, ето защо на контролера на паметта му се налага да превключва между операциите на четене и запис. Тънкият момент тук се корени във факта, че това превключване между четене/запис изисква известно забавяне, което директно рефлектира върху производителността на процесора.
Обикновено в класическия програмен код, изпълняван от процесора, имаме относително еднакъв брой операции на четене и запис в паметта, без да е налична смислена подредба, оптимизираща производителността. При К8 AMD въвеждат известен „афинитет“ на контролера на паметта към операциите на четене пред тези на запис, с което до известна степен се редуцира забавянето от превключването между операциите, но това не е достатъчно. При Barcelona обаче AMD осъществят цялостно нова схема – тук контролерът на паметта складира всички операции на запис в собствен кеш. Когато се съберат достатъчен брой заявки за запис, контролерът превключва в режим на запис и последователно извършва всички операции. За да се избегнат конфликтите в програмния код, контролерът на паметта разполага с известна „интелигентност“, чрез която може да разпознае кога дадена операция е приоритетна и да я извърши преди другите в кеша.
![]()
В допълнение към това, подобно на Core 2 на Intel, Barcelona вече може да извършва приоритетно операции на четене от паметта преди тези на запис независимо от подредбата, в която те се намират в програмния код. Благодарение на тази функция процесорите на Intel бяха по-бързи от тези на AMD в някои конкретни операции, касаещи паметта, въпреки липсата на вграден контролер на паметта в тях. Дали чрез влагането на подобна технология в Barcelona AMD ще успее да навакса изгубената производителност, тепърва предстои да се види в В3 ревизията.
![]()
Ще успее ли Barcelona?
Не е тайна, че след анонсирането на Core 2 от страна на Intel пазарните позиции на AMD, меко казано, претърпяха крах. След излизането на Barcelona нещата за AMD все още не са никак розови, но благодарение на това компанията успя да възвърне част от пазарния си дял в някои области като сървърните решения например. TLB проблемът и забавянето, причинено от него, определено затрудниха и без това лошото положение на AMD, тъй като в момента за Barcelona има изключително малък „прозорец“, в който тя да съществува. Влиянието й за момента е ограничено от представянето й спрямо Core 2 (незадоволително за момента) и успеха на Intel с прехода към 45nm производствен процес.
И накрая едно лично мнение - ако изглежда, сякаш питая симпатии към AMD, това наистина е така. В зората на процесорния „бизнес“ съществуваха доста фирми, занимаващи се с тази дейност. В онези времена потребителят все още не се третираше като „донор на средства“, който да бъде прилъган с поредния трик, за да си купи нов процесор. Наистина в онези дни процесорите на Cyrix (помни ли ги някой?), Centaur, UMC или на Transmeta не даваха тази производителност, която даваха моделите на Intel. Въпреки това те даваха нещо много по-важно – възможността да избираме. Ето защо лично аз стискам палци AMD да се съвземе, тъй като от това ще имаме полза всички.
AMD и Intel – Давид срещу Голиат?![]()
Макар на пръв поглед да изглежда сякаш последните няколко години AMD е била обзета от зимен сън, това всъщност не е съвсем така. Подобно на директните сравнения между процесорите Pentium 4 с Netburst и Athlon K8, съпоставянето на двете компании е, меко казано, некоректно. За разлика от Intel AMD разполага със значително по-ограничени ресурси, чието отклоняване за други цели е почти невъзможно. Това, което имам предвид в случая, е именно фактът, че за разработката на цялостно нова процесорна архитектура е необходимо изключително много време и ресурси и не е по силите на всяка компания. Успехът на Intel и на Core 2 в частност се дължи на възможността на Intel да отклони достатъчно ресурси, за да може да започне разработката и развитието на нов проект.
Дизайнът и развитието на Core 2 се дължи на работата на специално формираната от Intel група в Израел, наречена Israel Development Center (IDC). За разлика от групата, работеща по проекта NetBurst, IDC предприема нов, по-драстичен подход на работа. При нея архитектурата се обновява всяка година, а не каквато е била дотогавашната политика на фирмата – на всеки 4-5 години. Освен по-високата производителност на IDC честото обновяване на моделите води до своеобразен вид feedback, благодарение на който е възможно бързото усъвър- шенстване на моделите.
Както вече отбелязахме, за разлика от Intel AMD няма необходимите ресурси, за да стартира нов проект за процесор. По тази причина както К8, така и Barcelona представляват усъвършенствани и леко променени версии на предходните модели. За съжаление бързината, с която се наложи нейното разработване, доведе до някои проблеми както с чипсетите, така и със самите процесори (небезивестния TLB бъг). За съжаление на AMD излизането на Core 2 до известна степен съвпадна със закупуването на ATI от нея, което допълнително допринесе за „изтощаването“ на компанията. В крайна сметка, ако се замислим, ще стигнем до извода, че от наличието на поне двама конкуренти на пазара за процесори ще има най-голяма полза именно крайният потребител. По тази причина ще е добре както за нас като потребители, така и за AMD като фирма следващите продукти на компанията да се окажат конкурентоспособни.