Made at Intel. Architecture and religion

ac3505a60d0756457c6f8f74952bd730.png

Я подустал от мрачных текстов и вспомнил о своей давней мечте. За 20 с хвостиком лет работы в Интел у меня развеселых историй накопилось на целую книгу. Хотелось в ретроспективе посмотреть на некоторые события, участником которых мне довелось быть. И еще хотелось отдать дань уважения компании и людям, с которыми мне посчастливилось работать. Я уже даже название придумал — Made at Intel. Понятно, что пока я был внутри конторы, речь о публикации этих баек идти не могла. Я сам подшучивал, что для публикации нужно правильно выбрать время. В смысле сначала уволиться, а потом публиковать, а не быть уволенным вследствие публикации. :) Однако примерно 2 года назад я Интел покинул, и казалось бы меня уже ничего не сдерживало. Но тут, как всегда — то перо поломается, то струна порвется, то еще какая бяда приключится. К тому же на то чтобы писать книжку — это же рeшимости набраться надо… И вот — вчера я решил, что большое надо начинать с малого. Буду писать по главке и выкладывать сюда — собирать фидбек. Что-то убирать, что-то редактировать.Так мало –помалу и наберется.

Итак, сегодня вашему вниманию представляется первая глава, в которой эволюция архитектур Intel рассматривается с точки зрения … истории религиозных течений. Да –да, не удивляйтесь, архитектура вычислительных устройств –это одна из самых религиозных вещей. Не думайте, что все решения по Instruction Set Architecture принимаются исключительно на основе анализа данных — это совсем не так. Скорее похоже на средневековое государство — тут есть немного бизнеса, побольше политики и очень много религии. Все просто — почти любой эксперимент в этой области растягивается на годы и обходится в миллиарды долларов. Хуже всего, что в процессе дизайна можно давать лишь приблизительные оценки ключевых характеристик — частоты, производительности, энергопотребления, температурной карты. То, как все оно будет на самом деле становится понятным уже только тогда, когда чип выходит из печки. Да сейчас в этой области уже накоплен определенный опыт и наши оценки становятся несколько точнее, но и только. А 20 лет назад этих знаний было куда меньше. И пионеры, подобные Интел двигались в темноте на собственный страх и риск. Разумеется, в таких условиях на первый план выходит кто во что ВЕРИТ. Ну да — еще кто лучше говорить умеет. Лучшие архитекторы приходят из школ с углубленным изучением богословия. :)

Именно поэтому история эволюция развития архитектурной мысли так странно напоминает историю религий. Разница только в масштабе времени — то что в религии формируется веками в дизайне чипов складывается за считанные годы, а иногда даже месяцы. Взять хотя бы школу Бориса Арташесовича Бабаяна (наверно самую древнюю из известных мне архитектурных школ). Мне трудно впрямую причислить себя к его ученикам, но то, сколько мы общались и сколько идей я от него набрался, наверно позволяет так говорить. Так вот там на протяжении 60 лет было все — расколы (наподобие католической и лютеранской церкви), формирование новых течений и, разумеется идейные конфликты. Существенную роль играл фактор времени. Отколовшиеся недавно признавались «последователями», а долго упорствующие в своих «заблуждениях» прямыми «еретиками» :) Много всякого происходило за 60 лет, и я видел из этого лишь малую толику. Поэтому меня подмывает нарисовать полное «генеалогическое древо» этой школы. Когда поеду навестить Арташесовича в следующий раз –надо будет этим заняться :) Но давайте вернемся к Интел. В этой главе я расскажу о трех культах, которые имели все признаки религиозных и формировали историю компании.

Гонка Гигагерц

