Kepler GK104 – флагман по принуда

ноември 26th, 2012

Напоследък ми е все по-трудно да измислям интересни уводи за статиите. За това тоя път смятам изцяло да го пропусна. По-същество – в началото на пролетта компанията NVidia анонсира първите модели от новата си графична архитектура Kepler, като в сърцето им стои новия чип GK104. Нека да видим какво представлява и какво може да ни предложи.

Архитектура

Погледнат в по-голям мащаб Kepler не се различава кой знае колко значимо от Fermi. В голяма степен може да се каже, че компанията е взела основните блокове на старата архитектура и ги е наместила по нов начин. Но именно този начин има и най-голямо влияние при възприемането на новия чип. На първо място тук следва да отбележим отказа от използването на удвоена честота на изчислителните блокове модули на чипа, което се случва за първи път от 2006 година насам, когато тази особеност беше въведена с архитектурата G80. Причината за използването е баланса между заетата площ върху чипа, изчислителната производителност и консумацията. При положение че наличната площ е ограничена, увеличаването на тактовата честота на блоковете е вариант да се постигне желанта изчислителна производителност с помощта на по-малко на брой модули. Естествено това не става безплатно, като за целта трябва да се увеличи дължината на конвейера им, за да се улесни постигането на желаните стойности, което на свой ред намалява количеството работа изпълнявано за единица време и увеличава консумацията на чипа. В случая на G80 и последвалите го поколения от компанията явно са преценили, че с текущата технология, с която разполагат, използването на увеличена честота всъщност води до по-големи предимства отколкото недостатъци, което не е изненадващо, при положение че множителя на честотата беше 2,5Х.

С Ферми обаче нещата не стояха особено добре, като първите модели на чиповете вече станаха печално известни с ниските си добиви и огромната си консумация. NVidia успя да компенсира някои от недостатъците им с разработката на наследниците им от серията GF11x, но явно това не е било достатъчно. Особен фактор в случая има и един от редките моменти в последните години, при които самите изчислителни способности на АЛУ не се променят/увеличават по значим начин, което на свой ред позволява да не се харчат транзистори за реализацията на нови функционалност. Заедно с това се преминава и към нов технологичен процес, обещаващ много сериозен напредък откъм честотни възможности, смаляване на физическите размери на транзисторите и консумацията им.

Съвкупността от тези фактори явно е показала на компанията, че този път най-накрая могат да постигнат целите си и без да използват удвоени честоти на процесорите. И това не е учудващо,  като ще изтичам малко напред и ще кажа, че заедно с всичко останало, за пръв път компанията вдигна така решително тактовите си честоти, които през последните години пълзяха много бавно нагоре. В този случай вместо да използват удвоена честота, от компанията са избрали да увеличат двойно броя на ALU в един SIMD блок, като вече се използват по 32 АЛУ, работещи на основната честота на чипа. Това освен всичко друго позволява и да се запази “видимостта” между диспечерите и SIMD блоковете, като от гледна точка на диспечера няма промяна в извършваната работа за един негов тактова цикъл – това е един уорп (warp) на такт (32 елемента). Това е елиминирало нуждата то някакви драстични промени в диспечерите. В същото време намаляването на максималната тактова честота на АЛУ е довело и до скъсяване на конвейера им наполовина, икономисвайки сериозно количество транзистори и съответно позволявайки да се намали размера на чипа или да се добавят още повече блокове в него. Заедно с това е елиминирана поддръжката на двойна точност във SIMD блоковете, като тази задача е прехвърлена на специализирани, 64-битови АЛУ.

Тези промени оказват и сериозно влиянието на организацията на шейдерния мултипроцесор. В донякъде изненадващ развой на събитията, цялата Kepler фамилия се оказва наследник не на GF100/110 чиповете, а на GF104/114. Явно конфигурацията на последния се е оказала по-ефективния вариант, като шейдерният мултипроцесор в Kepler (наричан вече SMX, в което X няма смислено значение, а просто показва че организацията е различна) е практически удвоеният шейдерен мултипроцесор на GF104. Така че в него са налични вече цели 4 отделни диспечера на задачите (вместо два), всеки от които може да подава до 2 инструкции на такт, извличайки независими такива от кода на програмата. На свой ред те ги подават към 6 векторни блока с по 32 АЛУ (вместо 3х16 с удвоена честота), два блока с модули за съхранение/зареждане на данни с по 16 елемента (вместо 1), два блока от по 16 елемента за специални операции и интерполация (вместо един),  две групи от по 8 текстуриращи блока (вместо един) и като първа по-сериозна разлика – един блок от 8 модула за изчисления с плаваща запетая с двойна точност (64-бита), който няма еквивалент при по-старото поколение. Блокът от памет, който може да се конфигурира като L1 кеш или споделена памет за мултипроцесора е запазил обема си от 64 КБ, но регистровия блок е с удвоен обем (от 32К на 64К 32-битови регистъра).

