Показали и первые миниатюрные (доли миллиметра) сэмплы клатомов, произведенных с помощью более или менее стандартного литографического процесса. Проблему создания нанороботов сложной структуры в Карнеги остроумно предлагают решать, «вытравливая» традиционными методами плоский рисунок — своеобразную «развертку» робота, а затем «склеивая» его особыми способами в объемный объект. Выглядит довольно любопытно, но без микроскопа в том, что получилось и демонстрировалось в небольшом контейнере, конечно, не разберешься.
Тем не менее рассчитывать на появление в обозримом будущем хоть каких-то работающих прототипов, несмотря на все вышесказанное и на оптимизм моих коллег, вспоминающих, какой путь прошли за пятьдесят лет жесткие диски персональных компьютеров, я бы не стал. Например, те же модельки с электромагнитами непрерывно потребляют довольно много электроэнергии, рассеивая ее в виде тепла, — представляете стену дома, которая греется как электрочайник и рассыпается пылью при отключении электричества? Специалисты пытаются решить эту проблему, используя не электромагнитные («динамические»), а электростатические силы притяжения, но как они собираются ими управлять, на лету перераспределяя по пылинке клатома заряды, для меня осталось загадкой. Электромагнитному варианту могли бы здорово помочь высокотемпературные сверхпроводники, которые бы сняли проблему энергозатрат, но их создание, очевидно, относится к вполне сопоставимым по масштабам сверхзадачам человечества. Даже чисто механически непонятно, удастся ли обеспечить движение не пары атомов друг относительно друга, а «дырки» в большом массиве, на который действуют внешние силы. Да и программирование клатомов для 3D и в реальном масштабе времени, несмотря на все демонстрации, — тоже нерешенная проблема. Потребуется совершенно новый подход к программированию сверхбольших систем, а исследователи здесь лишь в самом начале пути.
Куда реалистичнее звучат рассказы о других реализациях объявленной Intel общей концепции «управления физической материей». Например, антенны для систем подвижной связи, самостоятельно изменяющие размеры и положение в пространстве для оптимального приема сигнала. Примеров соответствующей реализации, правда, на Форуме показано не было, но в принципе чисто технически это реализуемо. Будет ли «изменяемая геометрия» востребована практикой или, как в авиации, уступит место более простым решениям — увидим.
Если клэйтроника на Форуме все-таки проходила под грифом экзотической диковинки, то о терапроцессорах, позволяющих на старой технологии за счет радикально новых идей получить на один-два порядка большую производительность, нежели у традиционных «многоядерников», говорили более чем серьезно — эта тема составляла содержание не только презентаций, но и технических сессий для профессионалов. Впрочем, главная идея здесь тоже далеко не нова и даже вполне процветает в коммерчески выпускаемом «железе», начиная с Cell и заканчивая специализированными сопроцессорами от ClearSpeed. Ее суть в том, чтобы заменить одно сложное ядро (на котором вычислительные блоки нередко занимают менее 10% площади кристалла, а остальное уходит на то, чтобы вовремя подготовить для этих 10% данные и инструкции) набором из, скажем, пяти более простых, в каждом из которых вычислительные блоки займут половину площади ядра. Естественно, загрузка этих блоков из-за простоты обслуживающей их электроники будет невысока, а потому их быстродействие — заметно ниже, но потенциальный выигрыш за счет пятикратного увеличения числа вычислительных ресурсов перекроет все. Побочные эффекты — увеличение тактовой частоты (за счет упрощения) и снижение тепловыделения (за счет него же) — тоже играют на руку подобному подходу. И все было бы замечательно… если б не необходимость заставлять работать эти десятки процессорных ядер «в одной упряжке». Даже оставляя в стороне вопросы программирования параллельного ПО для десятков специализированных ядер, необходимо с достаточной скоростью читать и записывать обрабатываемую ими информацию и передавать ее на другие устройства — в противном случае наш терапроцессор будет большую часть времени ожидать новую порцию данных, и все его быстродействие сойдет на нет.
То, что предлагает Intel, как ни крути, сильно напоминает Cell, только с гораздо большим количеством ядер: если в детище IBM и Sony их всего девять, то в экспериментальном кристалле Intel — добрых восемьдесят (матрица 8x10). И там и там ядра максимально упрощены и функционируют на частоте 3—4 ГГц; и там и там, чтобы снять проблему недостаточной пропускной способности, каждому ядру выделяется кусочек локальной памяти, с которым оно может работать без оглядки на всех остальных; и там и там используется сложнейшая система связи, связывающая отдельные ядра в многомерную сетку, в которой передаются данные. Разница только в реализации: если IBM и Sony используют сравнительно традиционные технологии, то Intel — принципиально новые. Например, в Cell локальная память реализована как упрощенный аналог кэш-памяти первого уровня и является частью кристалла процессора. В терапроцессоре же используется технология трехмерной упаковки оперативной памяти — на подложке строится «сэндвич» из кристаллов оперативной памяти и лежащего над ними кристалла процессора, что позволяет разместить на той же площади куда больше и ядер, и подключенной к ним памяти. В ядрах Cell нет кэш-памяти и тем более — когерентной (хранящей общие для всех ядер данные), в терапроцессоре — есть. В качестве внешнего интерфейса для Cell используется «электронная» технология, для терапроцессора планируется оптический канал на порядок большей пропускной способности и т. д.
Впрочем, хватает и уникальных наработок — например, в терапроцессоре планируется использовать так называемую транзакционную оперативную память, позволяющую объединить несколько операций чтения-записи в одну транзакцию, для которой гарантируется защита от одновременного чтения-записи со стороны других ядер. Например, если у нас есть счетчик — ячейка памяти, к которой обращаются все ядра, каждый раз увеличивая его на единичку, то в «классическом» варианте, когда контроллер памяти просто обслуживает запросы на чтение и на запись от всех ядер, легко может возникнуть следующая ситуация: скажем, первое ядро прочитало текущее значение счетчика, но не успело записать новое, тогда как счетчик — с уже устаревшим значением — читает второе ядро. Если, например, в счетчике было записано число 11, то и первое, и второе ядро в этом случае прочитают «11», вычислят 11+1 = 12 и два раза подряд (сперва одно, потом второе) запишут в счетчик это значение вместо правильного — 11+1+1 = 13. Когда же чтение и запись представляют собой одну транзакцию, такой проблемы не возникает — пока первое ядро не запишет в счетчик 12, второе не сможет прочитать его значения. Механизм еще требует доработки и уточнения, но уже понятно, что этот способ намного быстрее, чем сегодняшняя практика «защиты» счетчика, сводящаяся к тому, что, прочитав счетчик, процессорное ядро ставит «блокировку», запрещающую остальным процессорам что-либо читать или писать из памяти, пока туда не будет записан результат вычислений.
Из других интересных наработок отмечу кэш-память с разделением приоритетов (QoS), в которой данные одного приложения интенсивно вытесняются из кэшей определенных уровней, а другого, более чувствительного к задержкам оперативной памяти, — остаются там до последнего, причем более часто используемые данные — в кэшах высших уровней; усовершенствованные технологии виртуализации, направленные на использование с операционными системами и языками программирования следующих поколений, «заточенных» под высокопараллельные вычисления; интеграция высокоскоростных средств ввода-вывода, вплоть до сетевого контроллера, непосредственно на кристалл процессора.
В отличие от клэйтроники, терапроцессоры — дело вполне обозримого будущего. CEO Intel Пол Отеллини даже демонстрировал кремниевую пластину с соответствующими сэмплами — правда, не рабочими, а всего лишь экспериментально-отладочными, так что до коммерческого продукта дело дойдет еще не скоро (во всяком случае не раньше, чем Intel перейдет на 45-нм технологический процесс).