Это течение сформировалось в конце 20 го –начале 21 го века. В основе лежала в общем то простая мысль — при повышении тактовой частоты производительность приложений при прочих равных растет. Необязательно линейно (обмены с памятью никто не отменял), но растет. Заменяя процессор на новый пользователь получает ускорение «из коробки». Без всяких мучительных манипуляций с исходным кодом ради распараллеливания и векторизации. Тенденция эта началась еще во времена Pentium III, но полностью развилась уже в Pentium IV. Все было бы прекрасно, но вот только загвоздка в этом самом «при прочих равных». Очевидно, что чем короче такт, тем больше их потребуется для выполнения данной инструкции. Ведь x86 — это все же CISC. И Интел задумал поменять архитектуру в угоду частоте. Так родился NetBurst c его гиперпайплайном. Идея в том чтобы разбить команду на микроинструкции (такой RISC внутри CISCa) и запихивать их в огромной длины пайплайн. В Willamette oн составлял 20 стадий, а в Prescott -31, и это не считая декодирования. Суть в том, что эти микроинструкции можно выполнять на гораздо большей частоте, чем настоящие x86 команды. И это неплохо работало на прямых как палка кодах и прогретых кэшах. Но стоило поймать промах в кэш, и в пайплайне образовывался баббл (пузырек) –молотилка работала вхолостую. Еще хуже дело обстояло при неправильном предсказании ветвлений. Они не часто (BTB выдавал 94% точность предсказаний), но все же случались. В этом случае цена была астрономической — только для очистки конвейера (flush) могло потребоваться до 100 тактов. А ведь надо было еще снова его загрузить… Тем не менее Интел твердо уверовал в парадигму и в начале 2000x (если мне память не изменяет) провел публичный эксперимент, где P4 работал на частоте около 8 Гиг, и охлаждался жидким азотом. Это, конечно, вдохновило оверклокеров, и заставило серьезно задуматься всех остальных. Ибо гигагерцы оно конечно круто, но жидкий азот –это все таки жидкий азот…

 «Cамосожжение» Боба Колвелла.

Кульминация, однако, случилась еще раньше. Боб Колвелл (один из самых уважаемых мной дизайнеров) проработал в Интел всего 5 лет (1995–2000), но сумел оставить в истории компании яркий след. Он был одним из ведущих архитекторов линейки Pentium и наверно раньше всех осознал что «гонка гигагерц» — тупиковый путь. Однако, беда была в том, что тогда частота уже превратилась из чисто физического (или инженерного) понятия в предмет новой религии. И обычными средствами, набирающую ход лавину было уже не остановить…

В одно прекрасное утро Бобу Колвеллу позвонил тогдашний CEO Интел Крейг Баррет. С Крейгом я встречался лично раз 5 (больше только с нынешним CEO Пэтом Гелсингером) и он всегда производил впечатление человека исключительно здравомыслящего. Но, видимо, в том момент всеобщий экстаз захватил и его.

— Боб, дружище, нельзя ли поднять частоту еще на 20%? — «поинтересовался» Крейг.

— Это очень сложно. –Ответил Боб. –И более того, контпродуктивно. — Но тем не менее частота была поднята.

Следующий звонок был таким.

— Боб, дорогой. Нельзя ли добавить еще процентов 15?

— Это почти невозможно и бессмысленно.

— Ну постарайтесь, вы же –настоящие гении…

И последний.

— Боб, золотой мой, кровь из носа нужно еще 10%.

— I deliberately do not agree, -ответил Боб, повесил трубу и написал заявление «по собственному желанию». Позже он описал это в своей замечательной книге The Pentium Chronicles: The People, Passion, and Politics Behind Intel’s Landmark Chips.

Дальнейшее развитие.

Но Интел не был бы Интелом, если бы так легко отказывался от своих убеждений. NetBurst вышел на рынок и столкнулся там с платформой AMD Opteron, которая мало того, что имела существенно более короткий конвейер, так еще и обладала встроенным контроллером памяти. В том время как интеловские платформы все еще использовали технологию North Bridge (интересно, кто нибудь еще помнит здесь такие слова? :)). На меня самое большое впечатление произвел следующий эпизод. Мы как то попробовали запустить Linpack (ну, а что еще?:)) на процессоре Irwindale. И не смогли получить более 70% эффективности. Обычно неприхотливый HPL уперся… в memory bandwidth. Возможно, мы что то сделали не так, но шок был настолько велик, что мы очень быстро это занятие бросили.

 Реальность рынка быстро оказала свое отрезвляющее воздействие. Intel начал стремительно терять долю рынку в пользу AMD. Однако ситуация, как ни странно имела и положительные моменты для развития софтовой организации в Интел (и российской в частности). Контора осознала, что программатуру можно использовать для того чтобы прикрыть недостатки архитектуры. Нас бросили «на фронт», чтобы «распрямлять» коды (уменьшать количество ветвлений) и по возможности уменьшать зависимость от memory bandwidth. В Интеле наступил (второй?) «золотой век софта». Затем в 2005 м году, как глоток свежего воздуха, появился Merom, разработанный в Israel Design Center (IDC). Архитектура Core имела существенно более короткий конвейер, и скорее являлась развитем идей P3. Но окончательно «cмутное время» закончилось с выходом Nehalem. Серверного чипа с архитектурой Core и интегрированным контроллером памяти. Империя встала с колен и нанесла сокрушительный ответный удар.

Linpack — как важнейшее из искусств

Второй важнейший «культ», который определял развитие серверной архитектуры на протяжении десятилетий — это «сакрализация» Linpack.

To be continued…

© Habrahabr.ru