понедельник, 7 декабря 2009 г.

Операционные системы – кризис прагматизма

В интервью с Эндрю Бинстоком (InformIT) менее года назад Дональд Кнут более чем резко высказался о факторе, который считается сегодня одним из главных мотивов, побуждающих искать новые архитектурные решения на уровне операционных систем (перевод не дословный, но полностью сохраняющий смысл): «...Мне кажется, что в большей или меньшей степени, но у разработчиков аппаратных средств иссякли идеи и они пытаются переложить ответственность за сохранение в будущем действенности закона Мура на плечи программистов, причем делают это с помощью разработки машин, которые демонстрируют прирост производительности всего на нескольких ключевых тестах!.. Продолжу свою мысль – за последние 50 лет я написал более тысячи программ, и многие из них были весьма солидного размера. Сейчас не могу сказать, что хотя бы пять из них можно усовершенствовать за счет мультипроцессорности или многоядерности».
...
самое интересное в законе Амдала – зависимость максимального прироста производительности для задач с некоторым известным значением нераспараллеливаемой части вычислительного процесса от увеличения числа процессоров. Например, для задачи, всего 40% кода которой (α = 0,4) не допускает распараллеливания, картина выглядит, мягко говоря, не многообещающей
Закон Амдала в действии

Как видно из этого графика, для увеличения прироста производительности при решении такой задачи всего в два раза в идеале требуется восемь вычислителей. И дальнейшее повышение их количества совершенно бессмысленно – просто невероятно, что расходы на реализацию, эксплуатацию и программирование 256-процессорной машины будут компенсироваться достигнутым 1,25-кратным приростом производительности. Который в реальности из-за технологических и архитектурных ограничений, естественно, никогда не будет достигнут.

«Лобовые» методы повышения быстродействия фактически исчерпаны. А поэтому нет-нет, да и вновь вспоминают об асинхронных принципах работы. Считается, что уж они-то в общем случае должно быть быстрее. Но почему, несмотря на давнюю свою известность и наличие практических решений и теории, асинхронные схемы так и не получили широкого распространения, остановившись в своем развитии по сути на экспериментальном уровне?

Почему асинхронные системы не могут быть быстрее синхронных, а их программирование намного сложнее

3 комментария:

eao197 комментирует...

Кроме закона Амдаля есть еще закон Густавсона который дает более оптимистичные прогнозы повышения производительности. Так что первая часть статьи может базироваться на не очень верных предпосылках :)

eao197 комментирует...

Вот здесь есть картинка, которая показывает соотношение прогнозов масштабируемости по Амдалю и Густавсону.

Skynin комментирует...

Свежее на тему:

Я всегда удивляюсь, как много вроде бы хорошо образованных компьютерных специалистов постоянно употребляют слово параллелизм, не зная, что же оно означает. Сколько статей и книг о параллельных вычислениях я прочел – не сосчитать, и везде этот термин употребляется много-много раз без всякого его определения. Во многих из этих «авторитетных» источников упоминается закон Амдаля [1], изначально сформулированный Жене Амдалем в 1967 году. В то же время складывается ощущение, что авторы пребывают в неведении о более общей и точной оценке параллелизма, которую дает теоретическая компьютерная наука. Эта теория не так уж сложна, и очень странно, что ее никто не знает. Возможно, ей нужно дать более красивое название – например «закон параллелизма» звучит весьма авторитетно. В данной статье я дам краткое введение в теорию закона параллелизма, который, по счастливому совпадению, лежит в основе эффективности систем Cilk++.
Законы параллелизма, или «что за #@%&^ этот ваш параллелизм?»