1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /134, 1996 г./ | Бонус | Поиск  

Тема номера

Про Pentium Pro!

Владимир Кулаков


© 2004, Еженедельник «Компьютерра» | http://www.computerra.ru/offline
Этого материала на сайте "Компьютерры", к сожалению, нет

В этом году Intel выводит в мир свое детище, которое многие считают серьезным признаком тотальной победы RISC-технологии. Являясь, с внешней точки зрения, очередным совместимым с предыдущими моделями членом CISC-семейства х86, процессор внутри приблизился к технологии RISC настолько, насколько этого позволили требования совместимости.

В1970 году фирма Intel выпустила первый в мире микропроцессор. Он имел 4-разрядную шину данных и 12-разрядную шину адреса. Его кристалл площадью 24 кв. мм содержал 2250транзисторов. Много воды jo с тех пор. За 25 лет технический прогресс поднялся в заоблачные высоты, и недавно фирма Intel представила процессор 6-го поколения серии х86 – Pentium Pro. Несколько сотен специалистов фирмы Intel начали разработку Pentium Pro еще задолго до выпуска (в мае 1993 года) первой модификации процессора Pentium. Приблизительно с 1990 года фирма Intel одновременно с процессором следующего поколения разрабатывает процессоры на два-три поколения вперед.

Что же представляет собой этот новый крошечный гигант технической мысли? Прежде всего, Pentium Pro совместим со всеми приложениями, созданными для процессоров семейства 80x86 и Pentium. Причем, как и следовало ожидать, программы на Pentium Pro будут выполняться в среднем быстрее, чем на Pentium. Архитектура Pentium Pro в основном оптимизирована для работы с интенсивным использованием 32-разрядных регистров. Если вы не пользуетесь полностью 32-разрядными операционными системами (Windows NT, OS/2 и т.п.) и работаете с 16-разрядными приложениями, созданными для процессоров младше 80386, то Pentium Pro практически не даст вам выигрыша в производительности.

При работе в 16-разрядном режиме нередки ситуации, когда Pentium Pro будет давать даже меньшую производительность, чем обычный Pentium (имеется в виду, что программа при этом выполняется на той же тактовой частоте). Ниже мы объясним, почему это происходит.

Хотя процессор Pentium Pro принято считать 64-разрядным (он действительно имеет 64-разрядную шину данных), по большому счету он, как и процессор Pentium, является 32-разрядным, так как все его регистры общего назначения имеют 32 разряда. Тем не менее, 64-разрядная внешняя шина данных, 64-разрядная шина данных между процессором и кэш-памятью второго уровня, а также 300-разрядная внутренняя шина процессора значительно ускоряют обмен данными и служат, увеличению производительности.

Внешне процессор представляет собой микросхему в прямоугольном корпусе размерами 6,24 х 6,75 см. Корпус имеет 387 контактов. Новый процессор несовместим по количеству и расположению выводов с процессором Pentium, поэтому для его использования нужен новый тип материнских плат.

Внутри корпуса микросхемы находятся два кристалла. На этот раз фирма Intel изменила своим традициям и поместила внутри корпуса процессора второй кристалл – кэшпамять второго уровня (L2) емкостью 256 Кбайт. Подобная ее организация не только упрощает конструкцию системы и экономит место, но и позволяет ядру процессора обмениваться данными с кэш-памятью на повышенной скорости. Кроме того, кэшпамять в Pentium Pro "неблокирующая". Это означает, что если процессору требуются данные, которых не оказалось в кэш-памяти (кэш-промах) , он посылает запрос в основную память и не ждет ответа, а продолжает выполнять команды дальше. Все операции по выборке данных из основной памяти в этом случае выполняет отдельный блок. Если в процессе выполнения последующих инструкций опять произойдет кэш-промах, процессор, не получив еще ответа памяти на первый запрос, может послать второй! В общей сложности Pentium Pro может последовательно инициировать до четырех безответных запросов к памяти.

В модификации Pentium Pro с тактовой частотой 166 МГц и некоторых последующих модификациях будет устанавливаться встроенная кэш-память емкостью 512 Кбайт. Массовое производство кристаллов на 512 Кбайт начнется в этом году. Кристаллы будут содержать в себе 31 миллион транзисторов, что ровно в два раза больше, чем у кристалла 256 Кбайт. Объем кэшпамяти первого уровня, т.е. расположенной на самом кристалле процессора, для всех модификаций составляет в сумме 16 Кбайт: 8 для команд и столько же для данных. Число транзисторов на кристалле самого процессора составляет приблизительно 5,5 миллионов. В отдаленном будущем фирма планирует увеличить также и объем кэшпамяти первого уровня – до 32 Кбайт.

Чтобы быстро обеспечить большие объемы производства, Intel решила производить первые модификации процессора (на 133 и 150 МГц) по давно налаженной 0,6-микронной технологии, с помощью которой сейчас выпускаются процессоры Pentium. Вскоре будет налажено массовое производство по 0,35-микронной технологии, и тогда более широкое распространение получат модификации Pentium Pro на 166,180, и 200 МГц, которые невозможно производить по 0,6-микронной технологии. Процессоры Pentium Pro-200 МГц по целочисленной производительности идут практически наравне с самыми быстрыми на сегодня RISC-процессорами.

Частота внешней шины у Pentium Pro составляет 60-66 МГц в зависимости от модификации. Напряжение питания для 0,6-микронных процессоров – 3,1 вольта, для 0,35-микронных – 3,3 вольта. Благодаря пониженному напряжению питания максимальная рассеиваемая мощность не будет превышать 30 Вт для Pentium Pro 150 МГц, и 35 Вт – для Pentium Pro 200 МГц. В ближайшем будущем планируется дальнейшее понижение напряжения питания до 2,9 вольта и соответствующее снижение потребляемой мощности.

Теперь попробуем объяснить, что же приводит к снижению производительности Pentium Pro в "16-разрядном режиме".

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

Абсолютно аналогичная ситуация имеет место и в современном процессоре. Дело в том, что и Pentium, и Pentium Pro являются конвейеризованными процессорами, т.е. в них обычные команды проходят специальную обработку, разбиваются на множество простых операций и выполняются за несколько тактов. Это позволяет значительно повысить тактовую частоту, но приводит к задержкам из-за необходимости перезагружать конвейер, если ход выполнения программы меняется (например, в связи с неудачно предсказанным переходом, перезагрузкой сегментного регистра и т.п. – см. ниже). Даже простые команды не могут выполниться раньше чем через 5 тактов в Pentium и через 12 тактов в Pentium Pro. Однако, если все команды простые, нет необходимости перезагрузки конвейера, и если остальные условия также благоприятны, то каждый такт Pentium будет завершать выполнением в среднем двух команд, a Pentium Pro – трех.

В Pentium Pro выполнение операций с 16-разрядными данными требует частых остановок конвейера (так уж он устроен). Так как у него конвейер почти в 2,5 раза длиннее, чем в Pentium, то и производительность Pentium Pro при работе с 16-разрядными данными оказывается в среднем ниже.

Что нового в Pentium Pro?

Опишем вкратце основные архитектурные новшества, которые позволяют повысить производительность. Прежде всего, в Pentium Pro применено динамическое исполнение программы. Этот термин обобщает три новых метода предварительной обработки команд и их исполнения: "глубокое предсказание ветвления", "анализ потока данных" и "опережающее исполнение".

Попробуем объяснить, какой смысл вкладывается во все эти умные слова. Чтобы понять последующее изложение, вам достаточно будет взглянуть на приведенные диаграммы и один раз внимательно прочесть комментарий.

Как работает обычный Pentium...

