Лаптев Дмитрий
Шрифт:
Архитектурный ансамбль
Но давайте разложим все по полочкам. И ответим в первую очередь на вопрос – почему наблюдается такое расхождение в результатах работы почти одинаковых внешне процессоров? Основная причина состоит в том, что пути нескольких команд разработчиков за последние годы разошлись, соответственно, и внутренняя схема процессора (на сленге ее называют «ядром» или «архитектурой» процессора) получила разное развитие.
Поэтому сначала следует разобраться, какие два основных варианта архитектуры предлагаются нашему вниманию. Первый принцип можно назвать традиционным, он раньше использовался во всех процессорах для персональных компьютеров и работает в большинстве современных (Athlon 64, Sempron, Pentium M, а также PowerPC в компьютерах Apple Mac). Исключение из этого списка составляет Pentium 4 и имеющий такую же внутреннюю структуру процессор Celeron. Основная идея традиционного подхода заключается в том, чтобы обеспечить максимальную скорость выполнения каждой отдельно взятой команды, поэтому исполнительные блоки (ALU, FPU и т. д.) оптимизируются для максимально быстрой переработки данных. Не менее серьезной при таком подходе оказывается задача обеспечить ритмичное поступление данных из памяти, чтобы процессор не простаивал в их ожидании.
Такой подход приводит к высокой технической сложности самих блоков, в результате схема процессора получается разветвленной и труднее поддается наращиванию тактовой частоты. Зато каждая новая «ступенька» в росте частоты на 100–200 МГц сопровождается заметным увеличением реальной производительности процессора во всем спектре программ. Также традиционная архитектура славится универсальностью, так как она позволяет с предсказуемой эффективностью исполнять самые разные программы с разветвленными алгоритмами. В частности, это свойство хорошо проявляется в компьютерных играх, алгоритмы которых отличаются большим разнообразием.
Попытку отойти от канонов предприняла компания Intel в процессорах Pentium 4. Подход, реализованный в архитектуре, получившей имя собственное Netburst, предполагает, что поступающие команды выстраиваются в длинную очередь, которую еще называют конвейером, и процессор исполняет команды как бы заранее, не дожидаясь, пока необходимость в той или иной операции возникнет по ходу программы. Таким образом разработчики стараются добиться максимальной загрузки всех блоков процессора. Для эффективной работы такому процессору требуется высокая тактовая частота, иначе конвейер будет продвигаться медленно, а также поддержка фирменных технологий, вроде широко разрекламированной «виртуальной многопоточности» Hyper-Threading, и в обязательном порядке – оптимизация каждой программы на этапе разработки таким образом, чтобы все блоки такого процессора равномерно загружались.
В случае если программа не использует преимущества Netburst, то производительность процессора резко падает. Однако даже с учетом оптимизации производительность такого процессора оказалась на уровне конкурентов с «традиционной» архитектурой, имеющих в 1,5–2 раза меньшую частоту. Например, используемый в ноутбуках процессор Pentium M на частоте 1,7 ГГц уверенно лидирует в тестах при сравнении с Pentium 4 2,4 ГГц, а по ряду позиций тягается даже с Pentium 4 3,0 ГГц! Еще более показателен пример Athlon 64. Например, модель 3200+ на своих скромных 2 ГГц в особо тяжелых игровых тестах (DOOM III) дает фору даже монструозному Pentium 4 Extreme Edition, работающему на 3,4 ГГц! Кроме того, даже в оптимизированных программах с разветвленным алгоритмом, велика вероятность, что результаты команд, исполненных заранее, придется отбросить, потому что ход алгоритма оказался не прямолинейным. В таком случае по конвейеру протягивается «пузырь», поскольку загрузка команд допускается только в хвост очереди, и процессору несколько десятков тактов приходится работать вхолостую. Кроме того, для достижения высоких частот на процессорное ядро приходится подавать сравнительно высокое напряжение, поэтому такие процессоры потребляют больше энергии, сильнее греются и нуждаются в интенсивном охлаждении.
Эти отрицательные свойства, безусловно, были известны разработчикам. Расчет же состоял исключительно в том, что такие процессоры смогут развиваться в направлении высоких тактовых частот значительно быстрее процессоров, построенных на традиционной архитектуре. Поначалу все так и происходило. Если верить первоначальным планам Intel, то сейчас мы уже должны были бы пользоваться процессорами с частотой 10 ГГц. В это трудно поверить, но именно таковы были прогнозы на 2005 год. Но в 2003–2004 годах наступил своеобразный «частотный кризис». Процессоры Pentium 4 достигли частот в 3,4 ГГц, и дальнейший разгон прекратился. С большими усилиями удалось выпустить версии 3,6 и 3,8 ГГц, которые не получили массового распространения из-за высоких цен и невероятно высокого тепловыделения. Бывали случаи, когда такие процессоры не могли работать на полную мощность, даже при абсолютно исправном охлаждении, из-за срабатывания защиты от перегрева. А выпуск процессора с частотой 4 ГГц и вовсе был отменен. На данный момент уже можно сказать, что архитектура Netburst признана в целом неперспективной самими разработчиками, поскольку будущее поколение процессоров, заявленное к выпуску в 2006–2007 годах, будет основано на традиционной архитектуре, а именно – на основе Pentium III, снабженного поддержкой новых наборов команд, появившихся в Pentium 4 и, наверняка, рядом новых усовершенствований.
Между тем на специализированных задачах, для которых характерна обработка данных, поступающих непрерывным потоком, особенно когда требуется прокачать через процессор гигабайты данных, как это бывает во время видеомонтажа или микширования многоканального звука, архитектура Netburst дает ощутимый выигрыш и, вполне возможно, еще получит применение в специализированных системах для подобного рода работ.
Разумеется, процессоры с традиционной архитектурой за прошедшее время тоже прошли нелегкий путь по дороге технических усовершенствований. Как уже говорилось, главным ограничителем, сдерживающим рост производительности при непосредственном исполнении команд, являются неизбежные задержки, возникающие всякий раз, когда появляется необходимость обращения за недостающими данными во внешнюю память. Даже оперативная память работает в сто раз медленнее процессора, а уж время, требуемое для реакции винчестера на выставленный запрос, вероятно, с точки зрения процессора, кажется вечностью! И какой смысл наращивать частоту процессора, если ему все равно придется спотыкаться на каждом шагу по вине своих неторопливых «слуг»?
Поэтому именно вокруг борьбы с этими диспропорциями и сосредоточены усилия разработчиков, и, надо сказать, результаты впечатляют! Современные «традиционные» процессоры также умеют просматривать вперед алгоритм программы, что позволяет избежать простоя по вине команд обращения к данным. Так, например, процессор может заранее начать закачку данных с жесткого диска в оперативную память, и когда они потребуются по ходу программы, то уже не придется ждать их загрузки. А чтобы процессору не приходилось обращаться за необходимыми данными вторично в оперативную память, особое внимание уделяется кэш-памяти. При этом используется двухуровневая модель, когда наиболее востребованные данные помещаются на первом уровне, имеющем максимальную производительность, а менее востребованные хранятся на втором уровне.
Но, совершенно очевидно, каков бы ни был объем кэш-памяти, рассчитывать, что это сколько-нибудь существенно отразится на необходимости обращаться за данными в оперативную память, не приходится. Объем внешней памяти, занимаемый программами, измеряется сотнями мегабайт, и к тому же существует масса программ, не предполагающих «повторное» обращение к одним и тем же данным, поэтому их просто бессмысленно помещать в кэш-память. Причем в последний класс попадают задачи, связанные с наиболее востребованной по нынешним временам переработкой мультимедийных данных – оцифрованного видео, аудио, компьютерной объемной графики в играх и программах 3D-моделирования.