среда, 26 августа 2020 г.

История Intel в процессорах. Часть вторая - Intel Pentium Procesor

intel inside pentium processor logo
   Во второй части статьи мы перенесемся в середину 90-х годов, и я расскажу про процессоры семейства Intel Pentium первого поколения.
   Почти сразу после выхода i486-го процессора, началась работа над процессором следующего, пятого по счету, поколения – i586. В июне 1989 года, инженер Intel Винод Дэм сделал первые наброски будущего процессора, известного под кодовым именем P5. Тогда никто не подозревал, что именно этот процессор начнет революцию в мире персональных компьютеров и его имя на долгие годы станет синонимом слова «процессор».


   Для тестирования такой сложной схемы была придумана специальная технология, позволявшая имитировать функционирование еще не существовавшего процессора. В конце 1991 года макет процессора был завершен и на нем смогли запустить программное обеспечение. После этого начался этап оптимизации ядра для повышения эффективности работы и оптимизации прохождения сигнала. В феврале 1992 года была выпущена опытная партия процессоров, которая подверглась всестороннему тестированию, после чего в апреле 1992 года было принято решение о начале производства на базе Орегонской фабрики №5, наиболее совершенной на тот момент.
   В октябре 1992 года фирмой Intel было сделано заявление о том, что новый процессор пятого поколения, будет назван вопреки сложившейся системе наименования 80х86. Это связано с тем, что многие фирмы освоили выпуск клонов процессоров 386 и 486. Intel хотела зарегистрировать название нового процессора i586 в качестве торговой марки, однако получила отказ в связи с тем, что названия из цифр не защищаются авторским правом и законом о товарных знаках. И тогда Intel объявляет, что ее новый процессор будет называться Pentium  (от «pent» — пять), что служило указателем на пятое поколение процессора. Так как теперь название не было числом, на него были получены авторские права, и этим самым был поставлен крест на его использовании другими производителями.
   Вместе с этим, началась одна из самый масштабных в истории рекламных компаний, продлившаяся более 13 лет, и сделавшая марку “Pentium” одной из самых узнаваемых в мире! Да, я имею ввиду известную всем фразу «intel inside» являющейся частью логотипа нового процессора. Теперь вместе с процессором поставлялась специальная наклейка (которая на самом деле была металлической пластинкой!) с логотипом, ставшая своеобразным «знаком качества».