Рассмотрим сильно упрощенную схему одного из типичных участков кода программы. Взгляните на схему 1. Вот как этот участок выполняется на обычном процессоре Pentium, в котором нет динамического исполнения команд. И Pentium, и Pentium Pro являются суперскалярными процессорами, т.е. они способны считывать, декодировать и исполнять более одной машинной команды одновременно. Процессор Pentium оснащен лишь двумя независимыми исполнительными блоками и способен одновременно обрабатывать не более двух машинных команд. Итак, за первый такт выполняются две команды. Во втором такте начинается выполнение еще двух команд, но команда 3 не может выполниться сразу, так как для ее выполнения необходимы данные, которых не оказалось в кэш-памяти. Получение данных из основной памяти занимает несколько тактов. Пока идет обращение к памяти, оба вычислительных блока простаивают. По идее, в это время можно было бы выполнять другую полезную вычислительную работу, но процессор Pentium выполняет команды только строго в порядке их расположения в программе. Пока не выполнена предыдущая команда, нельзя начать выполнение следующей.

После завершения команды 3 процессор быстро выполняет еще две команды, и в результате команды 6 (вызов подпрограммы) переходит на подпрограмму, начинающуюся с команды 42. Благодаря механизму предсказания ветвлений, реализованному как в Pentium, так и в Pentium Pro, команды 42 и 43 уже заранее поступили в конвейер, поэтому их исполнение происходит без каких-либо задержек. Далее начинается одновременное выполнение команд 44 и 45. Процесс выполнения команды 45 напоминает историю с затянувшейся командой 3. К сожалению, все ОЗУ не может быть столь же быстрым, как кэш-память первого уровня...

Далее выполняется команда 46 и одновременно с ней – команда 47 (команда возврата из подпрограммы). Нам опять повезло – этот переход был также удачно предсказан, так что команда 7 начинает выполняться без проволочек. Команда 8 не может выполняться одновременно с командой 7, так как в ней используется результат действия последней – пока неизвестный. А команда 9 также не может пока выполняться, потому что это нарушит предписанный порядок команд, что в процессоре Pentium недопустимо. Команда 7 довольно сложна, и на ее выполнение уходит 2 такта (выполнение некоторых сложных команд может занимать до нескольких десятков тактов). Схема выполнения команд 8-11 нам уже знакома по командам 44-47.

Итак, Pentium выполнил 17 команд за 19 тактов, то есть в среднем он выполнял почти 1 команду за такт. Неплохой результат, если учесть, что для выполнения многих из этих команд требуется по несколько тактов.

В исполнении Pentium Pro...

Теперь посмотрим, как та же часть программы будет выполняться на Pentium Pro (схема 2). Pentium Pro, в отличие от Pentium, проверяет зависимость команды от результата предыдущих команд не на один, а на много шагов вперед. Этот механизм называется "анализом потока данных". Например, в нашем случае для выполнения команды 3 требуется результат команды 1, и поэтому команда 3 не может быть выполнена, пока не будет завершена команда 1. Это может быть, например, такая последовательность команд:

команда 1: R1 = А + 2; команда 2: R2 = В + 3; команда 3: R3 = R1 + 5.

Аналогично команда 5 зависит от результата команды 4, команда 44 от результата 43 и т.д. На нашем рисунке все такие зависимости показаны стрелками слева. Выполняя предварительный анализ данных, Pentium Pro обычно просматривает программу на 20-30 шагов вперед относительно текущей команды.

Процессор Pentium Pro, так же как и Pentium, является суперскалярным. Однако он может выполнять уже не две, а в среднем три инструкции одновременно. Пиковая производительность "опережающего" выполнения (см. ниже) может достигать 5 инструкций в одном такте: две целочисленных, одна с плавающей точкой, одна инструкция передачи управления (перехода) и еще одна -выборки из памяти или записи в память. Кроме того, что очень важно, он может выполнять команды в порядке, отличном от их порядка следования в программе. Так как команда 3 не может быть выполнена в первом такте, он начинает выполнение команды 4. Это вторая составляющая динамического исполнения – "опережающее" выполнение команд. Результат опережающего выполнения записывается в специальные регистры временного хранения (регистры-псевдонимы).

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

