Новая история x86: от 386 до Pentium

Знание истории x86, конечно же, не является обязательным, к примеру для того, чтобы оценить производительность того или иного процессора и системы на его основе. Однако если попытаться отследить некие общие тенденции в развитии всей платформы или составить прогноз, тут уже без исторической ретроспективы обойтись не то что сложно, а попросту невозможно.

Конечно же, серьезный "исторический" труд по процессорам для платформы x86 следовало бы начать "сначала" — с классического i8086, которым оснащались первые IBM-совместимые ПК. Однако мы отнюдь не стремимся перещеголять Карамзина в плане охвата темы, поэтому начнем все-таки со времен менее отдаленных, а именно — с момента появления CPU серии 386. Это были первые процессоры для x86, пригодные для исполнения соответствующих современным стандартам многозадачных операционных систем.

Intel i386DX/SX, AMD Am386

Первые x86-процессоры, в которых появилась нормальная поддержка "защищенного" режима, необходимого многозадачным ОС. Кроме того, в i386 также впервые была реализована параллельная работа некоторых блоков. L1-кэш у CPU этого семейства отсутствовал, L2 опционально присутствовал у i386DX (до 128 KB, внешний). Частоты работы процессоров этой серии находились в диапазоне от 16 до 33 MHz. Блок вычислений с плавающей точкой реализовывался в виде отдельной микросхемы (Intel i387, а также его аналоги от Texas Instruments и Cyrix) и в процессор не входил. Отличались же i386DX и SX исключительно шириной шины данных — 24 и 16 бит соответственно. Кстати, довольно широко распространено заблуждение, что у i386DX также имелся встроенный FPU. Нет, это не так — наличие FPU суффикс DX стал означать позднее, в "эпоху 486". К слову, впоследствии к выпуску 386-х "подключилась" и AMD, но ничего интересного конструктивно ее процессоры собой не представляли, так как были точными копиями Intel i386.

Cyrix Cx486SLC/DLC

Процессоры с частотами от 20 до 66 MHz, которые фактически являлись полными аналогами i386, но с увеличенной частотой и L1-кэшем (1 KB). Они устанавливались в обычные системные i386-платы и даже могли применяться для апгрейда старых систем (правда, только в тех случаях, когда процессор не был впаян).

Intel i486DX/SX

Процессоры во многом революционные для своего времени — у них появился кэш первого уровня, интегрированный в чип (8 KB), максимальный размер L2-кэша увеличился до 512 KB. В i486DX был интегрирован блок вычислений с плавающей точкой (FPU — Floating Point Unit). Кроме того, i486 — первый процессор, ядро которого содержало пятиступенчатый конвейер. Таким образом, команда, прошедшая первую ступень конвейера, продолжая обрабатываться на второй, высвобождала первую для следующей инструкции. Также серия i486 (опять-таки впервые) поддерживала работу в многопроцессорном (SMP) режиме.

Intel i486DX2/SX2/DX4

Эти процессоры являлись, по сути, частично переработанными вариантами i486DX/SX — L1-кэш увеличился до 16 KB, и было введено понятие "коэффициент умножения". Да, не удивляйтесь, до этого момента у x86 CPU частота работы ядра всегда была равна частоте системной шины. У процессоров серий DX2/SX2 множитель был равен двум, а у DX4 — трем (внимание: именно трем, а не четырем, как гласит довольно распространенное заблуждение, основанное на цифре "4" в названии серии).

Cyrix Cx486S/DX, AMD Am486DX, UMC U486SX2/DX2 (U5S/U5D)

