По мнению экспертов, концепция многоядерности и новые технологии производства CPU (high-k на основе гафния и металлического затвора) продлили жизнь закону Мура еще лет на 30-40. Однако не все согласны с данным прогнозом.

В своей работе «Закон Амдала в многоядерную эру» (Amdahl’s Law in the Multicore Era) исследователи Марк Хилл и Майкл Март ссылаются на сформулированное Джином Амдалом в 1967 году правило, которое гласит, что при распараллеливании вычислений возникают проблемы: производительность растет, но не линейно. В оригинале закон звучит так: «В случае, когда задача разделяется на несколько частей, суммарное время ее выполнения на параллельной системе не может быть меньше времени выполнения самого длинного фрагмента».

В итоге - чем больше ядер будет содержать процессор, тем больше времени будет уходить на распараллеливание и перенаправление потоков.

Как показывает практика, с двумя ядрами проблем не возникает и большинство программ в среде Windows работают корректно. Однако с четырехъядерными CPU уже возникают несуразности. Например, работают только два ядра, а остальные - простаивают.

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

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

На мой взгляд, решать подобного рода проблемы нужно сообща: процессоростроители должны согласовывать свои действия с программистами. Да, к новым «железным продуктам» всегда идет пакет  сопроводительной документации (SDK, пакет разработчика). Но насколько современный программный инструментарий отвечает ежеквартальным обновлениям процессорных линеек? Успевают (и хотят ли) программисты писать отлаженные программы, грамотно использующие ресурсы ПК и возможности многоядерного процессора?

По утверждениям Microsoft в новой операционной системе Windows 7 реализована поддержка многоядерных процессоров с количеством ядер до 256. Появятся ли такие процессоры в скором времени –  вопрос второго плана.

Меня волнует другое: неужели даже с такими «суперядерными монстрами» мы снова будем вынуждены сидеть у экрана монитора в томительном  ожидании загрузки операционной системы?