Несмотря на это, Pentium Pro очертя голову бросается в авантюру опережающего исполнения – в надежде, что все ветвления будут предсказаны верно и "нестандартных" команд встречено не будет. В большинстве случаев эта авантюра приносит свои плоды: в среднем удается правильно предсказать более 90% переходов, а другие "нестандартные" команды встречаются сравнительно редко (если только программа написана для 32-разрядных процессоров).

 

 

 

Intel так и называет этот метод выполнения программы – "спекулятивный" или "авантюрный" (Speculative, Opportunistic). В данном случае наиболее подходящий перевод для этого термина – "опережающее" исполнение.

Для того чтобы быть уверенным, что опережающие вычисления выполнены правильно, процессор выполняет еще так называемую операцию "подтверждения" (retirement), в процессе которой результаты предварительно выполненных команд удаляются из регистров-псевдонимов и поступают в реальные регистры и ячейки памяти. Применение регистров-псевдонимов позволяет избежать путаницы. Рассмотрим для примера случай, когда две последовательных команды программы, выполняемые параллельно, пытаются одновременно записать данные в один и тот же регистр процессора. Ясно, что сначала это должна сделать более ранняя команда, а потом более поздняя. Иначе процессор будет просто неверно вычислять. Команда считается полностью выполненной, только если она прошла подтверждение. Подтверждением в процессоре занимается отдельный блок ("блок подтверждения"), который может подтверждать одновременно до трех команд. Пока три команды выполняются в исполнительных блоках, еще три проходят подтверждение, причем подтверждение команды может происходить "одновременно" с ее выполнением, т.е. без затраты дополнительного такта.

Итак, в первом такте Pentium Pro выполнил три команды (1,2 и 4), и две из них сразу прошли подтверждение. Подтвердить выполнение команды 4 сейчас пока нельзя, так как порядок подтверждения должен соответствовать порядку команд в программе, а команда 3 еще не выполнена.

Во втором такте процессор начинает выполнение еще трех команд, причем две из них сразу завершает. В команде 3 происходит обращение к основной памяти, и процессор, послав ей запрос, освобождает исполнительный блок для выполнения других команд. Иными словами, команда 3 продолжает "выполняться" без участия исполнительного блока! Заметьте, что уже началось предварительное выполнение команд подпрограммы, адрес которой был предсказан заранее. Pentium Pro выполняет предварительное выполнение с учетом всех наиболее вероятных ветвлений.

В такте 3 ситуация аналогична: начинается выполнение трех команд, причем две из них завершаются в этом же такте. Процессор постоянно "помнит", что команда 44 зависит от результата команды 43. Выполнение команды 44 временно откладывается.

Команда 45 требует обращения к памяти. Внимательный читатель, вероятно, заметил, что в данный момент все еще идет обращение к памяти, запрошенное командой 3. Одновременное выполнение двух таких обращений (команды 3 и команды 45) может вызвать конфликт. Однако разработчики процессора предусмотрели этот момент. Кэшпамять в Pentium Pro хорошо конвейеризована. Иными словами, она одновременно может обслуживать до четырех независимых обращений на чтение и(или) на запись.

В такте 4 начинается выполнение еще трех команд. Две из них завершаются, а сложная команда 7 продолжает выполняться еще один такт. С выполнением команды 7 процессор выходит на второй уровень предсказанного ветвления. Сейчас он выполняет уже команды, следующие после возврата из подпрограммы, хотя сам вход в подпрограмму реально еще не был выполнен (т.е. подтвержден). Этот механизм фирма Intel назвала "Multiple Branch Prediction", что можно перевести как "глубокое предсказание ветвлений". Это третья составляющая технологии динамического исполнения. Анализ потока данных (см. описание первого такта) выполняется с учетом всех предсказанных переходов.

Как известно, процессор Pentium оснащен специальным буфером адресов переходов (Branch Target Buffer) и также способен предсказывать ветвления. Однако у Pentium Pro этот буфер в два раза более широкий и в два раза более глубокий, чем у Pentium. Поэтому Pentium Pro способен глубже и точнее анализировать последовательные ветвления. Для предсказания ветвлений используется как статический алгоритм, так и алгоритм, основанный на анализе результатов ранее выполненных ветвлений. Это так называемый алгоритм "Йе" (Yeh).

