Повсеместное использование параллельных технологий сегодня относится к магистральным направлениям развития индустрии, позволяющим преодолеть существующие технологические ограничения в дальнейшем наращивании производительности систем.
Достижение пределов
Прежде всего, если посмотреть на современные полупроводниковые технологии, можно увидеть, что мы достигли технологических пределов. При технологическом процессе производства микропроцессоров в 65 и 45 нм мы имеем дело со слоями около 100 атомов (постоянная кристаллической решетки кремния 0,54 нм). В результате появляется множество проблем, которые раньше не возникали. Начинают играть существенную роль квантовые эффекты, паразитные токи утечки, сильно повышаются требования к степени чистоты материалов и технологическому оборудованию. Проектирование вентилей также становится процессом нелинейным, практически вероятностным.
В значительной степени исчерпаны и возможности микроархитектуры. В современных процессорах на подложке размещается около миллиарда элементов, что также приводит к дополнительным проблемам. Так, возникает проблема синхронизации сигналов на большой площади кристалла при большом количестве вентилей. Сигналу требуется время на распространение от одной части микросхемы к другой через множество полевых транзисторов. Приходится проектировать сложные системы тактирования, которые синхронизируют сигналы в разных точках микросхемы. Если раньше эти проблемы не волновали разработчиков, то теперь на эту синхронизацию тратятся огромные ресурсы процессора, и это один из сложнейших элементов современных микропроцессоров.
К проблемам архитектуры следует отнести и то, что усложняются технологии оптимизации аппаратной обработки "грязного" кода. К сожалению, большинство программ, разработанных к сегодняшнему дню, опираются в основном на последовательную линейную логику. Возможности параллельной обработки программы в программном коде практически не учитываются. И каким бы сложным ни был процессор, любой условный переход в программе практически останавливает работу конвейера. В результате разработчикам процессоров приходится идти на ухищрения, чтобы обеспечить суперскалярность и параллельное выполнение инструкций и достичь высокой производительности процессора при текущем программном коде. А это все усложняет архитектуру процессора.
Наконец, есть основания считать, что мы подошли к математическому и даже философскому пределу. Вопрос, сможет ли в текущей модели компьютерная система развития пройти тест Тьюринга, остается открытым. Тест Тьюринга заключается в том, что экзаменатор, задавая вопросы, на которые отвечают компьютер и человек, за определенное количество вопросов должен определить, где человек, а где машина. Но на сегодняшний день ни одна машина полностью не прошла тест. В 2004 году бронзовую медаль получила программа "Алиса", которая сумела-таки обмануть половину экзаменаторов. Тем не менее пока ни одна машина не сумела пройти тест Тьюринга в полном объеме.
Существующая компьютерная арифметика была создана Булем еще в середине XIX века, и до сих пор процессоры работают по этой математической модели. Можно ли на основе существующей модели арифметики Буля создать систему с искусственным интеллектом? Вопрос, конечно, философский, но, думаю, скорее всего нельзя. Все сказанное - это пределы в развитии информационных технологий, к которым мы подошли сейчас.
Принципы вычислений будущего
Что же дальше? Куда мы идем? Давайте попробуем нарисовать модель вычислений будущего. На мой взгляд, она будет основана на новых принципах. Прежде всего, это модель вычислений, построенная на принципах квантовой механики. В 70-х годах Ричардом Фейнманом была предложена новая модель вычислений, основанная не на булевой алгебре, а на суперпозициях состояний квантовых битов или кубитов. Что такое кубит? Кубит - это вычислительная ячейка, фиксирующая различные стационарные состояния атомов либо элементарных частиц. С помощью математического аппарата квантовой механики можно и описать это взаимодействие. Вычислительная система, построенная на таком принципе, позволяет выполнять не только линейные программы. Было доказано, что эта система позволяет выполнять 2n параллельных программ (где n-число кубитов). Современный 256-битный защитный код с помощью систем, основанных на квантовых битах, можно расшифровать в течение нескольких секунд.
В будущем вполне вероятен переход от двоичной арифметики к модели, построенной на основе квантовой физики. Сейчас для решения разных прикладных задач разработано уже несколько базовых алгоритмов. Однако, к сожалению, пока нет универсальной вычислительной модели, которая позволяет решать все задачи с помощью подобной квантовой физики.
Еще один принцип, на котором, вероятно, будет основана модель вычислений будущего - это уравнивание скоростей внутренних шин и внешних интерфейсов и переход к реальным распределенным вычислениям. Представьте себе, что нам удалось уравнять скорости внешних шин и внутренних процессорных шин. Что это означает? Это означает переход к распределенным вычислениям. Исчезнет разница между обращениями процессора к своей памяти и к узлу, который расположен где-то. Понятно, что это далекая перспектива. Но тем не менее сейчас созданы сверхпроводящие элементы, которые используют связанные (когерентные) состояния зарядов. Эксперименты показали, что уже можно мгновенно передавать изменения на расстояние 11 километров в таких сверхпроводящих парах.
И последний принцип, который возможен в будущем, - это не компиляция программы на основе существующей математической модели, заложенной в микропроцессор, а наоборот, динамическая настройка машины и, возможно, математической модели вычислений под задачу. Я задал задачу, а машина под нее подобрала подходящую модель и перестроила свою программно-аппаратную структуру. В принципе подобные технологии есть уже сейчас - это программируемые логические матрицы. Получены результаты, когда использование программируемых логических матриц с прошивкой, оптимизированной под задачу, в высокопроизводительных вычислениях дает ускорение до двух порядков.
Ближние перспективы
Но это все пока в далеком будущем. А как происходит развитие в ближайшей перспективе?
На мой взгляд, реальный сегодняшний путь - это параллелизм. Идея ускорения одиночного процессора исчерпала себя, и фактически сейчас мы должны перейти к параллелизму. Причем к параллелизму на всех уровнях: на уровне процессорной микроархитектуры, аппаратной архитектуры систем и приложений.
На уровне процессорной микроархитектуры параллелизм - это многоядерность, многопоточность (суперскалярность, спекулятивное исполнение инструкций) и многонитевость (пример - Hyper Threading). Все эти технологии были объявлены еще несколько лет назад. Но принцип параллелизма используется не только в микропроцессорной архитектуре, но и во всей вычислительной системе в целом.
Сейчас вся компьютерная индустрия уходит от идеологии общей шины. Раньше была одна общая шина, и на нее вешались все устройства. Сейчас идет переход к технологиям point-to-point. Например, исчезает параллельная шина AGP и появляется последовательная PCI Express. Процессор с чипсетом тоже скоро будет соединяться по персональной последовательной шине. Встроенная технология аппаратного распределения ресурсов - это тот же самый параллелизм, когда машина делится на некоторое количество виртуальных машин, которые могут выполнять свои собственные задачи независимо от других. То есть аппаратная архитектура системы также идет по пути параллелизма.
Причем виртуализация касается не только оборудования, но и ПО. Сейчас явно виден крен в сторону виртуализации возможностей операционной системы, количество продуктов, которое здесь появляется, растет с каждым днем. Движение в сторону виртуализации происходит и в области приложений (хороший пример - GRID-система, реализованная на СУБД Oracle 10g) и хранилищ данных.
В общем, идеология параллелизма находит свое воплощение в системах и решениях на самых разных уровнях информационной системы. Судя по всему, это логичный и естественный путь выход из кризиса, к качественному скачку в вычисления будущего.