Я подустал от мрачных текстов и вспомнил о своей давней мечте. За 20 с хвостиком лет работы в «Интел» у меня развеселых историй накопилось на целую книгу. Хотелось в ретроспективе посмотреть на некоторые события, участником которых мне довелось быть. И еще хотелось отдать дань уважения компании и людям, с которыми мне посчастливилось работать. Я уже даже название придумал – Made at Intel. Понятно, что пока я был внутри конторы, речь о публикации этих баек идти не могла. Я сам подшучивал, что для публикации нужно правильно выбрать время. В смысле, сначала уволиться, а потом публиковать, а не быть уволенным вследствие публикации. Однако примерно два года назад я «Интел» покинул, и, казалось бы, меня уже ничего не сдерживало. Но тут как всегда – то перо поломается, то струна порвется, то еще какая беда приключится. К тому же на то, чтобы писать книжку – это же решимости набраться надо… И вот вчера я решил, что большое надо начинать с малого. Буду писать по главке. Так мало-помалу и наберется.
Итак, сегодня вашему вниманию представляется первая глава, в которой эволюция архитектур Intel рассматривается с точки зрения… истории религиозных течений. Да-да, не удивляйтесь, архитектура вычислительных устройств – это одна из самых религиозных вещей. Не думайте, что все решения по Instruction Set Architecture[2] принимаются исключительно на основе анализа данных – это совсем не так. Скорее похоже на средневековое государство – тут есть немного бизнеса, побольше политики и очень много религии. Все просто – почти любой эксперимент в этой области растягивается на годы и обходится в миллиарды долларов. Хуже всего, что в процессе дизайна можно давать лишь приблизительные оценки ключевых характеристик – частоты, производительности, энергопотребления, температурной карты. То, как все оно будет на самом деле, становится понятным уже только тогда, когда чип выходит из печки. Да, сейчас в этой области уже накоплен определенный опыт, и наши оценки становятся несколько точнее, но и только. А 20 лет назад этих знаний было куда меньше. И пионеры, подобные «Интел», двигались в темноте на собственный страх и риск. Разумеется, в таких условиях на первый план выходит, кто во что ВЕРИТ. Ну да – еще кто лучше говорить умеет. Лучшие архитекторы приходят из школ с углубленным изучением богословия.
Именно поэтому история эволюция развития архитектурной мысли так странно напоминает историю религий. Разница только в масштабе времени – то, что в религии формируется веками, в дизайне чипов складывается за считанные годы, а иногда даже месяцы. Взять хотя бы школу Бориса Арташесовича Бабаяна (наверно, самую древнюю из известных мне архитектурных школ). Мне трудно впрямую причислить себя к его ученикам, но то, сколько мы общались и сколько идей я от него набрался, наверно, позволяет так говорить. Так вот, там на протяжении 60 лет было все: расколы (наподобие католической и лютеранской церкви), формирование новых течений и, разумеется, идейные конфликты. Существенную роль играл фактор времени. Отколовшиеся недавно признавались «последователями», а долго упорствующие в своих «заблуждениях» – прямыми «еретиками». Много всякого происходило за 60 лет, и я видел из этого лишь малую толику. Поэтому меня подмывает нарисовать полное «генеалогическое древо» этой школы. Когда поеду навестить Арташесовича в следующий раз, надо будет этим заняться. Но давайте вернемся к «Интел». В этой главе я расскажу о трех культах, которые имели все признаки религиозных и формировали историю компании.
Это течение сформировалось в конце XX – начале XXI века. В основе лежала, в общем-то, простая мысль – при повышении тактовой частоты производительность приложений при прочих равных растет. Не обязательно линейно (обмены с памятью никто не отменял), но растет. Заменяя процессор на новый, пользователь получает ускорение «из коробки». Без всяких мучительных манипуляций с исходным кодом ради распараллеливания и векторизации. Тенденция эта началась еще во времена Pentium III, но полностью развилась уже в Pentium IV. Все было бы прекрасно, но вот только загвоздка в этом самом «при прочих равных». Очевидно, что чем короче такт, тем больше их потребуется для выполнения данной инструкции. Ведь x86 – это все же CISC. И «Интел» задумал поменять архитектуру в угоду частоте. Так родился NetBurst c его гиперпайплайном. Идея в том, чтобы разбить команду на микроинструкции (такой RISC внутри CISC) и запихивать их в огромной длины пайплайн. В Willamette он составлял 20 стадий, а в Prescott – 31, и это не считая декодирования. Суть в том, что эти микроинструкции можно выполнять на гораздо большей частоте, чем настоящие x86 команды. И это неплохо работало на прямых, как палка, кодах и прогретых кэшах. Но стоило поймать промах в кэш, и в пайплайне образовывался баббл (пузырек) – молотилка работала вхолостую. Еще хуже дело обстояло при неправильном предсказании ветвлений. Они не часто (буфер предсказания ветвлений BTB выдавал 94-процентную точность предсказаний), но все же случались. В этом случае цена была астрономической – только для очистки конвейера (flush) могло потребоваться до 100 тактов. А ведь надо было еще снова его загрузить… Тем не менее «Интел» твердо уверовал в парадигму и в начале 2000-x (если мне память не изменяет) провел публичный эксперимент, где P4 работал на частоте около 8 гиг и охлаждался жидким азотом. Это, конечно, вдохновило оверклокеров и заставило серьезно задуматься всех остальных. Ибо гигагерцы – оно, конечно, круто, но жидкий азот – это все-таки жидкий азот…
Кульминация, однако, случилась еще раньше. Боб Колвелл (один из самых уважаемых мной дизайнеров) проработал в «Интел» всего пять лет (1995–2000), но сумел оставить в истории компании яркий след. Он был одним из ведущих архитекторов линейки Pentium и, наверно, раньше всех осознал, что «гонка гигагерц» – тупиковый путь. Однако беда была в том, что тогда частота уже превратилась из чисто физического (или инженерного) понятия в предмет новой религии. И обычными средствами набирающую ход лавину было уже не остановить…
В одно прекрасное утро Бобу Колвеллу позвонил тогдашний CEO «Интел» Крейг Баррет. С Крейгом я встречался лично раз пять (больше только с нынешним CEO Пэтом Гелсингером), и он всегда производил впечатление человека исключительно здравомыслящего. Но, видимо, в том момент всеобщий экстаз захватил и его.
– Боб, дружище, нельзя ли поднять частоту еще на 20 %? – «поинтересовался» Крейг.
– Это очень сложно, – ответил Боб. – И более того, контрпродуктивно.
Но тем не менее частота была поднята.
Следующий звонок был таким:
– Боб, дорогой. Нельзя ли добавить еще процентов 15?
– Это почти невозможно и бессмысленно.
– Ну постарайтесь, вы же настоящие гении…
И последний.
– Боб, золотой мой, кровь из носа нужно еще 10 %.
– I deliberately do not agree[3], – ответил Боб, повесил трубку и написал заявление «по собственному желанию». Позже он описал это в своей замечательной книге The Pentium Chronicles: The People, Passion, and Politics Behind Intel’s Landmark Chips[4].
Но «Интел» не был бы «Интелом», если бы так легко отказывался от своих убеждений. NetBurst вышел на рынок и столкнулся там с платформой AMD Opteron, которая мало того что имела существенно более короткий конвейер, так еще и обладала встроенным контроллером памяти. В то время как интеловские платформы все еще использовали технологию North Bridge. На меня самое большое впечатление произвел следующий эпизод. Мы как-то попробовали запустить Linpack на процессоре Irwindale. И не смогли получить более 70 % эффективности. Обычно неприхотливый HPL уперся… в memory bandwidth. Возможно, мы что-то сделали не так, но шок был настолько велик, что мы очень быстро это занятие бросили.
Реальность рынка быстро оказала свое отрезвляющее воздействие. Intel начал стремительно терять долю рынку в пользу AMD. Однако ситуация, как ни странно, имела и положительные моменты для развития софтовой организации в «Интел» (и российской в частности). Контора осознала, что программатуру можно использовать для того чтобы прикрыть недостатки архитектуры. Нас бросили «на фронт», чтобы «распрямлять» коды (уменьшать количество ветвлений) и по возможности уменьшать зависимость от memory bandwidth. В «Интел» наступил (второй?) «золотой век софта». Затем в 2005 году, как глоток свежего воздуха, появился Merom, разработанный в Israel Design Center (IDC). Архитектура Core имела существенно более короткий конвейер и скорее являлась развитием идей P3. Но окончательно «смутное время» закончилось с выходом Nehalem – серверного чипа с архитектурой Core и интегрированным контроллером памяти. Империя встала с колен и нанесла сокрушительный ответный удар.