Прослушал доклад Херба Саттера про параллельное программирование. Кого интересует параллельное программирование? А потому, что я по его книге (и по другой, Скотта Мейерса) много лет назад готовился к интервью.
Саттер сказал следующее:
раньше, если программа работала медленно, можно было год ничего не делать, и она сама собой начинала работать быстро: появлялся более быстрый процессор.
больше более быстрых процессоров не будет.
потому что прогресс процессорных технологий состоит в размещении большего количества транзисторов на квадратный сантиметр; но никто не знает, что с ними делать:
возрастающее количество транзисторов перестало влиять на быстродействие, потому что кэш еще большего размера уже ничего не дает, и более сложная оптимизация в процессоре тоже уже ничего не дает.
и тактовую частоту увеличить тоже нельзя, потому что электрические сигналы, распространяясь со скоростью света, не будут успевать долетать с одного конца чипа до другого (7 GHz).
поэтому из этого гигантского количества транзисторов будут собирать все больше и больше процессоров на одном чипе; например, можно прямо сейчас собрать сто штук Пентиумов 1 на чип.
так что, если взять медленную программу и год ничего не делать, то через год ее можно будет запустить на вдвое большем количестве процессоров; но это будет так же медленно, поскольку она неправильно написана и не будет их загружать.
И вот Саттер [в Майкрософте] придумывает, как встраивать в языки программирования такую поддержку параллелизма, чтобы эффективно писать на неогранниченное количество процессоров; по сравнению с ней обычные threads и locks будут напоминать программирование на ассемблере.
потому что машина с восемью процессорами (два слота для четырехкорных процессоров сегодня) - это совершенно другая машина, у которой случайно совпадает набор команд, но программировать ее надо совершенно по-другому.
Вот:

Саттер сказал следующее:
Вот:

no subject
Date: 2007-04-11 01:08 pm (UTC)no subject
Date: 2007-04-11 01:09 pm (UTC)no way
Date: 2007-04-11 01:26 pm (UTC)вообще конечно интересно - только вот когда они там уже что-нибудь придумают? а то надоело на ассемблере.
но с другой стороны - программирование это всегда забота о мелких деталях и сколько революций уже ни обещали, все равно приходится о них заботиться.
Re: no way
Date: 2007-04-11 01:29 pm (UTC)Re: no way
Date: 2007-04-11 01:51 pm (UTC)Re: no way
Date: 2007-04-11 02:04 pm (UTC)Re: no way
Date: 2007-04-11 02:08 pm (UTC)Re: no way
Date: 2007-04-11 02:26 pm (UTC)но я чувствую какую-то глубинную разницу между vtables и тредами/локами.
и если автоматизация vtables это просто помощь программмсту, чтобы пальцы не стирались; то автоматизация тредов/локов - вставление палок ему в колеса, imho.
транзакционная память - как еще одно средство, добавленное через библиотеки на первых порах и может быть с языковой поддержкой позднее (__attribute__ там какой-нибудь) - вот это было бы хорошо. да можно и без языковой - в ACE всяко враппер добавят.
кстати, плохо знаю java - там же есть synchronize - это разве не оно?
Re: no way
Date: 2007-04-11 02:35 pm (UTC)no subject
Date: 2007-04-12 07:37 am (UTC)Re: no way
Date: 2007-04-11 02:20 pm (UTC)Re: no way
Date: 2007-04-13 10:20 am (UTC)Раскуривать у Рихтера "Создание эффективных WIN32-приложений"
PS: возможно и так знаете.
Завидую!
ЛенинаСаттера видел!Re: Завидую!
no subject
Date: 2007-04-11 07:53 pm (UTC)no subject
Date: 2007-04-11 09:29 pm (UTC)http://cavium.com/OCTEON-Plus_CN58XX.html
As always, the reality is somewhat different from what software guys like Herb Sutter think. The problem is not what to do with a bunch of symmetrical parallel CPUs, but, rather, in the insufficient memory bandwidth. Which can only be fixed by learning to program efficiently on non-uniform memory access architectures.
no subject
Date: 2007-04-11 09:36 pm (UTC)У него натурально 1521 ножка?
no subject
Date: 2007-04-11 10:05 pm (UTC)http://en.wikipedia.org/wiki/Ball_grid_array
no subject
Date: 2007-04-11 10:23 pm (UTC)no subject
Date: 2007-04-15 06:56 pm (UTC)no subject
Date: 2007-04-11 10:24 pm (UTC)