Все эти процессоры являлись функциональными аналогами ранее описанной серии Intel i486. Cyrix Cx486S/DX — клоны Intel i486SX/DX, разве что только размер L1-кэша у них "подкачал" — всего 2 KB у Cx486S и 8 KB у Cx486DX. AMD Am486DX — клон i486DX4, но, наоборот, более совершенный — его частота могла достигать 120 MHz (для i486DX4 предел составлял 100 MHz). Тайваньская UMC переняла у Intel даже маркировку, разве что только маленькую "i" в начале наименования процессора заменила на большую "U". Кстати, это была первая и, наверное, последняя попытка одного из ведущих чипмейкеров заняться выпуском на своих заводах не "сторонних", а самостоятельно разработанных сложных чипов. Видимо (судя по отсутствию продолжения), попытку сочли неудачной.

Intel Pentium

Наверное, один из самых революционных процессоров за всю историю платформы. Первый "суперскалярный" CPU, содержащий два независимых параллельно работающих конвейера. L1-кэш впервые был разделен на две части по 8 KB, отдельно для кода и данных. Кэш данных работал по усовершенствованной схеме с обратной записью (write back), что положительно сказалось на производительности процессора (справедливости ради стоит упомянуть, что "открыла" write back все же не Intel, а Cyrix). Также поддерживался L2-кэш размером до 1 MB (внешний, на плате).

Но одним из самых значительных нововведений был полностью обновленный блок вычислений с плавающей точкой (FPU). Фактически до этого на платформе x86 еще не было настолько мощного FPU, и лишь через многие годы после выхода Intel Pentium конкуренты смогли достичь его уровня производительности. Также в Intel Pentium впервые была реализована "альфа и омега современных x86 CPU" — встроенная таблица ветвлений. Конечно, таблица ветвлений Intel Pentium являлась лишь слабым подобием сложнейших блоков предсказания ветвлений современных CPU, но начало было положено.

AMD Am5x86, Cyrix 5×86 (M1SC)

"Наш ответ Чемберлену" от AMD и Cyrix, последовавший после выхода процессора Intel Pentium. Фактически по основным признакам это действительно были процессоры пятого (т. е. "пентиумного") поколения — они тоже были суперскалярными и содержали механизм предсказания ветвлений. Но устанавливались они все в тот же 486-й сокет, и поэтому могли быть использованы для апгрейда старых систем. Однако истинными конкурентами Pentium эти процессоры все же стать не смогли — даже при "запредельной" для того времени частоте работы процессорного ядра 133 MHz производительность их FPU была ниже, чем у меньших по частоте Intel Pentium.

NexGen Nx586/586FP/686

Еще один вариант чипа, позиционировавшегося как "Pentium killer", от ныне почти забытой компании NexGen. Именно в Nx586(FP) впервые был максимально точно "воспроизведен" Intel Pentium — кроме суперскалярности и блока предсказания ветвлений, в этом процессоре и архитектура L1-кэша полностью копировала процессор Intel (раздельный кэш для кода и данных, по 16 KB). Отличие процессора NexGen от Pentium состояло в том, что он производился в двух вариантах — с интегрированным FPU (Nx586FP) и без него. Однако пользователи не "проголосовали" за этот процессор, и его выпуск был быстро свернут. Основным фактором, повлиявшим на непопулярность Nx586, стало то, что для них требовалась специальная, не совместимая ни с какими другими CPU материнская плата.

А вот следующая разработка компании — Nx686 — нашим читателям, наверняка, хорошо известна, но… под другим именем. Дело в том, что после покупки NexGen компанией AMD ядро полностью готового к тому времени Nx686 было положено в основу процессора AMD-K6.

Intel Pentium Pro (P6)

Intel не стояла на месте и буквально через два года после выпуска Pentium анонсировала еще одну принципиально новую разработку — Pentium Pro. Новая процессорная шина, три независимых конвейера, оптимизация под 32-битовый код, от 256 KB до 1 MB L2-кэша, интегрированного в процессор, причем работающего на частоте ядра, усовершенствованный механизм предсказания ветвлений — по количеству нововведений новый процессор чуть ли не бил рекорды, ранее установленные Intel Pentium. Однако за такое "неземное совершенство" приходилось платить, причем в самом буквальном смысле слова — CPU получился чрезвычайно дорогим. Впрочем, учитывая его позиционирование, а предназначался он исключительно для мощных серверов и рабочих станций, затраты себя окупали вполне за счет невиданной ранее производительности.