Конвейер процессора Intel Pentium   22 марта 1993 года был объявлен первый процессор пятого поколения, который назывался теперь Pentium. Наиболее существенным отличием от существовавших процессоров четвертого поколения была суперскалярная архитектура, первым представителем которой и он и являлся. За этим термином скрывается наличие второго исполнительного конвейера в ядре процессора, в отличие от старой одноконвейерной, скалярной архитектуры. Благодаря этому процессор может выполнять 2 команды за такт (в идеальных условиях). Конвейеры процессора Pentium назывались u-конвейер и v-конвейер, и не были равнозначны. Основным был u-конвейер, он мог выполнять все инструкции, в отличие от v-конвейера, который выполнял лишь простые операции над целыми числами и был вспомогательным. Кроме этого он не мог работать, если его действия зависели от результата основного конвейера. Есть определенный перечень условий, которые разрешают параллельную работу. Если они не удовлетворяются, то v-конвейер простаивает и на него не поступает новых команд. Важным было то, что u-конвейер содержал конвейерный сопроцессор – инструкции FPU направляются на основной u-конвейер, и после стадии D2 сворачивают на ступени конвейера FPU. Причем основной конвейер продолжает работать дальше, во время выполнения инструкций конвейером сопроцессора (команды FPU могут выполняться десятки тактов). Конвейеризация FPU обеспечила Intel недостижимое быстродействие арифметического сопроцессора на долгие годы.
   Также в процессоре Pentium, впервые было применено предсказание переходов. Проблема конвейерной обработки состоит в том, что при выполнении команд, случаются ситуации, когда для выполнения следующей команды, необходимо знать результат выполнения предыдущей.  Некоторые команды, например условного перехода, могут нарушить порядок выполнения инструкций, и сказать процессору перейти не на следующую по списку команду, а на какую-то другую. До появления конвейерной архитектуры этой проблемы не было – пока первая команда не выполнится, вторая ждет. А когда приходит время второй, то мы уже имеем результат первой. В случае наличия конвейера, возможна ситуация что первая команда находится, допустим, на второй стадии исполнительного конвейера, в это время приходит очередь зависимой от нее команды. В процессорах предыдущего поколения, ситуация решалась просто, команда приостанавливалась и ждала пока первая пройдет все ступени конвейера и не будет известен результат. Но таким образом теряются драгоценные такты процессора, когда на исполнительный конвейер ничего не поступает, и его стадии работают вхолостую. В любой программе такие ситуации встречаются повсеместно.  Процессор Pentium используя таблицу буфера адреса ветвления BTB (Branch Target Buffer), запоминает статистику последних 256 переходов, и на ее основании пытается угадать дальнейшее ветвление программы. Если предсказание было сделано верно (а у первых процессоров Pentium процент «угадываний» составлял около 80%), то удавалось избегать простоя конвейера, таким образом экономя такты и повышая производительность.
   Организация кэш-память также претерпела изменения – впервые был использован раздельный кэш, по 8 Кб для данных и команд. Раздельное кэширование команд и данных применяется и по сегодняшний день. Также была оставлена возможность использовать кэш второго уровня на материнской плате, который мог иметь размер до 1 Мб (чаще 256 или 512 Кб). А для увеличения скорости обмена данными между процессором и памятью шина памяти была расширена до 64 бит. Само ядро осталось 32х битным, но благодаря более широкой шине в два раза выросла пропускная способность памяти. Наиболее заметным это было в профессиональных приложениях, которые теперь могли загружать данные повышенной точности за один такт. Претерпела изменения и организация оперативной памяти на материнской плате. Так как распространенные в то время модули SIMM были 32 битными, то для корректной работы их необходимо было устанавливать парами (совсем как двухканальный режим памяти который станет популярным через 10 лет). Ну и напоследок, появилась возможность создавать двухпроцессорные системы. В первом поколении лишь функционально-избыточные (когда второй процессор лишь проверяет первый), а со второго поколения  - с симметричной архитектурой.
Intel Pentium 60 Socket 4   Первое поколение процессоров Pentium увидело свет 22 марта 1993 года. В этот день были представлены модели с частотами 60 и 66 МГц, работавшие на частоте системной шины (без коэффициента умножения). Процессоры устанавливались в новый Socket 4, имевший 237 контактов и огромные размеры 55х55 мм. Само ядро было упаковано в керамический корпус, прикрытый сверху теплораспределительной пластиной (хотя встречались модели и без нее). Ядро состояло из 3,1 млн. транзисторов, и изготавливалось с использованием 0,8 мкм. техпроцесса. Напряжение питания составляло огромные 5 вольт, а потребляемая мощность 16 ватт. Это означало необходимость использования активного охлаждения, которое тогда еще не было обязательным.
   Вместе с этим, столь сложная микросхема, выпускаемая с применением столь «грубого» техпроцесса оказалась слишком дорогой в производстве, процент выхода годных кристаллов был небольшой, поэтому цена на этот процессор была слишком высока. Кроме этого приходилось выдерживать конкуренцию со стороны 486-х процессоров, которые были дешевле, и не намного медленнее. Дело в том, что для полного раскрытия архитектуры Pentium необходимо было оптимизированное программное обеспечение, умеющее полноценно задействовать оба конвейера, которого попросту не было на тот момент (вспомним, что операционной системой была MS-DOS с оболочкой Windows 3.11).
   Вдобавок к высокой цене и чрезмерному тепловыделению, репутацию Pentium подпортила найденная ошибка в модуле FPU, которая в некоторых случаях приводила к неверным результатам при делении. Она стала известна под названием «Pentium FDIV баг», и ее можно обнаружить даже в калькуляторе Windows 95.
