PC Help

 Към заглавната страница на PC HelpТърсене


Хардуер

 

CPU, GPU - “Заедно можем повече”

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

CPU, GPU - сигурно всички знаят какво е CPU, главния процесор на вашия компютър. Наскоро се появи и термина GPU - Graphics Processing Unit (графичен процесор, процесор за обработка на графика). Понятието е въведено от Nvidia и се отнася до графичния чип на вашата видеокарта. Наистина, съвременните графични карти имат на себе си чип достатъчно мощен за да бъде наречен процесор и предполагам за в бъдеще всички производители на видеокарти ще възприемат това название. В настоящата статия ще се опитам да ви кажа защо все още не можем да имаме идеалната игра със супер звук и графика, интелигентни компютърни противници и реалността на истинския свят, за какво ни е нужен GeForce2 и > 1GHz процесор а също и какви са ролите на CPU и GPU (главни, разбира се :) ).

3D - какво знаем и какво не знаем - не са много приложенията, които могат да натоварят един съвременен компютър толкова колкото някоя от последните 3D игри. Това, което виждаме когато пуснем Quake 3 или примерно някой симулатор - Jane’s USAF, са зашеметяващата графика, красотата на ефектите. Някои игри наблягат предимно на това - бляскави ефекти и графична производителност. В добрата игра обаче има много повече от шарени картинки. В един самолетен симулатор примерно, всеки самолет летящ във виртуалния свят на играта трябва да се държи така както би се държал един истински самолет в реалния свят. Това означава, че физичните параметри като въздушния поток над горните и долни повърхности на крилата се моделира, симулират се радарните системи и съвсем не на последно място доста сметки отиват за AI - колко интелигентни ще са компютърните противници, доколко малка ще е разликата между тях и истински човек - непредсказуемост, тактически замисли, планиране и баланс. Други ефекти, като “collision detection” - определяне дали два самолета не заемат едно и също място (сблъсък) също се изчисляват. В идеалния случай всичко това трябва да става примерно 60 пъти в секунда - всеки път когато нов кадър се появи на екран.

Обобщавайки казаното, можем да си представим от гледна точка на компютъра какво представлява една игра - за него това са поредица от задачи за решаване и много от тези задачи трябва да бъдат решени далеч преди да видите хубавите картинки на монитора. Физиката на всеки движещ се обект трябва да бъде изчислена (знаете - ускорения, гравитации, какво ли не - слава богу, че не ми се налага да смятам каквото и да е свързано с физика :) ), дори ако е далеч по проста от това, което би било в истинския свят. Ако в играта има компютърни противници - всички те трябва да “мислят” и действат едновременно и то хх пъти в секунда. Трябва да си заделим ресурс и музика и звуци - качествени и без разминаване между ситуацията в играта и звука свързан с нея - звука от изстрела трябва да се чува веднага, а не след секунда. Всичко това отнема време на процесора - а все още дори не сме споменали графиката.

Да вземем един друг пример - Rainbow Six: Rogue Spear. Частта от играта, от виртуалния свят, който виждате е само едно малко парче от всичко, което се случва. Също както и в реалността, другите хора (противници и партньори) се движат, прицелват, решават дали да залегнат и пълзят или да тичат. Когато някой стреля, компютъра изчислява движението на куршума, дали има нещо на пътя му, дали може да пробие евентуална преграда (предполагам случвало ви се е да ви убият в Counter Strike през стена), дали уцелва и в коя част - глава, тяло, крак. Също, компютърът преценява дали вдигате много шум и дали противника може да ви чуе от разстоянието на което се намира, или се промъквате и оставате незабелязан. А ако се играе в мрежа, се появяват допълнителни изчисления за обработка и синхронизиране на информацията за различните участници.

Всичко това отнема процесорно време, процесорни “цикли”. 3D процесори (GPU) съществуват просто защото няма достатъчно процесорна мощ и за изчисление на графиката. Софтуерния графичен режим на 3D игрите прави точно това - натоварва CPU и със изчисленията които трябва да извършва графичната карта и резултатът е плачевен.

Графика - това не е кино.

Когато гледаме филм, примерно “Междузвездни войни” (правилният превод е “Звездни войни”) или “Денят на независимостта”, ефектите ни замайват главата. Иска ни се да има и компютърни игри с такива ефекти и реализъм. Филмите наистина са красиви, но там няма интерактивност - само гледаш, не участваш. Какво е необходимо за да се поемат всички изчисления на една съвременна игра? Нека разгледаме детайлите:

  • Физика - това, което е необходимо за да се сметне движението на някакъв обект - камък, Порше, … , е измислено 17 век (сега сме 21 век, значи има-няма 350-400 години от тогава) от Нютон. Да разгледаме една игра от тези на които играем сега - за всеки кадър е необходимо да се изчислят положенията на обектите на екрана - как са се променили те спрямо предишния момент (кадър). Някои обекти са неподвижни, други се движат, трети се движат и се въртят, увеличават или намаляват скоростта си, блъскат се, действа им гравитация. Средно това прави 200 000 изчисления, всяко от които отнема около 100 процесорни цикъла. Ако искаме 60 кадъра в секунда (което хич не е много ако говорим за ниска разделителна способност - примерно 640х480) сметката става: Брой CPU цикли = 200 000 х 100 х 60 = 1 200 000 000 цикъла.

  • Изкуствен интелект (AI) - огромно поле за развитие, тук за разлика от физиката има много което да се измисля. Има AI на противниците, има AI на партньорите, има така наречения “path finding” - когато дадете команда за движение на група войници се очаква те най-бързо да стигнат до където трябва, а не да се мотаят или да се зациклят в някой ъгъл. Колкото по-реален става 3D светът, толкова нарастват и изискванията за AI. Производителите на игри смятат скоро да включат и разпознаване на гласови команди от компютърно управляваните партньори, което ще добави още едно ниво на сложност. Тъй като изкуствения интелект ще става все по-добър, значи все повече време ще отива за него. В някои по сложни съвременни игри добре направен AI би отнел на процесора около 400 000 000 цикъла за секунда - и това число ще расте в бъдещи игри.

  • Операционна система - независимо дали ви харесва или не, Windows заема доста ресурси. ME, SE, 2000 - искат 300 MHz за нормална работа с пълни възможности. Не, че не можете да имате 98SE и на 233Mhz - ако става въпрос аз съм виждал Windows 95 на 386 на 40Mhz, но как работи е отделен въпрос. Значи, 300 000 000 цикъла за Windows.

