Интервью с Ричардом Виртом, вице-президентом корпорации Intel

Вступление


Ричард Вирт является вице-президентом и старшим почетным сотрудником корпорации Intel, а также генеральным менеджером Software and Solutions Group. Данное подразделение занимается поддержкой софтверных разработчиков, решений и системного программного обеспечения, а также созданием компиляторов, библиотек и программных средств, позволяющих разработчикам полностью использовать возможности архитектуры Intel в области производительности.



Ричард Вирт, вице-президент и старший почетный сотрудник Intel, генеральный менеджер SSG

Ричард Вирт получил степень доктора математических наук в университете штата Оклахома, имеет степень бакалавра физико-математических наук. Он работает в корпорации Intel с 1981 кода. Вначале в составе группы Intel совместно с IBM занимался разработкой программного обеспечения для первой платформы IBM PC. Он также принимал участие в проектировании и оптимизации полупроводниковых устройств и платформ Intel посредством инноваций в области разработки ПО.

Господин Вирт внес значительный вклад в успех многих поколений процессоров Intel и возглавлял первые попытки по переносу UNIX на архитектуру Intel, в том числе на многопроцессорные системы на базе процессоров Intel. Он стал первым почетным сотрудником Intel в 1990 году, а в 2002 году стал старшим почетным сотрудником Intel, что является самой высокой должностью для технических специалистов. Этим был отмечен его значительный вклад в разработку и внедрение операционных систем и компиляторов, а также в обеспечение поддержки ими процессоров Intel для компьютерных и телекоммуникационных устройств. Он ожидает получения одного патента.

В шестидесятые годы Вирт служил в Корпусе Мира и преподавал математику на Тихоокеанских островах. Вирт участвует в работе Лаборатории по разработке ПО с открытым кодом, помогающей создать план выпуска решений Linux. Также он входит в Консультационные советы по информатике и технике в университете Джона Хопкинса и университете Иллинойса и является представителем корпорации Intel в Совете директоров альянса Enterprise Grid Alliance. Вирт часто выступает на профессиональных форумах, таких как Linux World, Oracle OpenWorld, Семинар Mesa Workshop Института инженеров по электронике и электротехнике (IEEE), а также Форум Intel для разработчиков.

Вашему вниманию предлагается эксклюзивное интервью, которое Ричард Вирт дал нашему корреспонденту на Форме Intel для разработчиков (IDF), который недавно завершился в Москве. В интервью также участвовал Дэвид Райн, директор отдела Intel по взаимодействию с отраслью производства ПО в странах Европы, Ближнего Востока и Африки (EMEA). Интервью посвящено преимущественно тому эффекту, который произведет переход на многоядерную архитектуру на процесс разработки программного обеспечения, а также инициативам Intel на поддержание российских разработчиков. Полагаем, что интервью иллюстрирует важнейшую тенденцию в развитии компании Intel: переход от компании, которая происходит только чипы, к компании, которая производит платформенные решения, включающая аппаратные и программные технологии.

Интервью


Алексей Доля: Как, на ваш взгляд, изменится процесс разработки программного обеспечения в результате перехода на многоядерную архитектуру?

Ричард Вирт: Прежде всего, разработчики должны будут учитывать, что выполнение разных программ будет проходить параллельно (на нескольких ядрах и в нескольких потоках). Следовательно, необходимо позаботиться о защите данных каждого процесса, что особенно актуально для библиотек. Однако это уже достаточно известная проблема, решения которой давно проверены на встроенных системах. Еще одним вопросом, пожалуй, является само разделение кода на потоки. В этой области существует очень много техник, которые напрямую зависят именно от кода (от реализованных в нем алгоритмов).



Выступление Ричарда Вирта на форуме IDF


Алексей Доля: По вашему мнению, основной вес проблемы распараллеливания ляжет на плечи самых крупных разработчиков программных платформ или на конечных разработчиков?

Ричард Вирт: Думаю, что с задачей распараллеливания столкнутся и те, и другие. Тем не менее, в течение последних нескольких лет мы активно сотрудничаем с основными разработчиками программного обеспечения в мире. Сейчас наша компания начинает двигаться еще и в направлении разработчиков не столь крупных. По сути, мы пытаемся охватить разработчиков любого масштаба. Таким образом, мы пытаемся облегчить процесс перехода на многоядерную архитектуру. Для этого мы, во-первых, предоставляем совместные тренинги для разработчиков. На мой взгляд, это очень важно. Во-вторых, мы сотрудничаем с университетами. Дело в том, что во многих университетах не читаются курсы по параллельным вычислениям и методикам распараллеливания кода. Как раз сегодня мы впервые в регионе EMEA (Европа, Ближний Восток, Африка) подпишем соглашение, согласно которому наши специализированные курсы (в том числе и по обсуждаемому вопросу) будут лицензированы для использования в Саровском Физико-Техническом Институте. Это довольно символично, что подобная активность Intel начинается именно в России. Хотя мы сотрудничаем с российскими университетами уже с 1992 года, все-таки данное соглашение будет вехой на нашем общем пути.

От автора: Несколькими часами позже действительно состоялось торжественное подписание Протокола о намерениях и взаимопонимании между корпорацией Intel и Саровским государственным физико-техническим институтом (СарФТИ). Документ, подписи под которым поставили Ричард Вирт и ректор СарФТИ Юрий Петрович Щербак, закрепляет положения лицензионного соглашения, заключенного ранее между подразделением Intel Software College (ISC, входит в структуру SSG) и СарФТИ. В соответствии с этим соглашением, российский ВУЗ впервые в истории отечественного высшего образования получил официальное право использовать обучающие тренинги Intel в качестве специализированных курсов физико-математических наук для своих студентов. Тренинги предполагают обучение в области разработки и оптимизации ПО для платформ на базе архитектуры Intel. Планируется, что в весеннем семестре 2006 г. в СарФТИ будет введен новый курс для 2-3 учебных групп третьего и четвертого годов обучения. Кроме того, новый курс будет интегрирован в вузовскую программу для факультета повышения квалификации.
Таким образом, студентов будут обучать работе с такими инструментами Intel, как VTune Performance Analyzer, компиляторы Intel, библиотеки и инструментальные средства многопоточной обработки данных. Как сообщила пресс-служба Intel: "Обучение сочетает общую ознакомительную часть с демонстрациями и практическими занятиями, включая портирование и оптимизацию приложений для технологии 64-разрядных расширений памяти (Intel EM64T), а также для многопоточной обработки данных для параллельных систем, в том числе для технологии Hyper-Threading".
Однако Ричард Вирт говорил, что подобное соглашение - событие уникальное не только для России, но и для всего региона EMEA. Действительно СарФТИ стал первым ВУЗом в странах Европы, Ближнего Востока и Африке, который получил в распоряжение подобные тренинги. Уместно отметить, что история взаимодействия между корпорацией Intel и СарФТИ насчитывает уже 10 лет.


Алексей Доля: Можно ли, на ваш взгляд, обернуть задачи распараллеливания в достаточно высокоуровневые интерфейсы (например, API, классы .NET или Java) таким образом, чтобы избавить конечных разработчиков от решения задачи распараллеливания?

Ричард Вирт: Здесь есть два момента. Во-первых, я хочу обратить внимание, что сама реализация Java включает в себя распараллеливание. Обычно это порядка четырех потоков (для самой виртуальной машины, сборщика мусора и т.д.). То есть, Java сама по себе довольно легко масштабируется для использования в многоядерной архитектуре. Другой вопрос, что в долгосрочной перспективе, когда речь будет идти о 16 или 32 процессах, мы уже выйдем за рамки этой техники. Однако Java, как язык программирования, поддерживает потоки на достаточно естественном уровне. Если мы посмотрим на С, С++ или Fortran, то разработчикам приходится добавлять потоки в программах на этих языках, потому что потоки не являются интегральной частью языка. Что же до .NET, то в смысле параллельных потоков платформа схожа с Java.
Во-вторых, наша компания предоставляет ряд инструментов, которые помогут разработчикам решить задачи распараллеливания.


Алексей Доля: Таким образом, общая техника разработки программного обеспечения в принципе сохранится. Разработчики, как и раньше, будут создавать дополнительные потоки в своих приложениях, но на этот раз эти потоки будут намного более производительными. Так?

Ричард Вирт: Да, все именно так и обстоит. Хорошим примером использования параллельных вычислений является видео, которое можно разделить на потоки. Так, один вычислительный поток будет отвечать за один кадр, другой - за следующий кадр и т.д. Можно, например, разбить и один кадр на определенные блоки и уже эти блоки распределять по потокам. В конечном итоге все зависит от того, какой мы изберем алгоритм.
Я думаю, что если необходимые курсы будут преподавать в университетах, как интегрированную часть образовательной программы, то все эти процессы станут естественными. Вдобавок, разработчики смогут пользоваться всеми преимуществами этой техники.
Не стоит забывать, что, например, компилятор С++ может автоматически распараллеливать код. Типичной технологией, которая используется здесь, является распараллеливание стандартных задач. Скажем, у вас есть код, в котором имеются циклы. Тогда каждую итерацию цикла можно поручить отдельному потоку. В результате получится серьезный выигрыш в производительности. Мы сейчас и стараемся сделать так, чтобы подобные вещи стали понятны программистам.


Алексей Доля: Как, на ваш взгляд, будет проходить процесс переноса существующих приложений под многоядерную архитектуру? Достаточно ли будет просто перекомпилировать это приложение, например, с помощью новой версии компилятора? Или разработчикам придется решать какие-то математические задачи по распараллеливанию алгоритмов?

Ричард Вирт: Честно говоря, все зависит от конкретного приложения. Если рассматривать такие задачи, как прогноз погоды, то они уже были распараллелены в прошлом для работы в больших кластерах, следовательно, могут эффективно использоваться на многоядерных процессорах. Сейчас же основной фокус перемещается на мультимедиа-приложения и игры, однако, они по своей природе также могут быть очень эффективно распараллелены. Кстати, все, что мы сейчас делаем в рамках концепции цифрового дома, уже разделено на потоки и учитывает многоядерный подход.


Алексей Доля: Можно резюмировать, что конечным разработчикам, создающим крупные корпоративные приложения, отныне всегда придется решать задачи распараллеливания. То есть, фактически им придется освоить новое ремесло. Так?

Ричард Вирт: Да, абсолютно. Хотя многие приложения (например, целый ряд серверных приложений и базы данных) разделены на потоки уже сейчас, им придется использовать еще большее количество потоков. Однако взамен они получат возросшую производительность. Что касается разработчиков игр и мультимедиа-приложений в рамках цифрового дома, то им пригодятся инструменты Intel (компиляторы и библиотеки, учитывающие параллельный характер вычислений). При этом свои собственные библиотеки и самостоятельно написанный код придется модифицировать.


Алексей Доля: Вы не могли бы кратко рассказать об инструментах Intel, которые помогают решать задачи распараллеливания?

Ричард Вирт: Я уже упоминал компилятор, который автоматически распараллеливает код, однако есть еще целый ряд библиотек и примитивов, которые особенно пригодятся при решении задач мультимедиа, шифрования, цифровой речи и цифрового видения и т.д. Это - хороший фундамент, на котором можно строить новые многопоточные приложения. С его же помощью можно легко распараллелить существующий код.


Алексей Доля: То есть наивысший приоритет лежит на библиотеках?