Intel Pentium 133   Второе поколение процессоров Pentium, известных под кодовым именем P54C было объявлено  спустя год после оригинального Pentium, 7 марта 1994 года. Его можно считать «работой над ошибками» оригинального P5. Напряжение питания было снижено до 3,3 В, что снизило тепловыделение почти в 2 раза! Также был изменен разъем, теперь это был Socket 5 или Socket 7 содержавший 296 выводов. Главным отличием от Socket 4, кроме существенно меньших размеров, было расположение выводов в шахматном порядке, для более плотного размещения. Сам процессор был упакован в керамический корпус (иногда с теплораспределителем, как на процессорах первого поколения). Вследствие оптимизации ядра количество транзисторов составило 3,3 млн. Но самым главным было уменьшение техпроцесса до 0,6 мкм.
   Изначально были выпущены модели с частотами 90 и 100 МГц, работавшие с частотой шины 60 и 66 МГц. Позже, 10 октября 1994 года была объявлена модель с частотой 75 МГц, и частотой шины 50 МГц.
   В 1995м году, процессоры Pentium были переведены на новое ядро P54CS, которое отличалось от обычного P54C только  0,35 мкм техпроцессом, благодаря которому удалось уменьшить площадь ядра и снизить себестоимость. Первые процессоры с тактовой частотой 120 МГц, были анонсированы 27 марта 1995 года. Позже были выпущены модели с частотами 133, 150, 166 и 200 МГц. Старшие модели требовали установку в Socket 7, отличающийся от старого Socket 5 только наличием раздельного питания. Пониженное 2,8 В для ядра и 3,3 В для шины ввода-вывода.

Pentium PRO

Pentium PRO Logo   Первый процессор шестого поколения Pentium PRO был выпущен 1 ноября 1995 года. Это было абсолютно новое ядро, не являющееся модернизацией оригинального Pentium, которое опередило технические возможности своего времени. Среди ключевых особенностей архитектуры шестого поколения нужно отметить RISC-подобное ядро, технологию динамического исполнения, а также архитектуру двойной независимой шины.
   Итак, какие задачи стояли перед разработчиками, не побоюсь этого слова, революционного процессора? Уже существовали процессоры пятого поколения, обладающие суперскалярной архитектурой, и было очевидно, что для дальнейшего увеличения эффективности нужно обеспечить как можно большую наполняемость конвейеров командами и данными. Кроме того производительность P5 ограничивал тот факт, что второй конвейер был вспомогательным и не мог работать на полную мощность наравне с основным.
Pentium PRO 200   В своем новом ядре, известным под кодовым названием P6, инженеры Intel применили три равнозначных конвейера, длиной 12 ступеней! Но их нужно было «кормить» командами, и желательно с минимальными простоями. Для решения этой задачи, впервые были использованы элементы RISC-архитектуры. Система команд х86 принадлежит к CISC (Complex Instruction Set Computing, вычисления с расширенным набором команд) архитектуре, характерными особенностями которой являются команды переменной длины и ограниченное количество узкоспециализированных регистров. Противоположностью была архитектура RISC (Reduced Instruction Set Computing, вычисления с сокращённым набором команд), которая имела сокращенный набор простых команд фиксированной длины и расширенный набор регистров общего назначения. В начале 90х годов стало очевидно, что RISC архитектура позволяет получить большую производительность благодаря наличию простых команд фиксированной длины, которые было проще исполнять и проще планировать загрузку конвейеров. Поэтому при разработке новой архитектуры, был использован подход, при котором сложные x86-CISC команды разделяются на RISC-подобные простые микрокоманды. Кстати, название новый процессор получил именно благодаря своему RISC-ядру. Приставка "PRO" обозначает "Precision RISC Organization", (а не "Professional").
   В ядре Pentium PRO имеются три параллельных дешифратора, которые преобразуют команды х86 в микрооперации. Два из них «простые», обрабатывают команды х86 которые преобразуются в одну микрооперацию, а третий «сложный» - работает с командами, которые соответствуют от одной до четырех микроопераций. Но иногда встречаются команды, которые невозможно декодировать даже сложным дешифратором. В таком случае они передаются в планировщик последовательности микрокоманд. В идеальных условиях дешифраторы способны генерировать до шести микроопераций за такт. В реальности-же за один такт выдаются три микрооперации, что соответствует немного меньше чем трем командам х86. Именно поэтому в ядре P6 присутствуют три конвейера.
   В рамках архитектуры х86 предусмотрено всего 8 регистров общего назначения. Поэтому велика вероятность того, что две команды захотят использовать один и тот-же регистр, что сделает невозможным их параллельное выполнение. В действительности ядро Pentium PRO содержит сорок регистров, и для каждой команды процессор эмулирует запрошенный архитектурный регистр. Данная операция названа – отображение регистров. Благодаря этому можно убрать задержки связанные с обращением различных команд к одному регистру.
   После отображения регистров, микрокоманды попадают в специальный буфер – станцию-резервуар. Он, как обеспечивает работу исполнительных ступеней конвейеров, если дешифраторы не могут обеспечить среднего темпа выдачи микроопераций из-за обрабатываемой сложной команды, так и позволяет продолжить работу дешифраторов, в случае если конвейер не может взять новую команду на исполнение.
   Благодаря наличию станции-резервуара появилась возможность реализации одного из самых значимых нововведений – механизма позволяющего процессору выполнять программы, изменяя последовательность команд. Теперь процессор освобожден от обязанности выполнять команды цепочкой, которая обусловлена ходом программы. Вместо этого он может рассмотреть несколько ожидающих своей очереди микроопераций, и решить какая из них лучше всего подходит для исполнения в текущий момент, основываясь на таких факторах как доступность необходимых данных, отсутствие взаимозависимостей и занятость исполнительных блоков. Но, несмотря на то, что порядок выполнения команд больше не определяется кодом программы, сохранение результатов работы будет производиться именно в том порядке, в каком ожидает программа.
   Для снижения времени простоя конвейеров, в новом процессоре была применена улучшенная схема предсказания переходов. Существуют две разновидности переходов – безусловные (когда управление передается по указанному адресу), и условные (когда ход программы меняется в зависимости от выполнения условия). Безусловные переходы не представляют проблем – процессор просто начинает выполнять команды с нового места. А вот условные переходы, которых может быть до 20% в средней программе, гораздо сложнее, потому-что неизвестно будет выполнен переход, или нет, до тех пор, пока команда не пройдет конвейер. При правильном предсказании процессор избегает потерь производительности, связанной с очисткой конвейера и повторного выполнения уже правильной ветки команд. Такие потери могут достигать пятнадцати тактов.
   В ядре P6 существуют два метода предсказания переходов – статический и динамический. Статический просто указывает что делать с определенным типом перехода, выполнять или нет. Это метод используется при накоплении статистики по переходам, когда еще нет информации для анализа. Более эффективным является динамический алгоритм предсказания ветвлений, который собирает статистику команд перехода, благодаря которой предсказания могут делаться более точно. В результате эффективность предсказаний переходов была доведена до 93%.
   В связи с введением в ядро технологии динамического исполнения команд, в совокупности с тремя исполнительными конвейерами, необходимо было обеспечить высокую скорость обмена данными с оперативной памятью. Для этого впервые была применена архитектура двойной независимой шины. Одна из этих шин (BSB – Back Side Bus), шириной 64 бита, используется исключительно для связи ядра с кэш-памятью, а вторая шина (FSB – Front Side Bus) является «внешней», и обеспечивает связь с набором логики на системной плате. Это позволило использовать полноскоростную кэш-память второго уровня, находящуюся в одной упаковке с ядром процессора, и соединяющуюся с ним выделенной шиной. Таким образом, помимо значительного ускорения кэша, удалось разгрузить системную шину, которая теперь не обслуживает запросы в кэш.
   В качестве системной шины FSB, была использована новая универсальная шина GTL+ (Gunning Transceiver Logic). Ее преимущества были обусловлены как электрическими параметрами, такими как улучшенная помехозащищенность (что крайне важно при высоких частотах передачи данных) или независимость от напряжения питания ядра (важно при переходе на новый техпроцесс), так и архитектурными, обеспечивающими одновременный доступ к шине нескольких устройств, позволяющий легко организовать многопроцессорные системы.
   Итак, 1 ноября 1995 года был представлен новый процессор шестого поколения, который был полностью совместим с привычной инфраструктурой х86. Но его трудно было назвать просто “очередным” - теперь процессор кроме того что использовал «внутри» свой набор команд, напоминающий RISC, но еще и мог выполнять их не в порядке предписанном программой, а так как ему нравится. Вместо привычной системной шины, у него было две шины, одна из которых связывала его с расположенной в одной упаковке с ядром, кэш-памятью второго уровня.
