В июне 1990 года я поступил в Орегонское отделение микропроцессоров корпорации Intel в качестве ведущего компьютерного архитектора и приступил к работе над проектом P6.
Штат этого отделения впоследствии составили несколько тысяч человек, но тогда в нем числился лишь один сотрудник – я. Свой первый рабочий день я провел, заполняя формы и выбирая себе компанию медицинского страхования преимущественно на основе того, насколько мне нравились их названия. На следующий день мой босс сказал: «Ваша задача – превзойти возможности чипа P5 в два раза без изменения технологического процесса. Вопросы есть?». Я ответил: «Вопросы такие. Что такое P5? И не расскажете ли вы о планах развития техпроцессов Intel?»
Как оказалось, P5 – это микропроцессор Intel, который разрабатывала проектная группа в Санта-Кларе. На ее счету уже были весьма успешные процессоры 386 и 486. P5 дебютировал в 1993 году под названием Pentium. За этим проектом через два года должен был последовать P6.
С 1992 по 2000 год я работал ведущим архитектором платформы Intel IA-32. К моему удивлению, выпуск P6 оказался переломным моментом в истории компьютерной индустрии и Internet. P6 стал точкой опоры Intel на стабилизирующемся рынке рабочих станций и позволил корпорации утвердиться в секторе серверов, поскольку развитие Internet стимулировало спрос на недорогие Web-серверы.
Для подготовки производства P6 потребовались четыре с половиной года, а на завершающих этапах только инженеров в проекте было свыше 400. Но эти огромные инвестиции окупились: P6 стал микропроцессором Pentium Pro, после адаптации превратился в Pentium II, затем в Pentium III и дал начало новой линейке мобильных процессоров Centrino. Из базового проекта вышли и многочисленные варианты Xeon и Celeron. Короче говоря, P6 оказался самым успешным процессором общего назначения, растиражированным в сотнях миллионов экземпляров. Книга [3] – мой отчет об этом проекте с лирическими отступлениями по поводу Pentium 4.
КОНТЕКСТ ПРОЕКТА P6
Чтобы понять истоки P6, сначала нужно рассмотреть отраслевой и технологический контекст. Индустрия микроэлектроники в течение нескольких десятилетий испытывает невероятный подюем. Кремниевые чипы радикально улучшаются каждые два года. Регулярное обновление технологии производства позволяет удваивать число транзисторов, делать их существенно более быстрыми и снижать потребляемую мощность.
Даже если бы мы не вели других инженерных разработок, а только адаптировали проект к новым технологическим процессам, чип становился бы быстрее и дешевле без особых усилий с нашей стороны. Приступив к созданию центрального процессора и намереваясь запустить его в производство, скажем, через три года, я знаю, что могу рассчитывать на появление нового технологического процесса. Поэтому я веду разработку по его правилам и полностью уверен, что вместе с остроумными инновациями, придуманными моей проектной группой, эта технология даст «юному» чипу явное преимущество.
Но главная цель затрат и усилий на проектирование центрального процессора состоит в том, чтобы радикально улучшить его по сравнению с имеющимися. Для микропроцессоров «лучше» означает более высокую общую производительность. А она позволит создать более интересные программы, например операционную систему с улучшенным пользовательским интерфейсом или игру-«стрелялку» с еще более реалистичным отображением «плохих парней».
Мой новый чип должен обеспечить более высокую производительность, чем его предшественники. Но за три года, которые есть в моем распоряжении, мой конкурент тоже перейдет на новый технологический процесс, и его чип станет быстрее. Это – другая сторона медали: цель не стоит на месте. Причем новый микропроцессор должен победить не только продукт конкурента, но и любые другие чипы, в том числе выпущенные моей собственной компанией. Следовательно, мы с коллегами-архитекторами должны найти такие способы внутренней организации микропроцессора, чтобы сильно опередить соперников. Естественно, на первом шаге следовало выявить этих «соперников» и установить главные цели проекта.
В 1990 году Intel все еще развивала процессоры 486 – с тактовой частотой 33, 50 и 66 МГц. К 1992 году была достигнута частота 100 МГц. Напомню, что проект P5 разрабатывала в Санта-Кларе та же группа, которая ранее спроектировала процессоры 486 и 386. Поэтому первой задачей было присмотреться к возможностям P5, проанализировать его потенциальную производительность, исследовать методы группы в Санта-Кларе и придумать нечто, работающее вдвое быстрее.
Ставка на CISC
Другие процессоры Intel были не единственными конкурентами. На протяжении 80-х кипели страсти вокруг RISC/CISC. Общей предпосылкой появления RISC послужило то, что системы компьютерных команд (вроде использовавшихся в системах VAX корпорации Digital Equipment Corporation) стали излишне сложными и громоздкими. В инженерном деле при прочих равных условиях проще – это всегда лучше, а иногда и намного лучше. Разумеется, прочие условия никогда не бывают равными. И разработчики коммерческих систем продолжали добавлять все новые команды к огромной дымящейся куче команд VAX, надеясь на продолжение инноваций при сохранении обратной совместимости с имеющимся ПО.
Исследователи RISC обещали существенно повысить производительность, упростить процесс проектирования и предоставить множество других выгод. Значительная часть сообщества компьютерных разработчиков полагала, что компьютеры со сложным набором команд (Complex Instruction Set Computer, CISC) типа VAX и Intel x86 останутся на втором плане из-за явных технических преимуществ RISC. В 1990 году все еще было неясно, чем закончится битва между RISC и CISC. Некоторые из моих друзей-инженеров считали меня мазохистом или слабоумным. Едва успев выплыть из затонувшей Multiflow, молодой компьютерной компании, закрывшейся в 1990 году, я тут же взялся за «обреченный» проект x86. По мнению этих друзей, нашу проектную группу неизбежно должны были «смести» превосходящие нас по силе технологи.
Но мой анализ дебатов о RISC/CISC показал, что мы в состоянии импортировать почти все технические преимущества RISC в проект CISC. Увеличение размеров кристалла, правда, нежелательно, поскольку при этом повышается стоимость производства и растет рассеиваемая мощность. Но в начале 90Б??х рассеяние мощности было незначительным, и с ним легко справлялись простые системы охлаждения. И хотя издержки производства были связаны с размерами кристалла, они значительно больше зависели от обюемов производства, а в этом отношении компьютеры CISC имели огромное преимущество перед RISC-конкурентами.
Присоединившись к проектной группе Intel x86, я сделал ставку на свое понимание ситуации. P6 должен был побить предыдущие процессоры Intel, конкурентоспособное решение AMD и по меньшей мере сравняться с самыми многообещающими процессорами архитектуры RISC.
Перспективное мышление
Мы быстро поняли, что не просто «разрабатываем процессор». Принцип работы флагманской группы Intel заключается в том, чтобы начать «с чистого листа», придумать новую микроархитектуру, спроектировать процессор в соответствии с ней и выпустить относительно небольшую партию продукта.
Почему этот план хорош для отрасли, в которой преобладают солидные производственные обюемы? Архитекторы должны действовать довольно агрессивно: они знают, как превратить дополнительные транзисторы в дополнительную производительность, а производительность хорошо продается. Другими словами, первый вариант процессора заполняет крупный кристалл. Физика производства кремниевых чипов такова, что чем больше кристалл, тем менее он экономичен. При изготовлении интегральных схем на кремниевой пластине помещается меньше крупных чипов, а случайные производственные дефекты со значительно большей вероятностью разрушают такие чипы. Из-за их значительных размеров первая версия новой микроархитектуры оказывается дорогой, что автоматически ограничивает обюем ее продаж.
Но второй и последующие варианты процессора уже приносят деньги. Соответствующие проекты все больше адаптируются к новому технологическому процессу и позволяют извлекать все выгоды из закона Мура. Чип становится меньше, поскольку уменьшаются его транзисторы и проводники. Растет его производительность, ибо маленькие транзисторы работают быстрее. Он оказывается дешевле, ведь на кремниевой пластине помещается больше чипов. К тому же на ней больше хороших чипов, так как потенциальному загрязнению подвергается меньшая площадь. Наконец, проектная группа сильно сокращается, а для выпуска очередного варианта требуется примерно год вместо трехб-пяти лет, потраченных на флагманский проект.
Генри Петроски отмечает, что парадигма «флагманский проект – усовершенствование» не является уникальной для микропроцессорной индустрии. «Можно ожидать, – говорит он, – что все инновационные проекты окажутся не очень экономичными, поскольку потребуют исследований, разработок, доказательств и здорового консерватизма. Все это их технологические потомки получат бесплатно» [1].
Нам стало ясно, что ценность P6 для Intel заключается не столько в его первом варианте (он был выпущен на рынок под названием Pentium Pro), сколько в перспективах развития. Тогда мы начали включать принцип перспективности в наши проектные решения. На ранних стадиях проекта он сыграл заметную роль в обсуждениях системной шины P6 – средства, с помощью которого центральный процессор «общается» с чипсетом. Некоторые из специалистов по маркетингу подчеркивали, что если у P6 будет такая же системная шина, как у P5 (Pentium), то системные платы для нового центрального процессора появятся, как только он будет готов. Если же чипсет для P6 по каким-то причинам запоздает, мы сможем отлаживать новый центральный процессор на базе чипсета для P5.
На первый взгляд эти аргументы абсолютно правильны. Но маркетологи упускали из виду целостную картину: в долгосрочной перспективе шина P5 удручающе неадекватна тем уровням производительности, которых мы намеревались достичь в P6. Мы также начали прикидывать осуществимость многопроцессорного варианта, и шина P5 оказалась совершенно не подходящей для таких систем. Мы могли добиться значительно большего с помощью новых методов монтажа и недавно появившихся схем управления шиной.
Перспективное мышление повлияло и на восприятие важности 16- и 32-разрядного кода. 16-разрядный код был наследством эры DOS. Мы знали, что P6 должен будет выполнять любой код архитектуры Intel x86, чтобы считаться совместимым, но полагали, что с течением времени 16-разрядный код потеряет актуальность. Господство 32-разрядного кода над 16-разрядным сегодня кажется очевидным. Но, как в музыке и политике, в электронике все решает правильный выбор момента. 32-разрядный код был полем битвы в конфликте RISC/CISC, а также перспективой развития программной отрасли в целом. При проектировании ядра P6 мы сконцентрировались на высокой производительности 32-разрядного кода и не обращали особого внимания на скорость выполнения 16-разрядных команд.
Путь испытаний
Упомянутые соображения в значительной мере определили контекст проекта P6. Мы разрабатывали продукт, который, как мы надеялись, сразу принесет доход, но были готовы закрыть глаза на некоторые его недостатки ради перспектив развития. У P6 были конкуренты как внутри компании (процессор P5), так и внешние (x86 и RISC).
Некоторые из нас имели значительный опыт проектирования кремниевых чипов, но в столь большой группе неизбежен большой процент новичков – недавних выпускников колледжей. Кроме того, мы были совершенно новым отделением, не имевшим прежних заслуг. В течение следующих пяти лет Intel рискнула несколькими сотнями миллионов долларов, чтобы мы смогли решить все стоявшие перед нами задачи.
И мы не только нашли ответы, но и придумали микроархитектуру, позволившую корпорации закрепиться в секторе серверов начального уровня, существенно изменить весь сегмент серверов и сделать их достаточно дешевыми для использования на любом предприятии. Такие серверы, без сомнения, обусловили взрывной рост Всемирной сети в середине 90-х, но мы далеки от того, чтобы приписывать себе честь развития Internet. Это заслуга Эла Гора. (Альберт Гор – вице-президент США с 1993-го по 2001 год, много сделавший для развития высоких технологий. – Прим. пер.) Кроме того, Intel удалось получить немалую прибыль от продажи 3 млн. микропроцессоров Pentium Pro. Но в начале пятилетнего периода почти все, что у нас было, – это несколько плодотворных идей и очень мало времени на их развитие.
РАЗВИТИЕ БОЛЬШИХ ИДЕЙ
Первый шаг состоит в том, чтобы не забыть саму идею. Композиторы, писатели и инженеры с большим трудом вспоминают свои гениальные озарения. Для взращивания мелких идей годятся любые методы, но с большими идеями так не получается. Они требуют множества людей, времени и денег, но и этого недостаточно для успеха.
Инженерные проекты начинаются с осознания потребности. Затем рождается идея – некоторый способ удовлетворения этой потребности. Даже если ваш босс просто велит вам что-то сделать, у вас должна быть «внутренняя потребность» в такой работе. Возникновение идей стимулируется вопросами вроде «разве не здорово иметь мост через залив Сан-Франциско до округа Марин?» или «а что если мы расставим вышки вдоль загруженных шоссе и будем использовать их для ретрансляции радиотелефонных сигналов?». Я знаю! Мы назовем это «сотовой телефонией»! И запустим спутники, измерим скорость их движения и время передачи сигналов, а потом воспользуемся этими данными для точного определения местоположения обюектов на поверхности Земли.
В 1961 году президент Джон Кеннеди призвал Соединенные Штаты организовать к концу 60-х лунную экспедицию [2], что было осознанной необходимостью. Инженеры NASA должны были придумать способы реализации этой идеи. Можно ли сделать ракеты-носители достаточно безопасными для отправки людей в космос? Как посадить корабль на лунную поверхность, чтобы он смог взлететь снова? Как транспортировать необходимое оборудование с Земли на Луну? Лететь ли к Луне сразу или стартовать с земной орбиты?
Специалисты NASA обычно выявляют несколько многообещающих идей, а затем каждую из них рассматривают подробно – нет ли в ней неустранимых недостатков. Они систематически отбрасывают нежизнеспособные планы и сосредоточивают внимание на оставшихся. В конце концов они выработали комплексный план, включавший в себя старт с земной орбиты, полет к Луне и выход на лунную орбиту. Посадочный модуль состоял из двух частей: одна предназначалась для посадки и оставалась на поверхности Луны, а вторая служила для взлета и возвращения на лунную орбиту.
На каждом шаге программы «Аполлон» исследования и разработки определялись этой общей концепцией. Габариты и массу двухступенчатого посадочного модуля можно было точно рассчитать, что позволило установить требования к тяге его двигателей. Общая сила тяги, необходимая для доставки ракеты вместе с топливом и посадочным модулем на земную орбиту, стала основой для разработки тяжелой ракеты-носителя «Сатурн V». Для маневров стыковки и расстыковки потребовались маневровые двигатели и герметичные уплотнители стыковочных узлов.
Наш подход к проекту P6 очень напоминал подход NASA к полету на Луну. Мы старались использовать уже имевшиеся решения, инструменты и методы, но с самого начала знали, что их недостаточно для успеха проекта. Поэтому мы организовали работу проектной группы так, чтобы она занималась конкретными проблемами электронных цепей, шин и мультипроцессорной обработки.
Высшая мудрость
Инженеры обычно признают справедливость высказывания «творческий потенциал не заменит знания своего дела». Не обращайте внимания на приписываемую Альберту Эйнштейну формулу «Воображение важнее знания». Она может оказаться справедливой для ученого, но хороший инженер не может просто вообразить мост, выдерживающий определенную нагрузку. И для решения своей задачи он скорее предпочтет использовать проверенный метод, чем заново все придумать. Снижая общий риск, он может сконцентрировать творческий потенциал на тех частях проекта, которые действительно в этом нуждаются.
Но если мы будем так мыслить применительно к общему техническому руководству проектом, нам не избежать проблем. Наша врожденная склонность к тщательному изучению методов управления, выбору лучшего из них и его применению на практике ведет нас по замкнутому кругу, поскольку описания новых методов руководства проектами появляются быстрее, чем мы успеваем их читать. Хуже того, эти трактаты слабо согласуются друг с другом, а потому невозможно синтезировать «самую лучшую» методологию руководства проектом. К тому же методы, хорошо себя зарекомендовавшие в одном проекте, могут потерпеть крах в следующем, по меньшей мере вдвое более сложном. Это – темное пятно на сияющем диске закона Мура
Крупным инженерным компаниям приходится постоянно балансировать между корпоративной мудростью (воплощенной в их «старинных манускриптах» наилучших методов) и необходимостью инноваций при решении проблем, с которыми никто прежде не сталкивался. Проекту P6 очень повезло с группой: ее члены либо никогда не имели дела с процессорами x86, либо вообще не работали в Intel. И это помогло сбалансировать историческую мудрость и озарения.
Как отличить поражение от победы
В большинстве случаев компания представляет новый проект нескольким ведущим инженерам. Перед ними стоят непростые задачи тщательной оценки проектных требований и ответа на двухаспектный вопрос: в чем будут состоять успех и неудача проекта? Они должны выявить возможные пути, ведущие к Земле обетованной. Эти пути нелегко распознать – на каждый работающий план приходятся тысячи неудачных, но первоначально внушавших доверие. И критерии успеха – не просто логическая инверсия условий неудачи. Для P6 одним из критериев успеха стало превышение определенного порога производительности, а в критериях неудачи числился выход значений рассеяния мощности за некие пределы.
В сущности, несколько ведущих сотрудников выбирают варианты, которые будут явно или неявно направлять усилия сотен (или, в случае NASA, десятков тысяч) других людей на жизненном пути проекта. Иногда попадаются статьи о гениальных программистах, со страшной скоростью выдающих блестящие коды. Такие люди действительно есть, хотя неизвестно, откуда они берутся и как увеличить их число. О них говорят: «Один суперпрограммист может написать за день столько кода, сколько трое его коллег не напишут и за неделю». Но авторы подобных высказываний упускают из виду главное: вы не сумеете заменить этих немногих избранных большим числом менее одаренных людей. То же относится и к руководителям проекта: количеством не заменить качества. Интуиция и знания этих руководителей очень важны для вывода проекта на правильный путь и его развития.
ЧЕТЫРЕ СТАДИИ ПРОЕКТА
Основами успеха маленьких проектов, в которых заняты лишь несколько инженеров, часто становятся интуиция и сиюминутные решения. Такой проект может оказаться удачным, если у руля находится опытный инженер. Но крупный проект не выносит «сиюминутности». При отсутствии должного управления он может оказаться чудовищно неэффективным и даже полностью развалиться. Большие проекты требуют структуризации и планирования.
Разумеется, у нас были план и график, но мы начинали вовсе не с той концептуальной схемы, которая фигурирует в моей книге [3]. Эта схема скорее результат попытки по прошествии времени навесить ярлыки на то, что мы сделали. Можно выделить четыре основные стадии проекта: разработка концепции, рафинирование, реализация, производство.
На стадии разработки концепции ведущие инженеры рассматривают потребность и пробуют путем коллективного мозгового штурма найти способы ее удовлетворения. Если необходим наилучший способ добраться из центра Сан-Франциско в округ Марин, они предложат множество решений с использованием паромов, туннелей, мостов, дрессированных дельфинов, дирижаблей, подводных крыльев, субмарин, надутых автомобильных камер, пассажирских артиллерийских снарядов и водных мотоциклов (не забывайте, что на этапе мозгового штурма годится все).
На стадии уточнения специалисты отметают неправдоподобные решения и упорядочивают оставшиеся по приоритетам. Теперь ограниченные инженерные силы проекта смогут сконцентрироваться на идеях, с наибольшей вероятностью ведущих к успеху. Из 10-20 идей, рожденных при разработке концепции, стадию рафинирования переживут, вероятно, лишь две-три. Одна из них станет официальным планом, и к ней будет приковано основное внимание на стадии реализации.
Реализация – это сам процесс проектирования. Проектная группа берет лучшую из идей, выявленных на стадии рафинирования, развивает ее и выпускает опытный образец продукта.
Последняя стадия процесса разработки – производство, то есть выпуск в больших количествах того, что было создано на этапе реализации. Эта стадия часто игнорируется проектными группами. Но они должны внимательно наблюдать за своими детищами, а не спихивать ответственность на производственников после первой же продажи.
Стадии проекта обычно перекрываются. Проект как целое может переходить от выработки концепции к рафинированию в течение нескольких недель или месяцев. А инженеры находятся в любых точках этого перехода, существенно отставая или опережая друг друга. Часть проектной группы может заканчивать предыдущий проект и не иметь возможности присоединиться к новому почти до окончания выработки концепции.
Четырехстадийная модель чрезвычайно полезна как инструмент управления и способ координации действий проектной группы (жаль, что мы не поняли этого раньше). Группа должна «наложить» четыре стадии на общий график проекта, чтобы каждый мог принимать правильные решения на локальном уровне. Например, идеи, достойные внимания на стадии разработки концепции, на более поздних этапах придется отложить в сторону.
ЧЕСТНАЯ ИГРА
Я считаю своим долгом подчеркнуть роль коллектива в развитии проекта P6. Однажды футбольная команда «Питтсбург Стилерс», прежде постоянно проигрывавшая, выиграла четыре матча кряду. Это произошло не потому, что она блестяще играла большую часть времени, да и в остальные моменты вела себя достойно. Вся суть заключалась в том, что команда твердо решила победить. По всему было видно, что она готова преодолеть любые препятствия, сделать все для победы и стать лучшей в мире.
Такими же качествами обладала и группа P6. Мы опирались на превосходные организаторские способности Рэнди Стека и его постоянное стремление к совершенству, а нашим опытным техническим руководителям не нужно было обюяснять, что делать дальше. Мы старались сохранять душевные силы, бороться с проблемами по мере их появления и всегда были готовы пробовать что-то новое. Невероятно талантливые разработчики и архитекторы горячо желали привести проект к успеху. В результате P6 оказался таким, каков он есть.
Я не утверждаю, что мы знали больше, чем другие менеджеры, и что наш подход был наилучшим (хотя я уверен в его превосходстве над некоторыми другими подходами). Я просто хотел рассказать о том, что мы сделали, почему и что из этого вышло.
ЛИТЕРАТУРА
- H. Petroski, Design Paradigms. Cambridge Univ. Press, 1994.
- R. Turnill, The Moonlandings: An Eyewitness Account. Cambridge Univ. Press, 2003.
- Robert Colwell, The Pentium Chronicles: The People, Passion, and Politics Behind Intel's Landmark Chips, ISBN: 0-471-73617-1. Wiley-IEEE Computer Society Press, 2006.
Роберт Колвелл (bob.colwell@comcast.net) был главным архитектором микропроцессоров Pentium II, III и 4. Сейчас работает независимым консультантом.
Robert P. Colwell, The Pentium Chronicles: Introduction, IEEE Computer, January 2006. IEEE Computer Society, 2006, All rights reserved. Reprinted with permission.