Друга промяна е в огранизацията на шейдерните мултипроцесори в клъстерите за графична обработка и в броя им. В GF104 имаше по 4 ШМ в клъстер, като чипа разполагаше с два клъстера. В GK104 вече са налични само два ШМ в клъстер, което сумарно запазва изчислителните и текстуриращите възможности на отделния клъстер, явно посочвайки че за момента това е оптималната ситуация, но за сметка на това клъстерите са увеличени до 4 на брой, като така чипа отново има 8 ШМ. В самите клъстери е подобрена работата с полигоните и теселацията, като може да се очаква че при геометрична обработка производителността за такт ще е по-висока дори от тази в GF100/110.

РОП дяловете в чипа остават със същия брой и организация – 4 на брой, всеки от които може да обработва по 8 пиксела или 64 z/stencil отчета на такт, вързан е с един 64-битов контролер на паметта и разполага със 128 КБ L2 кеш памет. Промените са минимални, като леко е увеличено нивото на компресия и е удвоена ширината на шината на L2 кеш паметта. В случая големият труд е бил по контролера на паметта, с който Fermi меко каза не блестеше. И работата наистина е била голяма, като поддържаните честоти на паметта са увеличени с цели 50%, по същество елиминирайки нуждата от по-широка шина на паметта. А работата при скорости на трансфер от сорта на 6 GT/s съвсем не е шега работа, например от AMD бяха заявили че при техните контролери, разширяването на поддръжката до 6 ГТ/с памет спрямо 4 ГТ/с е удвоила броя на използваните транзистори за контролерите. Заедно с това изглежда че и самата ефективност на работа е много подобрена. По тази причина GK104 се справя достатъчно добре и само с 256-битова шина.

Сред другите промени в чипа следва да се отбележи и прехвърлянето на част от способностите на командния процесор към драйверите. Въведени са нови алгоритми за антиалайзинг, като единият е вече отдавна познат ни – FXAA се ползва при игрите от доста време и представлява просто специализиран пикселен шейдер, подобен в някаква степен на MLAA алгоритъма на AMD. Другият е TXAA, който използва и времева компонента, като варира местата на семплите между отделните кадри, подобно на по-стария TemporalAA отново на АМД. Друга интересна софтуерна функция е Adapotive Vsync, при който кадрите се синхронизират с честотата на опресняване на монитора само докато картата е способна да произвежда повече от това ниво, а в противен случай Vsync се изключва временно Освен това в новия чип най-накрая е вградена на хардуерно ниво поддръжката на 3 монитора за реализацията на технологията Surround Vision. Заедно с това видеоблока е разширен, като се поддържа и апаратно прекодиране на видеопотоците, като вероятно целта е да се конкурира с блока вграден в процесорите на Intel от поколението Ivy Bridge и Sandy Bridge.

Nvidia Boost

Последната сериозна промяна е на ниво софтуер и печатна платка отколкото чип, но си струва да се разгледа отделно. При AMD последните поколения графични чипове имат вградена функционалност, която ограничава консумацията на чипа до определени нива. За целта при достигането на някакви критични стойности, тя почва да сваля честотата на чипа, докато достигне желаните нива. Целта е чипа да работи на колкото се може по-висока тактова честота стандартно, като сваля честотата си само в критични ситуации. При Nvidia подобна функционалност липсва, но предното поколение разполагаше с интегрирани на платката датчици, които следят нивото на токовете и вършат подобна работа, но се управляват софтуерно, от драйверите. Разликата между двете реализации е, че хардуерната при AMD разчита на оценка на различни фактори, като натоварване на отделните блокове, температура и т.н., без да работи с реалните стойности на консумацията, макар и с много висока точност на апроксимацията(над 98%), но пък сработва много бързо тъй като е реализирана на хардуерно ниво. Тази на Nvidia пък може използва реалните стойности на токовете, но пък сработва по-бавно, заради нуждата от софтуерна обработка от централния процесор.

В новото поколение графично адаптери от Nvidia са решили да разширят използваната функционалност, реализирайки нещо подобно на TurboBoost/TurboCore технологиите при процесорите. Накратко – компанията използва допълнителен хардуер, който проверява реалното натоварване на захранващата схема, и в зависимост от състоянието й и температурата повишава тактовата честотата на чипа според предварително зададена таблица с честоти максимални напрежения. Алтернативно при пределно натоварване и надвишаване на зададения лимит за консумацията системата може да сваля тактовата честота. Системата работи на стъпки от 13 МХц. Това позволява по-пълно използване на потенциала на графичната карта, но от друга страна е възможно смяната на състоянията на картата да указва минимално влияние върху геймплея на игрите, тъй като времето което отнема управлението по софтуерен път е сравнително голямо, от порядъка на няколко десетки милисекунди. Заедно с това Nvidia Boost зависи от параметрите на конкретната карта, като качество на графичния чип, ефективност на охладителя и т.н. и така две карти могат да имат различно поведение, докато варианта на AMD предполага еднакво поведение при различните чипове.

Страници: Предишна 1 2 3 4 5 6 7 8 9 Следваща