Но основным в Pentium Pro являлось не быстродействие, и уж тем более не цена. Это был первый x86-процессор, который фактически… не был таковым! Машинные коды x86-ассемблера, поступающие в CPU, внутри декодировались в RISC-подобный микрокод, и уже именно его исполняло ядро процессора. В этом отношении инновационность Pentium Pro трудно переоценить. Дальнейшее развитие платформы x86 подтвердило правильность выбора, сделанного Intel: сейчас практически все высокопроизводительные x86-процессоры используют аналогичную внутреннюю архитектуру — CISC-команды "на входе" и RISC-подобный микрокод на внутреннем уровне.

Кроме того, ядро Pentium Pro (P6) легло в основу трех следующих процессоров Intel — Pentium II, Celeron, Pentium III. Таким образом, оно по праву носит звание самого долгоживущего на платформе x86 — последний процессор на основе ядра P6 был разработан через пять лет после выхода первого!

AMD-K5

Буква "K" в названии этого процессора означает "Krypton" — мифический материал, лишающий силы знаменитого Супермена. Если под Суперменом понимать Intel Pentium, то аналогия получается довольно прозрачной. Поскольку все больше и больше систем строилось на базе Pentium, компании был необходим CPU, который мог бы быть установлен в соответствующие материнские платы. K5 тоже полностью "копировал" архитектуру Pentium — кэш первого уровня размером 24 KB был разделен на две части — 16 KB под инструкции и 8 KB для данных. Однако первый "блин" вышел "комом" — AMD-K5 не смог по популярности превзойти основного конкурента. Причин было две: первая — традиционно для AMD слабый блок FPU, а вторая — сомнительное решение использовать для маркировки процессоров не реальную частоту, на которой они работали, а так называемый PR (Pentium Rating). Означать, по идее, это должно было следующее: "Наш процессор при частоте 90 MHz по производительности примерно соответствует Intel Pentium 120 MHz, поэтому мы называем его AMD-K5 PR120". На самом деле, конечно же, для вычисления PR использовались тесты, которые в выгодном свете демонстрировали именно особенности процессоров AMD (операции с целыми числами), что вызвало массу справедливых нареканий. Правда, по скорости в офисных приложениях AMD-K5 действительно оказывался, как минимум, не хуже Pentium, а стоил меньше, поэтому определенную долю рынка AMD "отвоевать" удалось.

Также K5 стал первым процессором "пользовательского" класса, в котором было применено решение, впервые реализованное в Intel Pentium Pro: скоростное RISC-подобное ядро с транслятором, преобразовывавшим сложные команды x86-кода в простой и быстро выполняющийся микрокод. И это, несомненно, является громадным достижением AMD: впервые архитектура, применявшаяся ранее только в дорогих high-end-процессорах, "пришла" на обычные десктопы.

Intel Pentium MMX

Этот процессор стал логическим развитием своего предшественника — Intel Pentium. Ядро было подвергнуто модификации — добавлена поддержка новых инструкций, ориентированных на работу с мультимедиа-данными (MMX — MultiMedia eXtensions), и увеличен объем кэша первого уровня — с 16 до 32 KB. Последнее усовершенствование серьезнейшим образом сказалось на повышении производительности нового CPU. Фактически именно увеличившийся объем L1-кэша позволял Pentium MMX существенно обгонять своего предшественника, причем даже в тех задачах, где поддержкой MMX на уровне кода, что называется, "и не пахло". Правда, была в новом процессоре и "ложка дегтя" — Pentium MMX требовал различного напряжения питания для цепей ввода/вывода и ядра, в связи с чем не мог устанавливаться в старые платы Socket 7, выпущенные до его появления (по крайней мере, штатным способом).

Cyrix 6×86(M1)/6x86MX/M-II

Cyrix 6×86 фактически являлся адаптированным для Pentium-платформы (Socket 7) вариантом 5×86 (M1SC), недаром неофициальное его название — M1. Впрочем, трудно судить, "что было раньше — яйцо или курица", быть может, наоборот, изначально был разработан как раз M1, а уже потом — M1SC. Но вот если 5×86 можно было называть "Pentium для 486", то M1 за счет практически полной идентичности этих двух процессоров получился "усовершенствованным 486 для Pentium-платформы" — L1-кэш (16 KB) так и остался общим, без разделения на области для кода и данных. Кроме того, некоторые модели процессоров Cyrix 6×86/6x86MX и M-II использовали нестандартные частоты FSB — 75 и 83 MHz, в результате чего могли работать отнюдь не на каждой материнской плате. Производительность этих CPU была "усугубленным вариантом AMD-K5" — превосходный блок целочисленных вычислений и еще более слабый FPU. Фактически они подходили исключительно для дешевых офисных машин. Не прибавил популярности всей линейке этих CPU и используемый в маркировке вместо реальной частоты PR-рейтинг (как у AMD-K5).

Cyrix 6x86MX являлся усовершенствованным вариантом 6×86 — была добавлена поддержка MMX-инструкций и увеличен до 64 KB объем кэша первого уровня (к слову, на тот момент это был самый большой объем L1 на x86). Cyrix M-II не отличался ничем от 6x86MX за исключением того, что поддерживал частоту FSB 100 MHz (так называемая платформа Super 7 — Socket 7 100 MHz FSB). Однако ни увеличение объема L1, ни поддержка высоких частот системной шины не спасли эти процессоры — они по-прежнему оставались самыми медленными из всех. Правда, и самыми дешевыми. Впоследствии, после покупки Cyrix компанией VIA Technologies, последняя продолжила выпуск Cyrix M-II, не меняя названия.

AMD-K6/K6-2/K6-III

Как мы уже писали выше, в основу AMD-K6 легло ядро, разработанное инженерами компании NexGen для процессора Nx686. Однако с момента окончания разработки Nx686 до выхода AMD-K6 прошло два года, и, естественно, кое-какому "осовремениванию" старое ядро было подвергнуто. Так, кэш первого уровня, у Nx686 имевший размер 48 KB (16 KB под код и 32 для данных), у AMD-K6 увеличили до 64 KB (32 + 32 соответственно). Кроме того, за счет изготовления CPU от AMD по более совершенному техпроцессу максимальная частота, у Nx686 равная 180 MHz, в случае AMD-K6 была увеличена до 300 MHz. K6 позиционировался компанией как конкурент Pentium II, однако слабая производительность при операциях с плавающей точкой позволяла ему всерьез конкурировать только с Pentium MMX. Как и у K5, ядро K6 было уже полностью "независимым" от старых x86-инструкций и исполняло RISC-подобные микрокоманды, в которые специальный транслятор преобразовывал стандартные машинные коды. Кроме того, K6 был первым процессором AMD, поддерживающим команду MMX и 100-мегагерцевую системную шину.

AMD K6-2 предлагал производителям ПО собственный набор команд, оптимизированный для еще более узкой области, нежели "универсально-мультимедийный" Intel MMX, а именно: для наиболее ресурсоемких расчетов, связанных с 3D-графикой. Даже в самом названии этого набора (3DNow!) отразилась область его применения. Однако мало обеспечить поддержку определенных команд процессором — нужно еще, чтобы их использовали разработчики ПО. Как это ни печально, но K6-2 не удалось переломить консерватизм программистов, и поддержка 3DNow! стала массово появляться в ПО лишь позже, с выходом AMD Athlon и Duron.

K6-III представлял собой дальнейшее развитие линии K6-2 — его, подобно Pentium II, оснастили кэшем второго уровня (256 KB), размещенным прямо в корпусе процессора и работающим на частоте CPU. Учитывая то, что на всех материнских платах для платформы Socket 7/Super 7 кэш присутствует "по умолчанию", этот процессор оказался по-своему уникальным, поскольку системы на его основе имели три уровня кэша — два собственно на кристалле, и еще один — на системной плате. Естественно, L2-кэш, работающий на частоте процессорного ядра, оказался хорошим подспорьем, и производительность K6-III по сравнению с K6-2 существенно возросла. Однако с самого начала было понятно, что сам по себе CPU "припозднился" — тягаться на равных с Intel Pentium II и Celeron с их высокоскоростными процессорными шинами нового поколения K6-III уже не мог, особенно в ресурсоемких приложениях и компьютерных играх.

Centaur/IDT WinChip/WinChip2

"Производительность? Кого она интересует в офисных приложениях?! Цена — вот основной критерий!" — так, наверное, рассуждали разработчики Centaur/IDT, когда проектировали свои процессоры для платформы Socket 7. В WinChip даже отсутствует блок предсказания ветвлений, несмотря на то что это CPU Pentium-класса. Зато процессоры получились очень простые, а степень нагрева и суммарная потребляемая мощность — минимальные.

Кроме того, WinChip, совместимый с набором инструкций MMX, мог устанавливаться даже в устаревшие платы, не поддерживающие двойное питание, необходимое другим процессорам "MMX-класса". В общем, продукты довольно интересные, и выйди чуть пораньше, наверное, они смогли бы составить достойную конкуренцию если не процессорам Intel, то, по крайней мере, AMD-K6 и Cyrix 6x86MX/M-II. Однако, увы, их выход пришелся как раз на период заката платформы Socket 7, и поэтому сколько-нибудь значительной популярности эти CPU не приобрели. Впрочем, WinChip еще было суждено "ожить" в новом качестве — процессорное ядро следующего поколения, разработанное командой Centaur, увидело свет. Правда, уже не под маркой IDT, а в виде VIA Cyrix III.

Rise mP6

Идея сделать "Socket 7 с производительностью Slot 1" витала в воздухе, и попыток было немало (те же AMD K6-2/K6-III). Rise Technology, пожалуй, приблизилась к этой цели ближе всех. У mP6 (P6 — явный намек на ядро шестого поколения от Intel, буква "m", видимо, означает "magic", так как разработчики Rise называли свое детище "magic processor") было два конвейера для операций с плавающей точкой, три (!) блока исполнения MMX-инструкций и способность исполнять три целочисленные инструкции за такт! Кроме того — чрезвычайно низкое энергопотребление: 1,5 Вт в режиме ожидания и 0,02 Вт в режиме остановки. Увы… Этот необычайно интересный процессор, последняя по времени выхода серьезная разработка для платформы Socket 7, был обречен — и не из-за каких-то своих отрицательных качеств, а из-за очевидного морального устаревания самой платформы. Насколько нам известно, массовые поставки Rise mP6 так и не были начаты, хотя компания была к ним полностью готова.

Подводя итоги

Мы сознательно не стали рассматривать в этом обзоре Intel Pentium II/III, Celeron, Pentium 4, AMD Athlon/Duron, VIA Cyrix III/C3, закончив его на CPU для платформы Socket 7. Конечно же, "новейшая история x86" не менее (а иногда и более) интересна — ведь все еще "бурлит", продолжают ломаться копья, идут оживленные дискуссии о правильности выбранных тем или иным производителем путей… Для рассмотренных нами процессоров практически все уже в прошлом. Но, с другой стороны, это и хорошо — можно оценить историю их развития спокойно, не оглядываясь на рыночную конъюнктуру. Кроме того, знание прошлого, как известно, помогает лучше понимать настоящее, а иногда даже заглянуть в ближайшее будущее.