Под крышкой Pentium PRO
Под крышкой Pentium PRO

   Но, несмотря на все свои преимущества, данному процессору не суждено было стать лидером продаж. Это было связано с очень высокой себестоимостью, обусловленной тем, что теперь помимо огромного ядра содержащего 5,5 млн. транзисторов в одной упаковке находилась микросхема высокоскоростной кэш-памяти собственного производства. Также не добавила новому процессору популярности медленная работа с 16 битным кодом. Дело в том, что в Pentium PRO были определенные ограничения при чтении и записи 16 разрядных данных в регистры. Это было не ошибкой, а сознательным решением, нацеленным на полный переход к 32 разрядным приложениям. Но даже в Windows 98, часть кода ядра была 16 разрядной, и полностью 32 разрядной была только серверная ОС - Windows NT, в которой Pentium PRO и демонстрировал феноменальную производительность. Это определило его судьбу, как процессора для высокопроизводительных серверов и рабочих станций.
   Процессор Pentium PRO выпускался в керамическом корпусе, который помимо самого ядра процессора включал микросхему кэш-памяти второго уровня объемом 256, 512 или 1024 Кб. Устанавливался в Socket 8, состоящий из 387 контактов, только часть из которых была расположена в шахматном порядке.
   Были выпущены модели с частотами 150, 166, 180 и 200 МГц. Также были инженерные образцы с частотой 133 МГц, но анонсированы они так и не были. Процессор содержал 256 или 512 Кб полноскоростной кэш-памяти второго уровня. 18 августа 1997 года была выпущена модификация 200 МГц с 1024 Кб кэша. Кэш первого уровня – 16 Кб, по 8 Кб на данные и инструкции. Изначально производился с применением 0,6 мкм. техпроцесса, а в начале 1996 года производство Pentium PRO было переведено на 0,35 мкм. техпроцесс.

Pentium MMX

Pentium MMX Logo   Продолжением линейки Pentium, был процессор Pentium w/MMX technology, который чаще называли просто Pentium MMX (кодовое имя P55С). Это была довольно серьезная переработка ядра, которая, тем не менее, сохранила ключевые черты процессоров Pentium пятого поколения.
   Главным нововведением было добавление 57 новых команд MMX (Multi Media eXtention). Набор команд SIMD (Single Instruction - Multiple Data - одна команда - множественные данные) существенно повышает производительность при выполнении различных команд предназначенных для ускорения видео и звука – от 10 до 60%!
   Для добавления MMX в ядро процессора, последнее подверглось значительным изменениям. Во первых, вычислительный конвейер был увеличен на одну стадию. Это позволило также поднять частотный потенциал. Выше я писал, что длинный конвейер обладает и определенными недостатками, и вообще при прочих равных удлинение конвейера ведет к падению производительности. Поэтому в процессоре Pentium MMX, был вдвое увеличен размер кэша первого уровня, до 32 Кб (по 16 Кб на данные и инструкции). Также был применен более совершенный метод предсказания ветвлений, с двухуровневым буфером BTB, аналогичный тому, что применяется в Pentium PRO. Все это привело к тому, что даже с использованием обычного программного обеспечения, не использующего MMX, производительность нового процессора оказалась существенно выше, чем у классического Pentium.
Pentium w/MMX technology CPU   Важным является тот факт, что Pentium MMX был первой попыткой увеличить производительность не только с помощью архитектурных улучшений, но и с привлечением программной оптимизации (сам по себе блок MMX только несет лишние транзисторы в ядре, и без использования со стороны софта практической ценности не имеет). Это был смелый шаг, не дающий сиюминутной выгоды (совместимых программ на момент выхода практически не было, соответственно оценить преимущество новой технологии не представлялось возможным), но оказавшийся целиком оправданным, ввиду ограниченного набора команд х86 кардинально не менявшегося со времен 386 процессора, и невозможности радикального увеличения скорости выполнения команд в рамках существующей архитектуры.
   Выпущены процессоры Pentium MMX были 8 января 1997 года с частотами 200 и 166 МГц, а 2 июня того-же года, была выпущена модель с частотой 233 МГц, ставшая последней в линейке процессоров пятого поколения. Серьезные вмешательства в архитектуру ядра привели к значительному увеличения количества транзисторов, которых теперь было 4,5 млн, изготовленных с применением техпроцесса 0,35 мкм. Процессор выпускался в пластиковом  корпусе с 296 контактами (младшие модели параллельно с пластиковой упаковкой использовали керамическую, привычную по «обычным» процессорам Pentium), и устанавливался исключительно в разъем Socket 7, так как имел пониженное до 2,8 В напряжение питания ядра.

Комментариев нет:

Отправить комментарий