Может ли простота победить сложность, если речь идёт о микропроцессорах? Фирма Centaur Technology считает, что может, и готовит к продаже новый процессор Pentium-класса IDT-C6 (WinChip C6). Этот радикально упрощённый процессор по своей архитектуре радикально отходит от всех современных тенденций в проектировании как RISC, так и CISC чипов.
На первый взгляд, в этом процессоре нет вообще ничего: ни суперскалярных конвейеров (superscalar pipelining), ни внеочередного выполнения (out-of-order execution), ни виртуального исполнения (speculative execution), ни переименования регистров (rename registers), ни перенаправляющих буферов (reordering buffers). В нём нет даже механизма предсказания переходов (branch prediction) — это первый процессор х86 без такой возможности с 1993 года.
Ещё удивительнее то, что IDT-C6 является первой разработкой неизвестной доселе кампании. Centaur — это новое подразделение компании Integrated Device Technology (IDT), известного производителя статической памяти (SRAM) и RISC-процессоров серии Rx000 по лицензии Silicon Graphics/Mips. Однако у IDT до сих пор не было опыта в проектировании и производстве процессоров архитектуры х86.
Тем не менее, по данным Centaur, IDT-C6 200 MHz не уступает PentiumMMX 200 MHz на тесте Winstone 97 business benchmark. Как следует из таблицы, он имеет также существенно меньший размер кристалла, чем Pentium, что, по логике, должно привести к его меньшей стоимости. К преимуществам нового процессора следует, без сомнения, отнести большой размер кэша первого уровня и низкий уровень энергопотребления.
Centaur IDT-C6 | Intel PentiumMMX (P55C) | Intel 486DX4* | |
Максимальная тактовая частота | 200 MHz** | 233 MHz | 100 MHz |
Поддержка MMX | Да | Да | Нет |
Выполнение инструкций MMX | Одна за такт | Две за такт | Невозможно |
Число внутренних конвейеров | Один | Два | Один |
Технология изготовления | 0.35-микрон CMOS | 0.35-микрон CMOS | 0.6-микрон CMOS |
Площадь кристалла | 88 кв.мм | 140 кв.мм | 345 кв.мм |
Используемый разъём | Socket 7 | Socket 7 | 486 socket |
Дата выпуска | Сентябрь 1997 | Июнь 1997 | Март 1994 |
*486DX4 — самый мощный процессор 486 производства Intel. Ранние 486-е (впервые представленные в 1989 году) работали на частоте не больше 66 MHz, имели общий кэш L1 размером 8 KB состояли из 1.2 миллиона транзисторов.
**Планируется выпуск 225- и 240-MHz версий. Как это делалось
Идею создания простого х86 процессора президент компании Centaur Глен Генри (Glenn Henry), работавший ранее в IBM, Dell и Mips, вынашивал несколько лет. На своей последней работе он занимался созданием комбинированного RISC/CISC процессора, способного выполнять как инструкции х486, так и Rx000. Этот проект потерпел неудачу, но Глен Генри принёс свои идеи в IDT. В апреле 1995 он сел с тремя ведущими инженерами компании за свой кухонный стол в Остине (Austin), штат Техас, и они придумали IDT-C6. По их мысли, будущий чип должен был содержать один 6-ступенчатый конвейер команд, что само по себе является почти ересью. Практически все современные процессоры — как RISC, так и CISC — являются суперскалярными, то есть имеют несколько конвейеров и выполняют несколько инструкций за такт. Суперскалярные процессоры нуждаются в сложных логических схемах, контролирующих продвижение инструкций по конвейерам. Отказ от суперскалярности позволил моментально "сэкономить" миллионы транзисторов и отказаться от сложной логики.
Новейшие процессоры — такие, как Pentium Pro и Pentium II компании Intel, AMD K6, Cyrix 6x86Mx — могут выполнять инструкции "вне очереди". Отсутствие в чипе компании Centaur такой возможности позволяет ещё уменьшить количество транзисторов, так как позволяет отказаться от перенаправляющего буфера, переименования регистров и соответствующей управляющей логики.
Но Глен Генри на этом не остановился. Он решил выкинуть и блок предсказания переходов. Этот ход позволяет отказаться от буфера адресов перехода (branch target buffer) и всего с ним связанного, однако ветвления настолько часто встречаются в современном коде (примерно через каждые 5 инструкций системы команд х86), что такое решение представляется по меньшей мере спорным. Для того, чтобы понять причины такого решения, надо внимательно посмотреть на конвейер процессора IDT-C6. Он практически такой же, как и в 486 процессоре (выборка, декодирование, вычисление адреса, выполнение, запись результата), за исключением дополнительного шага декодирования (Шаг 2). В процессе выполнения этого шага IDT-C6 транслирует инструкции х86 в простейшие 32-битные микроинструкции или считывает микрокод из внутренней ROM, так же, как и большинство других процессоров х86. На шаге 3 процессор полностью транслирует инструкцию и обращается к регистрам. На шаге 4 производится проверка ветвления. Если ветвления в данной точке не происходит, то шаг 4 занимает всего один такт, инструкция продвигается дальше и всё прекрасно. Если же требуется переход, процессор должен вновь выбрать инструкцию, на которую производится переход, из кэша и провести её по конвейеру, что требует 4 такта. По мнению разработчиков, большинство ветвлений не приводят к переходам, поэтому IDT-C6 требует в среднем 2.5 такта на ветвление.
Для сравнения, Pentium требует только 1 такт на ветвление в случае, если переход предсказан правильно. С другой стороны, при ошибке предсказания требуется 4 или 5 тактов. Генри подсчитал, что в среднем Pentium требует 1.8 такта на ветвление. По его мнению, усложнение Pentium приводит к минимальному росту эффективности.
Благодаря таким дизайнерским решениям IDT-C6 требует существенно меньше времени на тестирование, чем более сложные процессоры. "Создание и тестирование суперскалярного процессора с внеочередным выполнением инструкций является серьёзной проблемой для любого, особенно если речь идёт об архитектуре х86 " — утверждает Генри. Два года, за которые была проведена разработка IDT-C6, составляют около половины срока создания и тестирования большинства процессоров. Так компания NexGen работала 8 лет над созданием первого чипа архитектуры х86, а Intel работает над Merced около 5 лет.
При всей своей простоте IDT-C6 содержит некоторые хитрости для ускорения выполнения инструкций. Так в случае ветвления программы адрес возврата помещается в специальный внутренний стек возврата глубины 8. Большинство других процессоров записывают этот адрес в память. Centaur утверждает, что за счёт такого решения операция ускоряется на 90%.
Ещё одной "примочкой" является наличие кэша, содержащего 8 входов таблицы страниц (page-directory table), которую процессоры х86 используют для обращения к памяти. Около 90% случаев IDT-C6 находит необходимый указатель в кэше вместо того, чтобы обращаться в таблицу. Чтобы предотвратить простой конвейера во время выполнения сложных инструкций на шаге 2 предусмотрена специальная очередь, позволяющая выбирать и транслировать до трёх инструкций одновременно с выполнением другой инструкции.
Другими словами, IDT-C6 не так прост, как кажется с первого взгляда. На самом деле, это попытка быстро создать дешёвый процессор с хорошей производительностью. Удалась ли эта попытка, можно будет судить после тестов IDT-C6. Что дальше?
Centaur планирует выпустить новый чип под кодовым наименованием С3А в марте или апреле 1998 года. Это соответствует заявлениям президента компании о том, что простая архитектура процессора позволит представлять новые разработки каждые полгода. По имеющимся у журнала BYTE сведениям, новый чип будет уже далеко не так прост. Компания собирается включить в него расширения для ускорения обработки 3D-графики, суперскалярный блок MMX с двумя конвейерами и блок предсказания переходов. Получается, что от чего уходили, к тому и пришли?
По заявлениям представителей компании, С3А будет превосходить Pentium на тесте Intel's Media Benchmark, а также выполнять 80% операций с плавающей точкой "не медленнее" своего именитого "коллеги".
Хотя процессор производится по 0.35-микронной технологии, компания надеется увеличить тактовую частоту до 266 МГц. При этом, усовершенствования не окажут существенного влияния на площадь кристалла — она будет порядка 90 мм2. Также планируется производство чипов с интегрированным кэшем L2, что позволит разъёму Socket7 сохранять конкурентоспособность.