Базовыми технологиями производства программного продукта на настоящий момент являются объектное программирование и универсальные виртуальные машины.
Следствием такой индустриализации стало использование методов связывания объектов на этапе выполнения и выполнение кода в среде интерпретаторов. Фактически функций компилятора были перенесены в среду исполнения кода. То, что ранее выполнялось один раз на этапе компиляции дистрибутива, теперь выполняется каждый раз во время работы программы у конечного пользователя.
Но не всё так мрачно. Как говорится, «не было счастья, так несчастье помогло». Сейчас весь типовой вычислительный поток состоит из двух компонент, функций компилятора и собственно рабочего тела программы. Этот поток можно разбить на два тесно связанных потока и параллельно выполнять на разных процессорах, но вот беда: архитектура межпроцессорных взаимодействий пока такого не позволяет.
Как бороться с этой бедой? Да очень просто: есть связанные вычислительные потоки, значит, по ассоциации, нужно сделать тесно связанные вычислительные ядра для их эффективной обработки. Бульдозер выбрал этот путь.
Недавно появилась ещё одна область вычислительных задач, на которых явно применяются тесно связанные вычислительные потоки, — виртуализация. В ней используются связанные вычислительные потоки типа «хост-задача».
Да и старая академическая тема спекулятивного выполнения кода сводится к параллельной работе нескольких тесно связанных вычислительных потоков, а как уверяют теоретики, этот метод сулит небывалые уровни производительности в системах с избытком аппаратных ресурсов.
Короче говоря, настало время научить аппаратуру работать со связными вычислительными потоками, это путь к существенному повышению эффективности вычислений. А программистов научить распараллеливать код на тесно связанные потоки.
Подведём итог. Имеется устаревшая технология межпроцессорного взаимодействия, Программисты вовсю явно и неявно используют связные вычислительные потоки. Чего пока не хватает для полного «энергоэффективного» счастья? «Бульдозера», чтобы всё это расчистить под площадку для новой процессорной архитектуры.
Конечно, современное ПО не может реализовать потенциал архитектуры «Бульдозера». Использование зависимых процессорных модулей в независимых вычислительных потоках будет только ухудшать результирующую производительность системы. Но уже анонсирована поддержка данной архитектуры в Windows 8, и это дает, по предварительным оценкам специалистов, около пятнадцати процентов производительности. Даже для такой элементарной оптимизации на уровне диспетчера потоков ОС. Если же заточить под эту архитектуру виртуальные машины и компиляторы, тогда к этим процентам можно смело приписывать ещё один ноль...