Дотук станаха сумарно 1 900 000 000 цикъла, или преведено в по-разбираеми мерки - 1.9 GHz, необходим е 1.9 GHz процесор. А какво става с графиката?

Фотореализъм на 60 fps - крайната цел на 3D графиката е фотореалистична анимация в реално време с 60 кадъра за секунда. Числото 60 не е избрано случайно - счита се, че това е границата на чувствителност към трептенията за средно човешко око - с каква честота трябва да е анимацията за да изглежда напълно истинска и гладка - информацията е на Nvidia, затова недейте да пишете гневни писма от вида “аз имам хх кадъра в секунда и играта ми върви супер”. Също, 24 кадъра може да са достатъчни за филм, но не и за 3D игра. В добавка към изискването за кадри, хората искат (някои някъде) 1600х1200, 32 битов цвят.

Какви изчисления са необходими, за да видим готовата сцена на екран? Етапите са:

  1. Задачи свързани с физиката на света, движение на обектите, сблъсъци, положение на камерата (от каква позиция наблюдаваме);

  2. Определяне на видимите и невидими обекти, избор на детайлност на обекта (по-далечните неща се виждат по-размазано), съставяне на списък от всички обекти видими от дадената позиция на камерата;

  3. Трансформация - преобразуване на информацията за 3D обектите в зависимост от гледната точка;

  4. Осветяване - смесване на различни светлинни източници - слънце, лампи, получаване на светлосенки, мъгли;

  5. Подготовка на информацията за “рендериране”;

  6. Рендериране - изчисляване на правилния цвят за всяка точка на екрана, въз основа на цялата подадена информация. Преценява се цвета на даден обект, цвета и посоката на светлината, която го огрява, степен на прозрачност на обекта, вид текстури (“боя” нанесена върху него - дали да изглежда като дърво, метал, камък).

Едно време всички сметки без последната се поемаха от CPU. Но ние видяхме, че той си има предостатъчно работа и без тези допълнителни сметки. И тук на помощ идват 3D процесори - графичните чипове на видеокартите. Моделите преди GeForce обаче, са оставяли и точки 3,4 на процесора. GeForce - първият “истински” GPU, извършва сам, без помощта на процесора изчисленията по всички точки от 3 до 6. При това изчисленията се извършват по бързо от колкото би ги сметнал централния процесор, защото той, за разлика от графичния, не е създаден специално за обработка на графика. Остават точки 1 и 2, които се отнасят повече до дефиниране на игровия свят все още се смятат от CPU.

Според информация на Nvidia, чипът GeForce2 може да обработи около 2 пъти повече информация отколкото се съдържа в една средна сцена на съвременна 3D игра. Това означава, че дори и в по- сложна и детайлна сцена при съвсем нова игра видеокартата би си свършила работата. Но кой казва, че съвременните игри са достигнали 3D съвършенство? Целта е истински свят, динозаври като в “Джурасик парк” и роботи и същества като в “Междузвездни войни: Епизод 1”, 60 кадъра в секунда. При това, в един истински свят птичките пеят по дърветата, прелитат, неотличими от истински; хората се разхождат, минавайки покрай теб, всеки си върши работата и не чака да отидеш и да го заговориш с избор от 4 реплики. Натоварването върху ТАКЪВ компютър е нещо което не можем да си представим в момента. Това е Матрицата, само че моделирана от нас самите. Някой ден това ще бъде реалност и тези които живеят тогава ще го приемат за нещо естествено, ще се смеят (ако помнят) за дните на 1 GHz компютрите, както и ние се смеем на “Правец 82” (а това е било само преди 18 години!!).

Но, докато тези “весели” дни дойдат, аз лично с нетърпение очаквам HALO и Monkey Island 4 и разчитам на въображението си, за да почувствам игралния свят толкова реален, колкото истинския. Смея да твърдя, че досега то (въображението ми) никога не ме е подвеждало, а и не иска пари за ъпгрейд на всеки 6 месеца :).

* Б. а. Доколкото знам “такова животно нема”.
Информация за тази статия е взета от сайта на Nvidia

Назад


Webmaster