Ричард Вирт: Да, я думаю, что это - наиболее легкий способ распараллелить приложение. При этом разработчикам не надо менять существующий код, следует лишь воспользоваться новой версией библиотек.
Однако я бы еще хотел упомянуть инструмент Thread Checker. На мой взгляд, его роль возрастает с переходом к многоядерной архитектуре. Когда вы делаете потоки, вам необходимо защищать данные. Нечто подобное происходит тогда, когда вы делитесь какой-то информацией со своим другом, но так, чтобы только он получил эти данные. Здесь, конечно, пригодится Thread Checker. Вообще, это разработка Университета штата Иллинойс. Один из самых известных ученых в области параллельных вычислений и языков многопоточной разработки, Дэвид Кук, был приглашен несколько лет назад в компанию Intel. Он разработал первоначальную технологию, которая позволяет анализировать использование потоков в программах и находить любые небезопасные ситуации. Например, если вы пользуетесь данными, но не защитили их. Кстати, наш инструмент уже позволил выловить многочисленные ошибки в тех приложениях, которые были написаны сравнительно давно.
Возвращаясь к вопросу о библиотеках, хочу отметить оптимизирующие библиотеки Intel Performance Primitives (IPP) и OpenCV, которые были разработаны в российских центрах Intel в Сарове и Нижнем Новгороде и позволили беспилотным автомобилям, управляемым роботами, победить в многочасовой гонке по пустыне Мохаве (штат Невада). В заезде участвовало довольно много автомобилей без водителей, управляемых только компьютерами и сенсорами, а первые три места заняли машины, управляемые компьютерами на базе процессоров Intel Pentium M и Intel Itanium 2. Интересно, что первые два беспилотных автомобиля использовали библиотеки IPP и OpenCV, алгоритмы которых применяются для статистической обработки изображений. Замечу, что автомобили управлялись именно компьютерами (никакого удаленного управления). Путь проходил по пересеченной местности, дорога была очень узкой, было также три туннеля. При этом компьютеру постоянно приходилось выбирать маршрут на основании тех данных, полученных с помощью сенсоров. Думаю, это хороший пример того, на что способны библиотеки.

От автора: Как позднее сообщил представитель пресс службы компании Intel, гонки проводились 8 октября. Именно вышедший победителем внедорожник-робот "Фольксваген-Туарег" (к гонке его подготовили в Стэндфордском университете) и показавший второй результат автомобиль Sandstorm (детище специалистов из Института робототехники при университете им. Карнеги-Меллона) использовали оптимизирующие библиотеки Intel Performance Primitives (IPP) и OpenCV.
В марте прошлого года аналогичная гонка в штате Невада закончилась, едва начавшись: уже к двенадцатому километру все внедорожники-роботы сошли с дистанции. Однако во второй попытке самостоятельно, без участия человека пройти проложенную через пустыню Мохаве трассу и при этом уложиться в отведенные на это 10 часов участвовали 23 беспилотных автомобиля. На сей раз до финиша добрались пять "робокаров", в том числе все три машины, спонсировавшиеся корпорацией Intel. Команды, снарядившие эти машины, и заняли весь пьедестал почета. Быстрее всех - за 6 часов 53 минуты - трассу преодолел "Фольксваген-Туарег", на 11 минут дольше в пути находился Sandstorm, а третьим призером стал автомобиль-робот H1ghlander (его время - 7 часов и 14 минут). Каждый из этих автомобилей был оборудован компьютерами на базе процессоров Intel Pentium M и Intel Itanium 2.


Алексей Доля: Известно, что приложение, которое оптимизировано под процессоры Intel, работает быстрее, чем аналогичное приложение без оптимизации. Правильно ли я понимаю, что с переходом на многоядерную архитектуру роль оптимизации под процессоры Intel возрастет, так как разрыв в этой производительности увеличится?

Ричард Вирт: Оптимизация стремится к тому, чтобы на 100% задействовать возможности процессора. Сейчас же мы разделяем код на потоки, каждый из которых может быть выполнен своим ядром. Следовательно, мы должны вновь стараться задействовать все 100%. Таким образом, частично это будет приводить к повышению производительности. Можно поставить теоретический вопрос. Можно ли добиться хорошего масштабирования? Например, есть код, работающий на одном процессоре, а мы его запускаем на четырех. Будет ли код работать в четыре раза быстрее? Не совсем. Это верно лишь в теории. На практике мы вынуждены считаться с ограничениями, накладываемыми скоростью памяти, пропускной способностью шины и т.д. В частности, на форуме IDF будет демонстрация, в которой сравнивается производительность сервера с четырьмя потоками - с новым сервером с шестнадцатью потоками. Казалось бы, прирост должен быть в четыре раза, но на практике он получается только в три раза. Тем не менее, это достаточно серьезные возможности масштабирования.


Алексей Доля: Если резюмировать, то роль оптимизации под процессоры Intel возрастает в результате перехода на многоядерную архитектуру?

Ричард Вирт: Да, именно поэтому мы уделяем так много внимания различным инструментам, компиляторам, библиотекам и т.д.


Алексей Доля: Вы не могли бы рассказать, что будет дальше с технологией Hyper-Threading? Она перейдет в многоядерные процессоры?

Ричард Вирт: Да, многоядерные процессоры также будут поддерживать эту технологию. Однако хочу пояснить разницу между несколькими ядрами и Hyper-Threading. Она состоит в том, как именно используются ресурсы чипа. В Hyper-Threading есть два набора регистров, но кэш и внутреннюю шину различным потокам приходится делить между собой. Этот подход позволяет использовать меньше транзисторов и добиться масштабирования порядка 30%. Больше не получается именно из-за ресурсов шины. А вот при распараллеливании ничего делить не надо. У каждого чипа своя собственная шина, свой собственный кэш. Конечно, приходится использовать больше транзисторов, но раз уж мы перешли с технологии 90 нм на 65 нм, то можем использовать большее количество транзисторов. Вдобавок, увеличение числа транзисторов не приводит к повышению энергопотребления. Хотя число транзисторов увеличивается, переход на 65 нм позволяет даже снизить энергопотребление. К тому же в течение следующего года мы планируем переходить уже с 65 нм на 45 нм. То есть, можно ожидать удвоение числа ядер снова.


Алексей Доля: Хотелось бы обсудить проблему оптимизации приложений под технологию Hyper-Threading на многоядерных процессорах. Сохранятся ли инструменты и методология подобной оптимизации?

Ричард Вирт: Да, никаких изменений. Параллельный код может работать либо по потокам Hyper-Threading, либо по отдельным ядрам. Разница между этими двумя путями в уровне производительности. С Hyper-Threading можно рассчитывать на 30% прироста, а с двумя ядрами на 80%-90%.


Алексей Доля: Я столкнулся с тем, что некоторые разработчики (поставщики программных продуктов) в качестве одного из своих преимуществ выдвигают тезис: "Наше ПО оптимизировано для работы на платформе Intel Centrino". Тем не менее, на прямой вопрос, в чем состоит эта оптимизация, и какие преимущества от нее получает конечный пользователь, от представителей таких компаний я ответа не получаю. В связи с этим вопрос - о процедуре сертификации (или проверки) ПО на предмет оптимизации под Intel Centrino. Какие преимущества получает пользователь? Что нужно сделать разработчику, чтобы стать "Centrino Compatible"? Какие требования предъявляет Intel?

Ричард Вирт: В принципе, набор инструкций является стандартным для всех процессоров Intel, то есть это - тот же самый код. Вопрос в другом: "Как задействовать все ресурсы данной конкретной платформы?". Для этих целей у нас есть специальные компиляторы и библиотеки, оптимизированные под ту или иную платформу. В том числе и для Centrino.


Алексей Доля: Есть ли какой-то процесс сертификации на предмет совместимости с Intel Centrino?

Ричард Вирт: Нет, такого процесса нет. Разработчику достаточно использовать специализированные библиотеки.

Дэвид Райн: У нас была идея организовать процесс сертификации, мы даже создали пилотный проект именно по формальной сертификации, но широкого распространения он не получил. Сейчас у нас есть наклейка-логотип, которая свидетельствует о том, что программный продукт оптимизирован для работы с Intel Centrino, однако формального процесса сертификации нет.


Алексей Доля: Вы можете охарактеризовать важность софтверного направления для компании Intel?

Ричард Вирт: Именно софтверные разработки добавляют ценности нашим продуктам. Думаю, вы обратили внимание на то, что в последнее время ценность конечному продукту придают не только производительность процессора, но и то программное обеспечение, что на нем выполняется. Разумеется, мы не собираемся терять существующий сегодня фокус в постоянном совершенствовании аппаратных компонентов. Однако проектирование и разработка эффективного программного обеспечения позволяет получать более ценные и полные решения, поэтому мы стали уделять внимание и этому направлению. Конечный пользователь от этого только выигрывает.
Следует принять во внимание перспективы расширения рынка, а ведь сейчас ежегодно продается 250 млн. персональных компьютеров - это примерно 5% населения Земли. Если мы хотим расширить этот рынок еще больше, необходимо сделать компьютеры более легкими и доступными в использовании. Именно этим занимается компания Intel на протяжении последних двух-трех лет. Мы пытаемся решить эти проблемы на уровне платформы. Ярким примером наших результатов является разворачивание концепции цифрового дома, которая позволяет сделать компьютер настолько простым, что его использование в домашних условиях станет естественным. Мы пытаемся сделать новые технологии доступными, как для малолетних детей, так и для взрослых. Мы также стараемся придать ценности использованию компьютеров. Для этого мы работаем с компаниями, специализирующимися на контенте (фильмах, музыке и т.д.). Между тем, это именно то, что востребовано сегодня пользователями. В этой связи переход на многоядерную архитектуру позволяет возложить на компьютер еще больше функций по обработке все того же контента. От этого снова выигрывает конечный пользователь. Таким образом, Intel - это уже не просто компания, которая производит чипы. Нет. Это компания, которая поставляет платформенные решения. В этом стратегический фокус компании немного сместился.


Алексей Доля: Какие софтверные направления развития сейчас наиболее важны для Intel? Например, видно, что компания очень много внимания уделяет многоядерной архитектуре и мобильным технологиям. Что бы вы могли назвать еще?

Ричард Вирт: Во-первых, мультимедиа. Думаю, мы очень много сделали для развития сферы мультимедиа. Опять же, это проявляется в области цифрового дома. Более того, работа в этом направлении будет продолжаться. Во-вторых, сейчас мы также стремимся к тому, чтобы облегчить коммуникации между разными устройствами, например, ноутбуком и мобильным телефоном. Сегодня мы вынуждены использовать промежуточный сервер, если хотим обеспечить связь между ноутбуком и телефоном. Но почему бы нам напрямую не соединиться так, чтобы я мог воспользоваться клавиатурой ноутбука, а ее вывод был перенаправлен на телефон? Таким образом, вторым очень важным направлением являются мобильные коммуникации. Здесь я бы еще отметил работы, направленные на снижение энергопотребления в мобильных устройствах. Наша конечная стратегическая цель здесь - сделать так, чтобы можно было нажать всего одну кнопку и тем самым обеспечить соединение нескольких устройств.


Алексей Доля: Лет 10 назад деятельность Intel ассоциировалась с платформами DOS и Windows. В последние годы видение компании заметно расширилось в плане поддержки других программных платформ. Например, всем известны усилия Intel по поддержке Linux. Однако не видно движения вашей компании в сторону поддержки платформы Java. Есть ли какие-нибудь планы в этом направлении?


Ричард Вирт: На самом деле, мы очень много внимания уделяем Java. Прежде всего, мы сделали две вещи. Во-первых, мы взаимодействовали с компаниями типа IBM для того, чтобы оптимизировать Java для работы на нашей архитектуре. Хорошим примером такого взаимодействия является JRockit от BEA. Во-вторых, намного более интересны наши усилия в области Java для Open Source. Многие наши российские разработчики работают в этом направлении. Речь идет о проекте Harmony, запущенном Apache, целью которого является создание открытой версии Java. Мы считаем, что Java в будущем произведет такой же эффект в области Open Source, как и открытый Linux на рынке операционных систем. Поэтому мы решили задействовать довольно серьезные ресурсы для того, чтобы Java работала на наших процессорах очень хорошо. Не стоит забывать, что самой Java уже 10-12 лет. Думаю, ее уже пора переписать, сохранив совместимость, но повысив производительность и эффективность. Сегодняшние процессоры просто стали намного быстрее. Более того, наша компания переходит на многоядерную архитектуру. Следовательно, необходимо воспользоваться всеми этими преимуществами в Java.


Алексей Доля: А мы в ближайшее время не увидим от Intel какого-либо компилятора Java или виртуальной машины Java?

Ричард Вирт: Мы очень плотно сконцентрировали на Java свое внимание, в том числе на компиляторах. Думаю, вы увидите много новинок в этом направлении в будущем. Вообще, Java и .NET являются основными средствами разработки приложений, ориентированных на сервисы. Важность сервисов значительно возрастет в ближайшие десять лет, поэтому вес этих платформ лишь увеличится.


Алексей Доля: Большое спасибо, что уделили столько времени и ответили на все вопросы. Удачи вам и всего доброго!