За най-първия процесор на Intel може да се счита чипа 4004. Той излезе през 1971 година и работеше с тактова честота едва 740 KHz. Тогава честотите започнаха бързо да растат – още през 1989 година се появи процесорът i486 с тактова честота над 100 MHz, а през 2000 година Pentium 3 превиши психологическата бариера от 1 GHz. Оттогава ръстът на тактовата честота рязко намаля и към днешен ден централните процесори работят с честота от около 4,5 GHz, като чрез овърклок може да се постигне стабилна работа малко над 5 GHz. Тоест, за над 20 години честотите на процесорите са нараснали едва пет пъти, докато от 1971 до 1989 години имаме ръст на тактовата честота с цели два порядъка. Защо става така? Нека да се задълбочим и да разгледаме по-подробно работата на тези чипове.

Отделяната топлина

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

Да отделим една минута за физика. В популярната формула Q ~ V2F, с Q е обозначена отделяната от процесора топлина, V е напрежението с което работи, а F е неговата тактова честота. Нека да направим връзка между честотата на процесора и напрежението с което той работи. Да си припомним, че самият процесор е съставен от огромен брой транзистори, които всъщност са вид превключватели: за да може да бъде осъществено превключване е необходимо да бъде натрупан определен заряд, като времето на неговото натрупване е пропорционално на тока, който от своя страна е пропорционален на напрежението.

От друга страна, работната честота на процесора е директно свързана с времето на превключване на транзистора и с голяма точност можем да кажем, че F ~ V. Когато заместим тази пропорция във формулата за топлината, ще получим, че Q ~ F3!  Или казано с други думи, ако идваме процесор, работещ с тактова честота 4 GHz и отделяна топлина 100 W, при неговия овърклок до 8 GHz ще ни се наложи по някакъв начин да разсеем цели 800 W топлина. Направените многобройни експерименти потвърждават този извод и разсейването но толкова много топлина може да стане само чрез интензивно охлаждане с течен азот, което не всеки може да си позволи в домашни условия.

Именно тук се вижда, че таванът на тактовата честота за централните процесори е някъде около 5 GHz. Лесно е да се пресметне, че при увеличаване на честотата на въпросния процесор само с 25%, чипът ще отделя 1,253 = 2 пъти повече топлина, а това вече е почти пределът на домашните условия.

Оптимизиране на конвейера

Добре се вижда, че директното повишаване на тактовата честота не е особено добра идея. Тогава може би има смисъл да се направи оптимизация на конвейера?

Същността на един конвейер е в това, че изпълнението на всяка процесорна инструкция се разделя на няколко части (фази), като всяка една част със своя собствен микрокод се изпълнява от отделен изчислителен блок на процесора. След като едната фаза (част) приключи, освободилият се блок може да започне да изпълнява аналогична част, но на друга процесорна инструкция. В идеалния случай това може да изглежда по следния начин:

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

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

Нека да разгледаме случая, който е показан на горното изображение. Фазите 1, 3 и 4 са с еднаква дължина и са двойно по-къси от фазата 2. Тоест, ако двойно намалим времето на такта, то това ще доведе до ръст на тактовата честота на процесора също двойно. Така например, един такт при процесор с тактова честота 4 GHz е с продължителност 250 пикосекунди и ако намалим двойно това време ще получим дължина на такта 125 пикосекунди, което може да се получи единствено при тактова честота 8 GHz. Но дори и в този случай производителността на CPU няма да нарасне, престояването ще си остане, при това със същото времетраене:

Така че нашият хипотетичен процесор с дължина на такта 125 пикосекунди няма да работи по-бързо от процесора с дължина на тате 250 пикосекунди.

Друга интересна идея е най-дългата фаза на процесорната инструкция да бъде разделена на няколко по-малки и по този начин да се намали времето на нейното изпълнение. Звучи добре, но това е правено многократно и процесорните архитекти вече стигнаха до задънена улица. Причината е доста прозаична – често пъти изпълнението на дългата процесорна инструкция зависи от предишните кратки инструкции. Ето един пример, при който трябва да се извършат три съвсем лесни изчисления:

  1. A + B = X
  2. C + D = Y
  3. X*Y = Z

Крайната цел тук е да се получи Z, знаейки A, B, C и D. Първите две инструкции за събиране на числа се извършват много бързо, а третата – умножението, е доста дълга и е добра идея да се раздели на части. Разбира се, това няма как да стане, понеже X и Y се изчисляват преди нея и докато не бъдат пресметнати, няма никакъв начин третата инструкция да бъде разделена на части. Това е и причината дългите фази на процесорните инструкции да забавят целия изчислителен процес и досега никой не е измислил как да бъде подобрено това.

Намаляване на технологичния процес

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

Изводи

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

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *