Законът на Мур вече не действа: как ще увеличим производителността на компютрите?

Най-четени

Даниел Десподов
Даниел Десподов
Новинар. Увличам се от съвременни технологии, информационна безопасност, спорт, наука и изкуствен интелект.

В началните години на развитие на авиацията е било очевидно, че скоростта на самолетите ще расте. Така е и станало – от смешните 50 км/ч за самолетите на братя Райт през 1903 година в средата на 60-те години вече има скорости от 800-900 км/ч. И оттогава ръстът на скоростта на комерсиалните самолети нещо спря. Да, имаше опити за създаването на свръхзвукови пътнически самолети, които дори летяха в продължение на около 20 години. Но тяхната безопасност не бе висока и по-важното, съвсем неефективното изразходване на енергията при подобни скорости спря тези самолети. Ето защо днес нашите въздушни пътешествия са със същата продължителност каквито са били преди 50 години.

Съвременните компютри се приближиха съвсем близо до същия проблем. В продължение на десетилетия нашата способност да правим все по-миниатюрни компоненти доведе до това, че броят на транзисторите в един силициев чип се удвояваше на всеки около 2 години. Тази закономерност стана известна като Закона на Мур (в чест на съоснователя на Intel Гордън Мур) и даваше възможност за създаването на все по-евтини и по-мощни процесори в продължение на десетилетия. Но сега вече почти сме достигнали до предела на миниатюризацията и предстои стагнация в скоростта на изчисленията.

На хартия всичко изглежда доста добре: от 40 nm процесори в края на миналия век вече имаме 7 nm решения, а в края на тази година ни обещават 5 нанометров технологичен процес. Но е добре да се подчертае, че тези нанометри са на практика мними и се достигат чрез триизмерното разполагане на транзисторите и чрез други хитрости. На практика, ключовите компоненти на транзисторите, като например гейта, през последните 10 години са намалели само с няколко десетки процента. Именно затова 14 nm процесори на Intel показват подобни резултати като 7 nm решения на AMD, въпреки че по идея разликата би трябвало да е почти двойна.

Законът на Мур вече не действа: как ще увеличим производителността на компютрите?
Изображението показва ръстът на ефективността на процесорите при прехода към по-тънки технологични процеси. За съжаление, тя повече не се изпълнява

Това е проблем. Да си представим за малко, че Законът на Мур е спрял да се изпълнява още преди 20 години. Щяхме да живеем в един свят, в който процесорите са десетки пъти по-слаби от от тези с които сега работим. Нямаше да имаме смартфони с компютърни възможности – щяхме да си ползваме телефони с базова функционалност – разговори и SMS-и. Нямаше да има стрийминг, защото процесорите нямаше да могат да се справят с поточното видео. Това се отнася и за красивите съвременни игри и до много други неща. Дори и Глобалната мрежа щеше да има вид на съвсем опростени текстови сайтове с тук там по някое статично изображение. Ето защо съвсем не е трудно да си представим какви иновации можем да изпуснем през следващите 20 години, ако не успеем да продължим да повишаваме производителността на изчисленията със същите темпове.

През последните няколко години учените се чудят какво да се прави по-нататък. Разбира се, има надежда за развитието на най-новите технологии, като например, квантовите изчисления, въглеродните нанотръби и фотонните изчисления. Проблемът е, че те все още са „мъгляви“ технологии, които в най-добрия случай работят в лабораториите и скоро няма да ги видим в магазините. Ето защо не може да се надяваме на бързото и пълно преосмисляне на компютърните чипове. Остава сериозно да променим подхода към писането на софтуера за сегашните компютри.

Чарлз Лайзерсън, професор по компютърни науки и софтуерно инженерство в MIT отбеляза в своята най-нова научна статия в Science, че в продължение на дълги години програмистите въобще не са си давали труда да накарат своя код да работи по-бързо, понеже Законът на Мур върши тази работа вместо тях. Ето защо те са избирали най-лесния път и са се фокусирали предимно върху бързото писане на код, а не върху възможността компютрите да изпълняват този код колкото е възможно по-бързо.

Законът на Мур вече не действа: как ще увеличим производителността на компютрите?
Добре се вижда, че през последните няколко години ръстът се е забавил

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

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

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

Законът на Мур вече не действа: как ще увеличим производителността на компютрите?
Съвременните процесори имат огромен брой инструкции, но далеч не всичкият софтуер ги използва

Една от стратегиите за повишаване на производителността е разпаралелването на кода. Голям брой от съществуващите към днешен ден програми използват алгоритми отпреди десетина години, в които твърде рядко се използват най-съвременните процесорни инструкции от типа на векторните AVX. Осен това, въпреки че по-съвременния софтуер вече може да работи с новите многоядрени процесори, част от подпрограмите и алгоритмите все още са оптимизирани за едноядрена работа. Това се отнася дори и за известни програми като Photoshop. Ето защо, паралелните алгоритми и използването на съвременните процесорни инструкции може да ускори изпълнението на редица сложни задачи десетки дори стотици пъти. Може да се тръгне и по друг път – алгоритмите да работят със същата скорост, но при много по-висока енергийна ефективност.

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

Законът на Мур вече не действа: как ще увеличим производителността на компютрите?
Индийският код през 80те години бе известен като Glitch и е некадърно написан сорс код, който по някакъв удивителен начин работи. Нарицателно за сорс код с крайно ниско качество

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

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

АбонаментВсичко важно от света на технологиите, директно в пощата ти.

С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!

14 Коментара
стари
нови оценка

Нови ревюта

Подобни новини