Ни во 2-м, ни в 3-м, ни в 4-м тактах не было подтверждено ни одной команды. Процессор ждал завершения команды 3. Ничего не поделаешь -никто не умеет предсказывать будущее, а процессор – тем более...

 

 

В 5-м такте оканчивается выполнение команды 7, полностью выполняется команда 10, и начинается выполнение команды 9, требующей длительного обращения к памяти. Тем временем завершается и подтверждается команда 3, и одновременно с этим подтверждаются еще две команды – 4 и 5. В такте 6 выполняются еще 3 команды, и одновременно подтверждаются 3 команды из ранее выполненных. В тактах 7, 8 и 9 – аналогично.

Вот вам пожалуйста – те же 17 команд Pentium Pro выполнил за 9 тактов, т.е. почти в два раза быстрее, чем Pentium. Кроме того, уже готовые результаты еще десяти команд хранятся в буфере предварительного выполнения (регистрах-псевдонимах). Если они будут подтверждены, то средняя производительность окажется еще выше.

Приведенная выше схема сильно упрощена, и полученная производительность несколько завышена. На самом деле, большинство команд в Pentium Pro предварительно разбиваются на так называемые микрокоманды, подобные командам для RISC-процессоров, каждая из которых проходит несколько стадий обработки в различных блоках процессора (суперконвейеризация). Главное преимущество данной схемы – ее простота, а также возможность с помощью нее показать все основные достоинства архитектуры Pentium Pro.

Компьютер на 9000 процессорах!

Другая область архитектурных модернизаций в Pentium Pro – улучшенные встроенные средства поддержки многопроцессорных систем. В частности, эти средства позволяют напрямую (без дополнительных микросхем) подсоединять к шине до четырех процессоров Pentium Pro без заметного ущерба для производительности каждого из них. Фирмой разработан также специальный механизм отложенных запросов к памяти, который облегчает подсоединение к общей шине до четырехпроцессорных "узлов" (блоков из 4 процессоров). Этот механизм способствует уменьшению загруженности шины и ускорению операций обмена данными. Также этому способствует и индивидуальная кэшпамять каждого процессора. Все эти архитектурные новинки позволяют значительно облегчить создание легко масштабируемых систем. Для таких систем и такого способа модернизации фирма Intel даже придумала специальный термин – "инновационная спираль".

Мощность подобных систем можно будет наращивать практически безгранично, просто подключая к ним новые блоки с процессорами Р6 и поднимаясь по спирали все выше и выше.

Сейчас корпорация Intel no заказу министерства энергетики США занимается разработкой суперкомпьютера на 9000 процессорах Pentium Pro с общей пиковой производительностью в 1,8 триллиона операций в секунду.

А как же Pentium?

В скором времени Intel планирует выпуск процессора OverDrive для модернизации систем, построенных на процессоре Pentium. Но этому могут быть подвергнуты не все системы на Pentium, а только заранее на нее рассчитанные. Иными словами, модернизируемая системная плата Pentium должна удовлетворять особым спецификациям фирмы Intel, аналогично тому, как это в свое время было с наращиванием 486-х плат до Pentium. Intel не планирует выпуск варианта микросхемы Pentium Pro OverDrive для установки в обычного процессора Pentium в любую системную плату Pentium. Фирма считает, что в настоящий момент это будет противоречить требованиям рынка и по срокам выпуска, и по стоимости, и по производительности модернизированной таким образом системы.

Что касается систем Pentium, удовлетворяющих спецификациям на модернизацию, то фирма обещает выпуск Pentium Pro OverDrive для модернизации систем следующих классов:

Pentium 133 до Pentium Pro 200;

Pentium 120 до Pentium Pro 180;

Pentium 100 до Pentium Pro 166;

Pentium 90 до Pentium Pro 150;

Pentium 75 до Pentium Pro 125.

 


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /134, 1996 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru