Проект з статистики на тему "Процессоры"

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Процессоры

Pentiumd20.gif

Ідея проекту

Доследить этапы развития процесоров, изучение их аспектов,а также их состояние в наше время

Автор проекту

Соболь Александр

Штромилов Владимир

Матеріали проекту

Інтернет ресурси проекту

Список посилань на ресурси проекту.

Российский микропроцессор МЦСТ-R500 1 ГГц 130 нм, для ВПК Отечественные многоядерные процессоры «Мультикор», RISC+DSP, для ВПК «Правительство обнулило пошлины на процессоры» (18.09.2007) Крис Касперски RISC vs. CISC http://www.computer-encyclopedia.ru/main.php?n=2&f=3 Процессор (энциклопедия Алфёрова)] Intel представила 80-ядерный процессор Ferra.ru, 12 февраля 2007] 5ka.com.ua www.atlant.ru www.xard.ru

Посилання на створену колекцію закладок

Додаткові матеріали проекту

Посилання на файли, презентації та інші корисні матеріали

Результати проекту

История Процессоров

http://www.kspu.kr.ua/wiki/index.php/%D0%9F%D0%B5%D1%80%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B_%D1%80%D0%B0%D0%B7%D0%B2%D0%B8%D1%82%D0%B8%D1%8F Перспективы развития]

Центра́льный проце́ссор (ЦП; CPU — англ. céntral prócessing únit, дословно — центральное вычислительное устройство) — процессор машинных инструкций, часть аппаратного обеспечения компьютера или программируемого логического контроллера, отвечающая за выполнение арифметических операций, заданных программами операционной системы, и координирующий работу всех устройств компьютера. Современные ЦП, выполняемые в виде отдельных микросхем (чипов), реализующих все особенности, присущие данного рода устройствам, называют микропроцессорами. С середины 1980-х последние практически вытеснили прочие виды ЦП, вследствие чего термин стал всё чаще и чаще восприниматься как обыкновенный синоним слова «микропроцессор». Тем не менее, это не так: центральные процессорные устройства некоторых суперкомпьютеров даже сегодня представляют собой сложные комплексы больших (БИС) и сверхбольших (СБИС) интегральных схем. Изначально термин Центральное процессорное устройство описывал специализированный класс логических машин, предназначенных для выполнения сложных компьютерных программ. Вследствие довольно точного соответствия этого назначения функциям существовавших в то время компьютерных процессоров, он естественным образом был перенесён на сами компьютеры. Начало применения термина и его аббревиатуры по отношению к компьютерным системам было положено в 60-х годах XX века. Устройство, архитектура и реализация процессоров с тех пор неоднократно менялись, однако их основные исполняемые функции остались теми же, что и прежде. Ранние ЦП создавались в виде уникальных составных частей для уникальных, и даже единственных в своём роде, компьютерных систем. Позднее от дорогостоящего способа разработки процессоров, предназначенных для выполнения одной единственной или нескольких узкоспециализированных программ, производители компьютеров перешли к серийному изготовлению типовых классов многоцелевых процессорных устройств. Тенденция к стандартизации компьютерных комплектующих зародилась в эпоху бурного развития полупроводниковых элементов, мейнфреймов и миникомпьютеров, а с появлением интегральных схем она стала ещё более популярной. Создание микросхем позволило ещё больше увеличить сложность ЦП с одновременным уменьшением их физических размеров. Стандартизация и миниатюризация процессоров привели к глубокому проникновению основанных на них цифровых устройств в повседневную жизнь человека. Современные процессоры можно найти не только в таких высокотехнологичных устройствах, как компьютеры, но и в автомобилях, калькуляторах, мобильных телефонах и даже в детских игрушках. Чаще всего они представлены микроконтроллерами, где помимо вычислительного устройства на кристалле расположены дополнительные компоненты (интерфейсы, порты ввода/вывода, таймеры, и др.). Современные вычислительные возможности микроконтроллера сравнимы с процессорами персональных ЭВМ десятилетней давности, а чаще даже значительно превосходят их показатели.


1. 1. 1. Организация памяти 8086/88 Память для процессоров 8086/8088 представляется в виде линейной последовательности байт. Для обращения к памяти процессор (совместно с внешней схемой) формирует шинные сигналы MEMWR# (Memory Write) и MEMRD# (Memory Read) для операции записи и считывания соответственно. Охват пространства размером 1 Мб обеспечивается 20-разрядной шиной адреса. Логическая память разбивается на сегменты размером 65 Кб. Физический адрес памяти (поступающий на шину адреса разрядностью 20 бит) состоит из двух 16- битных частей – адрес сегмента Seg и исполнительного адреса ЕА (executive address), суммируемых со смещением на 4 бита (рис 2.1).


Рис. 2.1. Формирование физического адреса памяти процессором 8086/8088

     Процессор может обращаться к одному байту памяти,  так  и  слову,  или

двойному слову. При размещении слова в памяти с адресом, соответствующим адресу слова, содержит его младшую часть (Low), следующий байт содержит старшую часть (High). Слово может размещаться в памяти как по четному (Even), так и по не нечетному (Odd) адресу. Двойное слово обычно используется для хранения полного адреса, и в нем располагается сначала слово смещения (в порядке L, H), а затем сегмента (в том же порядке). Сегментация памяти в порядке L, H являются характерной чертой процессоров Intel.

     Все пространство памяти разбивается  на  параграфы  –  области  из  16

смежных байт, начиная с нулевого адреса. Вполне очевидно, что любой сегмент может начинаться только на границе параграфа (четыре младших бита адреса – нулевые).


1.1.2. Адресация ввода-вывода

Для обращения к устройствам ввода-вывода процессор имеет отдельные команды IN и OUT, результатом выполнения которых является формирование шинных сигналов IORD# (Input/ Output Write) для чтения или записи одного или двух байт. Данные при чтении могут помещаться только в регистр AL или AX и выводятся из этих же регистров. В циклах ввода-вывода используется только 16 младших бит шины адреса (старшие биты при этом нулевые), что позволяет адресовать до 64 Кб регистров ввода-вывода. Адрес устройства задается либо в команде (только младший байт, старший – нулевой), либо берется из регистра DX (полный 16-битный адрес).

1.1.3. Система команд

Набор команд 8086/88 включает следующие основные группы:

    . инструкции пересылки данных
    . арифметические и логические инструкции;
    . инструкции со строками;
    . инструкции передачи управления;
    . инструкции управления процессором;
     Каждая команда имеет один или два байта инструкции, за которыми  может

следовать 1, 2 или 4 байты операнда. Перед кодом инструкции возможно применение префиксов CS;, DS;, ES;, SS;, указывающих на использование заданных сегментных регистров вместо обычного, префикса REP, указывающего на необходимость повтора инструкции указанное в регистре СХ число раз, и префикса LOCK, блокирующего системную шину на время выполнения инструкции. С позиции сегодняшнего дня можно считать, что система команд 16-разрядного процессора 8086/88 является подмножеством команд 32-разрядных процессоров 80х86.

2. . Процессоры 80186/80188

Процессоры i80186/80188 и их модификации 80С186/80С188 не представляют нового представления архитектуры: как и 8085/8088, они являются процессорами с 16-разрядной внутренней архитектурой и программно совместимыми с 8086ю Разрядность шины адреса - 20 бит, шины данных у 80186 – 16 бит, у 80188 – 8 бит. Эти процессоры имеют встроенные периферийные контроллеры прерывания, прямого доступа к памяти, трехканальный таймер и генератор синхронизации. За счет архитектурных улучшений сокращенно число тактов, требуемых для выполнения некоторых команд. Процессоры 80С186/80С188 имеют средства управления энергопотреблением, есть их модификации со встроенными последовательными портами и контроллерами регенерации динамической памяти. Встроенная периферия этих процессоров имеет программный интерфейс, не совместимы с IBM РС - спецификациями. Эти процессоры используются во встраиваемых контроллерах и компьютерах, не требующих 100% IBM – совместимости (возможно обеспечение совместимости на уровне MS DOS).

1.2.1. Математический сопроцессор 8087

Сопроцессор 8087, официально (фирмой Intel) называемый NPX (Numeric Processor eXtension), предназначен для расширения вычислительных возможностей центрального процессора (CPU) 8086/8088, 80186/80188. Его применение к системе команд 8086 добавляется 68 мнемоник, включающих арифметические, тригонометрические, экспоненциальные и логарифмические.

3. Процессор 80286

Процессор 80286, выпущенный в 1982 году, представляет второе поколение 16- разрядных процессоров. Он имеет специальные средства для работы в многопользовательских и многозадачных системах. Самым существенным отличием от 8086/88 является механизм управления адресации памяти, который обеспечивает четырехуровневую систему защиты и поддержки виртуальной памяти. Специальные средства предназначены для поддержки механизма переключения задач (Task switching). Процессор имеет расширенную систему команд, которая кроме команд управления защитой включает все команды 8086 н и несколько новых команд общего назначения. Процессор может работать в двух режимах:

   8086 Real Address Mode – режим реальной адресации (или просто  реальный

режим - Real Mode), полностью совместимый с 8086. В этом режиме возможна адресация до 1 Мбайт физической памяти (на самом деле, за счет “удачной” ошибки, почти на 64 Кб больше).

   Protect Virtual Address Mode – защищенный режим  виртуальной  адресации

(или просто защищенный режим - Protect Mode). В этом режиме процессор позволяет адресовать до 16 Мбайт физической памяти, через которые при использовании страничной адресации могут отображаться до 1 Гб виртуальной памяти каждой задачи. Система команд в этом режиме также включает набор команд 8086, расширенный для обеспечения аппаратной реализации функций супервизора многозадачной ОС и виртуальной памяти. Переключение в защищенный режим осуществляется одной командой (с предварительно подготовленными таблицами дескрипторов) достаточно быстро. Обратное переключение в реальный режим возможно только через аппаратный сброс процессора.

   По составу и назначению в реальном режиме  регистры  80286  в  основном

совпадают с регистрами 8086/88. Изменения касаются назначения бит регистра 8086, процессор 80286 имеет 16-битную шину данных и очередь команд 6 байт. За счет архитектуры сокращенно время выполнения операций: процессор 20286 с тактовой частотой 12,5 МГц работает более чем в 6 раз быстрее чем 8086 с тактовой частотой 5 МГц. Предусмотрена возможность использования высокопроизводительного процессора 80287, программно совместимого с 8087.

   Под управлением MSDOS процессор  80286  обычно  используют  в  реальном

режиме работы. Защищенный режим используют ОС типа XENIX, UNIX, OS/2, NetWare286 и оболочка MS Windows. Хотя его преимущества в РС реализованы лишь частично (он в основном использовался как быстрый процессор 8086), именно с этим процессором связан настоящий “бум” на рынке РС.

1.3.1. Организация памяти 80286

Как и у процессоров 8086/8088, для обращения к памяти процессор (совместно с внешней схемой) формирует шинные сигналы MEMWR# (Memory Write) и MEMRD# (Memory Read) для операции записи и считывания соответственно. Шина адреса разрядностью 24 бита позволяет адресовать 16 Мб физической памяти, но в реальном режиме доступен только 1 Мб, начинающийся с младших адресов. С программной точки зрения память также организуется в виде сегментов, но управление сегментацией имеет существенные различия для реального и защищенного режимов.

     В  реальном  режиме  по   адресации   памяти   декларируется   полная

совместимость с процессором 8086, который своей 16-битной адресной шиной охватывает пространство в 1 Мб. На самом деле на радость разработчиков программного обеспечения РС, 80286 имеет ошибку, “узаконенною” и в следующих поколения процессоров. При вычислении физического адреса возможно возникновение переполнения, которое с 20-битной шиной адреса просто игнорируется. Например, Seg=FFFFh и EA=FFFF, физический адрес, вычисленный по формуле PA=16*Seg+EA=10FFEF, процессором 8086 трактуется как 0FFEF – адрес, принадлежащий первому мегабайту. Однако на выходе А20 процессора 80286 в этом случае устанавливается единичное значение, что соответствует адресу ячейки из второго мегабайта физической памяти. Для обеспечения полной программной совместимости с 8086 в схему РС был введен специальный вентиль Gate A20, принудительно обнуляющий бит А20 системной шины адреса. Не оценив потенциальной выгоды от этой ошибки, управление вентилем узаконили через программно-управляемы бит контроллера клавиатуры 8042. Когда оперативная память подешевела, а “аппетит” программного обеспечения вырос, в эту небольшую область (64К-16 бит) стали помещать некоторые резидентные программы или даже часть операционный системы, а для ускорения управлением вентилем появились более быстрые способы (Gate A20 Fast Control).

   В отличии от 8086 процессор 80286 имеет средства контроля за  переходом

через границу сегмента, работающие в реальном режиме. При попытке адресации к слову, имеющему смещение FFFh (его старший байт выходит за границу сегмента), или выполнения инструкции, все байты которой не умещаются в одном сегменте, процессор вырабатывает прерывание – исключение 13 (0Dh) – Segment Overrun Exception. При попытке выполнения инструкции ES-CAPE с операндом памяти, не умещаемся в сегменте, вырабатывается исключение 9 – Processor Extension Segment Interrupt.

   В защищенном режиме работают не все режимы  адресации,  допустимые  для

8086 и реального режима 80286. Отличия касаются определения сегментов:

    . сегментные регистры CS, DS, SS и ES хранят не  сами  базовые  адреса
      сегментов, а селекторы, по которым из  таблицы,  хранящейся  в  ОЗУ,
      извлекаются дескрипторы сегментов;
    . дескриптор описывает базовый адрес, размер сегмента (1-64 Кб) и  его
      атрибуты;
    . базовый адрес сегмента имеет разрядность 24 бита, что и обеспечивает
      адресацию 16 Мб физической памяти.
   Селекторы, загружаемые в 16-битные сегментные регистры, имеют три поля:

RPL (биты 0, 1), TI (бит 2) и INDEX (биты 3-15): RPL (Requested Privilege Level) – запрошенный уровень привилегий; TI (Table Indicator) – индикатор использования GDT – глобальный (TI=0) или LDT – локальной (TI=1) таблицы дескрипторов; INDEX – номер дескриптора в таблице.

   Дескрипторы хранятся в слове и занимают  по  четыре  смежных  слова  (8

байт). При загрузке нового значения селектора дескрипторы считываются из ОЗУ и кэшируются во внутренних программно не доступных (и невидимых) регистрах процессора. До смены значения селектора при обращения к памяти используются значения дескрипторов только из кэш-регистров. Обращение к дескрипторам выполняются как заблокированные шинные циклы, что обеспечивает целостность дескрипторов и при наличии других контроллеров шины.

   Для  функций  передачи  управления  и  переключения  задач  определенны

специальные типы дескрипторов


1.3.2. Ввод-вывод

Как и 8086, процессор 80286 позволяет адресовать до 64К однобайтных или 32К двухбайтных регистров в пространстве, отдельном от памяти (команды ввода- вывода вызывают шинные циклы с активными сигналами IORD#, IOWR#). В адресном пространстве ввода-вывода область 00F8-00FF зарезервирована для использования сопроцессором. При операциях ввода-вывода старшие биты адреса (линии А[16:20]) не используются. Адрес устройства либо задается в команде (только младший байт, старший – нулевой), либо берется из регистра DX (полный 16-битный адрес). Строковые команды REP INSB/INSW, REP OUTSB/OUTSW обеспечивают блочный ввод-вывод со скоростью, превышающей аналогичные операции со стандартным контроллером DMA.

   В    защищенном     режиме     инструкции     ввода-вывода     являются

привилегированными. Это означает, что они могут исполнятся задачами только с определенным уровнем привилегий, определяемым полем IOPL регистра флагов. Несанкционированная попытка выполнения этих инструкций вызывает исключение 13 – нарушения защиты (знаменитое сообщение “General Protection Error”).

1.3.3. Начальный сброс и переход в защищенный режим

По высокому уровню сигнала на входе RESET процессор прекращает выполнение инструкций и перестает управлять локальной шиной. После аппаратного сброса процессор переходит к выполнению команды, считанной по физическому адресу FFFF0h. Сброс (и только сброс!) переводит процессор в реальный режим и устанавливает значения некоторых регистров.

   Только после сброса и до первой  команды  межсегментного  перехода  или

вызова на шине адреса в реальном режиме бита А[20:23] в циклах выборки команд имеют единичное значения. Из этого следует, что по крайней мере на начальный период времени после сигнала RESET компьютер должен иметь образ BIOS в адресах FFFFF0-FFFFFFh, в то время как РС на 8086/88 ROM BIOS располагалась под границей 0FFFFFh. Перемещение BIOS из первого мегабайта памяти в старшие адреса “навсегда” невозможно, поскольку векторы прерывания, ссылающиеся на сервисы BIOS, в реальном режиме могут адресоваться только к памяти в диапазоне адресов 0-0FFFFh (0-10FFEF при открытом вентиле Gate A20). Таким образом, у РС/AT на процессоре 80286 (и старше) ROM BIOS отображается по крайней мере на две области памяти, расположенные под верхними границами первого и последнего мегабайтов физической памяти.

   Перевод процессора в защищенный режим осуществляется  загрузкой  в  MSW

слова с единичным значением бита РЕ (Protect Enable). Перед этим в памяти должны быть проинициализированы необходимые таблицы дескрипторов IDT и GDT, а в базовые регистры IDT и GDT должны быть занесены их физические адреса (24-битные) и размер. После выполнения инструкции LMSW, устанавливающий бит РЕ, сразу должна выполнятся команда внутрисегментного перехода JMP для очистки очереди инструкций, декодированных в реальном режиме.

   Для установки регистров процессора в  начальное  состояние  защищенного

режима, предполагаемое системное ПО, выполняют инструкцию JMP с ссылкой на селектора начального TSS системы. При этом загрузится регистр задачи, регистры LDT, регистры сегментов и общие регистры. Регистр задачи TR должен указывать на действительный TSS, поскольку операция переключения задач повлечет сохранение текущего состояния задач.


1.3.4. Защита

Процессор 80286 имеет механизмы защиты от несанкционированного выполнения критических инструкций – команды HLT, которая останавливает процессор, и команд, влияющих на сегменты кода и данных. Механизмы сгруппированы в три группы:

    . ограничения использования сегментов (например, запрет  на  записи  в
      только читаемые сегменты данных); доступность  использования  только
      сегментов, дескрипторы которых описаны в GDT и LDT;
    . ограничения доступа к сегментам через правила привилегий;
    . выделение привилегированных инструкций или операций,  которые  можно
      выполнять только при определенных уровнях CPL и IOPL (биты 13  и  14
      регистра флагов).



Архитектура 32-разрядных процессоров


История 32-разрядных процессоров началась с процессора Intel386. Эти процессора вобрали в себя все свойства своих 16-разрядных предшественников 8086/88 и 80286 для обеспечения программной совместимости с громадным объемом ранее написанного ПО. Однако в них по современным меркам преодолено очень жесткое ограничение на длину непрерывного сегмента памяти – 64 Кб. В защищенном режиме 32-битных процессоров оно отодвинулось до 4 Гб – предела физически адресуемой памяти, что како-то время можно считать “почти бесконечностью“. Все эти процессоры имеют поддержку виртуальной памяти объемом до 64 Тб, встроенный блок управления памятью поддерживает механизмы сегментации и страничной трансляции адресов (Paging). Процессоры обеспечивают четырехуровневую системы защиты памяти и ввода-вывода, переключения задач. Они имеют расширенную систему команд, включающую все команды 8086, 80286. Процессор может работать в двух режимах, между которыми обеспечивается достаточно быстрое переключение в обе стороны:

     Real Address Mode – режим реальной адресации, полностью совместимый  с

8086. В этом режиме возможна адресация до 1 Мб физической памяти (на самом деле почти на 64 Кб больше).

     Protected  Virtual  Address  Mode  –  защищенный   режим   виртуальной

адресации. В этом режиме процессор позволяет адресовать до 4 Гб физической памяти, через которые при использовании механизма страничной адресации могут отображаться до 16 Тб виртуальной памяти каждой задачи. Существенным дополнением является Virtual 8086 Mode – режим виртуального процессора 8086. Это режим является особым состоянием задачи защищенного режима, в котором процессор функционирует как 8086. На одном процессоре в таком режиме могут одновременно исполняться несколько задач с изолированными друг от друга реальными ресурсами. При этом использование физического адресного пространства памяти управляется механизмами сегментации и трансляции страниц. Попытки выполнения команд, выхода за рамки отведенного пространства памяти и разрешенной области ввода-вывода контролируется системой защиты.

     Процессоры могут оперировать с 8, 16  и  32-битными  операндами  байт,

слов и двойных слов, а также с битам, битовыми полями и строками бит.

     Рассмотрим базовую архитектуру, общую для всех существующих на  данный

момент 32-разрядных процессоров: 386, 486, Pentium, Pentium Pro и Pentium

2.1.1. Организация памяти

Память для процессоров 80х86 разделяются на байты (8 бит), слова (16 бит), двойные слова (32 бит). Слова записываются в двух смежных байтах, начиная с младшего. Адресом слова является адрес его младшего байта. Двойные слова записываются в четырех смежных байтах.

     Более крупными единицами являются страницы и  сегменты.  Память  может

логически организовываться в виде одного или множества сегментов переменной длины ( в реальном режиме – фиксированной). Сегменты могут выгружаться на диске и по мере необходимости с него подкачиваться в физическую память. Кроме сегментации, в защищенном режиме возможно разбиение логической памяти на страницы размером 4 Кб (Paging), каждая из которых может отображаться на любую область физической памяти. Сегментация и разбиение на страницы могут применяться в любых сочетаниях. Сегментация является средством организации логической памяти, используемым на прикладном уровне. Разбиение на страницы применяются на системном уровне для управлении физической памятью.

     Применительно  к  памяти  различают  на  три  адресных   пространства:

логическое, линейное и физическое. Основным режимом работы 32-разрядных процессоров считается защищенный режим, в котором работают все механизмы преобразования адресных пространств.

     Логический адрес, также называется виртуальным, состоит  из  селектора

(в реальном режиме – просто сегмента) и смещение. Смещение формируется суммированием компонентов (base, index, disp) в эффективный адрес. Поскольку каждая задача может иметь до 16К селекторов, а смещение, ограниченное размером сегмента, может достигать 4 Гб, логическое адресное пространство для каждой задачи может достигать 64 Тб. Все это пространство виртуальной памяти в принципе доступно программисту (этот ‘принцип” должна реализовывать операционная система).

     Блок сегментации транслирует логическое адресное  пространство  в  32-

битное пространство линейных адресов. Линейный адрес образуется сложением базового адресного сегмента с эффективным адресом. Базовый адрес сегмента в реальном режиме образуется умножением содержимого используемого сегментного регистра на 16 (как и в 8086). В защищенным режиме базовый адрес загружается из дескриптора, хранящегося в таблице, по селектору, загруженному в используемый сегментный регистр.

     Физический 32-битный  адрес  памяти  образуется  после  преобразования

линейного адреса блоком страничной переадресации. В простейшем случае (при отключенном блоке страничной переадресации) линейный адрес совпадает с физическим – присутствующим на внешней шине адреса процессора. Включенный блок страничной переадресации осуществляет трансляцию линейного адреса в физический блоками (страницами) размером 4 Гб. Этот блок может включаться только в защищенном режиме.

     Как и у  процессоров  8086/8088,  для  обращения  к  памяти  процессор

(совместно с внешней схемой) формирует шинные сигналы MEMWR# (Memory Write) и MEMRD (Memory Read) для операции записи и считывания соответственно. Шина адреса разрядностью 32 бита позволяет адресовать 4 Гб физической памяти, но в реальном режиме доступен только 1 Мб, начинающийся с младших адресов.

     В реальном режиме по адресации памяти обеспечивается  совместимость  с

процессором 8086, который своей 16-битной адресной шиной охватывает пространство физической памяти в 1Мб. Для обеспечения совместимости с 80286 32-разрядные процессоры реализуют его ошибку, связанную с переполнением, возникающим при сложении адресов сегмента с эффективным адресом. При вычисление физического адреса возможно возникновение переполнение, которое вызовет появление единицы на линии А20 шины адреса. Максимальное значение адреса в реальном режиме 10FFEF достигается при Seg=FFFFh и EA=FFFFh. Для обеспечения полной программной совместимости с 8086 в РС используется вентиль Gate A20, принудительно обнуляющий бит А20 системной шины адреса. Вентиль в РС управляется через программно-управляемый бит контроля клавиатуры 8042 или более быстрым способом (Gate A 20 Fast Control), определяемым чипсетом системной платы.

     В реальном  режиме  размер  сегмента  фиксирован  –  как  и  8086,  он

составляет 64 Кб (FFFFh). Попытка использования эффективного адреса, выходящего за границы сегмента, при 32-битной адресации вызывает исключение типа 13. При 16-битной адресации при вычисление эффективного адреса возможный перенос в разряд А16 игнорируется, и сегмент “сворачивается кольцом” (как и в 8086). Средства контроля следят и за переходом через границу сегмента во время обращения по “приграничному” адресу. При попытки адресации к слову, имеющему смещение FFFFh, или двойному слову со смещением FFFDh-FFFh (их старшие байты выходят за границу сегмента), или выполнения инструкции, все байты которой не умещаются в данном сегменте, процессор вырабатывает прерывание – исключение типа 13 (0Dh) – Segment Overrun Exception. При попытки выполнения инструкции ESCAPE с операндом памяти, не умещающимся в сегменте, вырабатывается исключение типа 9 – Processor Extension Segment Overrun Interrupt (только для 386).

     8Система команд 32-разрядных процессоров  предусматривает  11  режимов

адресации операндов. Из них только два не имеют отношение к памяти:

     . операнд-регистр, который может находится в  любом  8,  16  или  32-
       битном регистре процессора.;
     .  непосредственный  операнд  (8,  16  или  32-бит),  который   может
       содержаться в самой команде.
   Остальные девять режимов (табл. 3.1.) используются при формировании

эффективного адреса операнда из памяти.

     Эффективный адрес вычисляется с  использованием  комбинации  следующих
     компонентов:
     Смещение (Displacement или  Disp)  –  8-,  16-  или  32-битное  число,
     включенное в команду.
     База (Base) – содержимое базового регистра.  Обычно  используется  для
     указания на начало некоторого массива.
     Индекс (Index) – содержимое индексного регистра.  Обычно  используется
     для выбора элемента массива.
     Масштаб (Scale) –  множитель  (1,  2,  4  или  8),  указанный  в  коде
     инструкции. Этот элемент используется для  указания  размера  элемента
     массива. Доступен только в 32-битном режиме адресации.
     Эффективный адрес вычисляется по формуле EA=Base+Index*Scale+Disp.
     Отдельные слагаемые в этой формуле могут  и  отсутствовать.  Возможные

режимы адресации приведены в табл. 3.1.

                 Таблица 3.1. Режимы адресации памяти 32-битных процессоров


Прямая адресация EA=Disp | Косвенная регистровая адресная Register Index Mode EA=Base | Базовая адресации Based Mode EA=Base+Disp | Индексная адресация Index Mode EA=Index+Disp | Масштабированная индексная адресации Scaled Index Mode EA=Scalex*Index+Disp| Базово-индексная адресация Based Index Mode EA=Base+Index* | Масштабированная базово-индексная адресация Based Scaled EA=Base+Scale* Index| Масштабированная базово-индексная адресация Based Index EA=Base+Index+Disp | Масштабированная базово-индексная адресации со смещение EA=Base+Scale*Index+|


     Процессор может использовать режимы 32-битной или 16-битной адресации.

Режим 16-битной адресации соответствует режимам процессоров 8086 и 80286, при этом в качестве компонентов адреса используются младшие 16 бит соответствующих регистров. Режим 32-битной адресации использует расширенные 32-разрядные регистры и имеет дополнительные режимы, использующие масштабирование индекса. Различия 16- и 32-битных режимов адресации приведены в табл. 3.2.

   В реальном режиме по умолчанию используется 16-битная  адресация, но  с

помощью префикса изменение разрядн6ости адреса (Address Length Prefix) для текущей инструкции можно переключится в 32-битный режим. При этом появляются дополнительные возможности адресации (масштабирования), но вычисленное значение эффективного адреса все равно не может преодолеть 64- килобайтный барьер – при такой попытке генерируется исключение 13 – General Protection Fault.

   В  защищенном  режиме  адресация  по  умолчанию  определяется  битом  D

дескриптора используемого кодового сегмента: при D=0 – 15 бит, при D=1 – 32 бита. Префикс разрядности адреса переключает разрядность для текущей инструкции на противоположную. Таблица 3.2. Различия режимов адресации

Компоненты 16-битная адресации 32-битная адресации Базовый регистр BX или BP Любой 32-битный общего назначения Индексный регистр SI или DI Любой 32-битный общего назначение,кроме ESP Масштаб Нет (всегда 1) 1, 2, 4 или 8 Смещение 0, 8 или 16 бит 0, 8 или 32 бит


   При обращениях к памяти использование сегментных регистров по умолчанию

определяется типом обращения (табл. 3.3.). На время текущей инструкции при необходимости для большинства типов обращения возможно использование альтернативного сегментного регистра, на что указывает префикс замены сегмента (CS:; DS:; ES:; SS:; FS: или GS) перед кодом инструкции.

       Таблица 3.3. Использование сегментных регистров при адресации памяти

Тип обращения к памяти Сегментный регистр по умолчанию альтернативный Выборка команд CS нет Стековые операции SS нет Строка-приемник ES нет Любые ссылки к памяти, кроме использующих в качестве базового регистры BP, EBP или ESP DS CS,ES,SS,FS,GS |Ссылки к памяти, использующие вкачестве базового регистры BP, EBP или ESP SS CS,DS,ES,FS,GS


2.1.2. Прерывания и исключения

Прерывания и исключения нарушают нормальный ход выполнения программы для обработки внешних событий или сообщения о возникновении особых условий или ошибок.

   Прерывания подразделяются на аппаратные (маскируемые и  немаскируемые),

вызываемые электрическими сигналами на выходах процессора, и программные, вызываемые по команде INT xx. Программные прерывания процессором обрабатываются как разновидность исключений.

   Аппаратные прерывания подразделяются на  маскируемые  и  немаскируемые.

Процессор может воспринимать прерывания после выполнения каждой команды, длинные строковые команды имеют для восприятия прерываний специальные окна.

   Маскируемые прерывания вызывают переход и высокий  уровень  сигнала  на

входе INTR (Interrupt Request) при установленном флаге разрешения (IF=1). В этом случае процессор сохраняет с стеке регистр флагов, сбрасывает флаг IF и вырабатывает два следующих друг за другом (back to back) цикла подтверждения прерывания, в которых генерируются управляющие сигналы INTA# (Interrupt Acknowledge). Высокий уровень сигнала INTR должен сохраняться по крайней мере до подтверждения прерывания. Первый цикл подтверждения холостой, по второму импульсу внешний контроллер прерываний передает по шине номер вектора, обслуживающего данный тип аппаратного прерывания. Прерывание с полеченным номером вектора выполняется процессором также, как и программное. Обработка текущего прерывания может быть в свою очередь прервана немаскируемым прерыванием, а если обработчик установит флаг IF, то и другим маскируемым аппаратным прерыванием.

   Немаскируемые прерывания выполняются не зависимо от состояния флага  IF

по сигналу NMI (Non Mascable Interrupt). Высокий уровень на этом входе вызовет прерывание с типом (вектором) 2, которое выполняется также, как и маскируемое. Его обработка не может прерваться под действием сигнала на входе NMI до выполнения команды IRET.

   Исключения (Exceptions) подразделяются на отказы, ловушки  и  аварийные

завершения.

   Отказ (fault) – это исключение, которое обнаруживается и  обслуживается

до выполнения инструкции, вызывающей ошибку. После обнаружения этого исключения выполнение возвращается снова на туже инструкцию (включая все префиксы), которая вызвала отказ. Отказы, использующиеся в системе виртуальной памяти, позволяют, например, подкачать с диска в оперативную память затребованную страницу или сегмент.

   Ловушка (trap) – это исключение, которое обнаруживается и обслуживается

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

   Аварийное завершение (abort) – это  исключение,  которое  не  позволяет

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

   Набор и обработка исключений реального и защищенного режимов  различны.

Под исключения Intel резервирует векторы 0-31 в таблице прерываний, однако в РС часть из них перекрывается системными прерываниями BIOS и DOS.

2.1.3. Начальный сброс и самотестирование

По высокому уровню сигнала на входе RESET процессор прекращает выполнение инструкции и перестает управлять локальной шиной. После аппаратного сброса процессор переходит к выполнению команды, считанной по физическому адресу FFFFFFF0h. Сброс переводит процессор в реальный режим и устанавливает значения некоторых регистров:

     FLAGS = 0002h и биты VM и RF его расширения обнуляются;
     в регистре CR0 обнуляются биты PG, TS, EM, MP и РЕ;
     CS = F000h (база устанавливается FFFF0000h, лимит – 0FFFFh);
     DS = ES = SS = FS = GS = 0000h
     Регистр DH после сброса содержит идентификатора  процессора  Component

Id (03-386, 04-486, 05-Pentium, 06-Pentium Pro или Pentium II), DL – номер модели (Revision Id).

     Только после сброса и до первой команды  межсегментного  перехода  или

вызова на шине адреса в реальном режиме биты A[20:31] в циклах выборки команд имеют единичное значение. Из этого следует, что по крайней мере на начальный период времени после сигнала RESET компьютер должен иметь образ BIOS в адресах FFFFFFF0-FFFFFFFFh, в то время, как в РС 8086/88 имели образ под границей 16-го мегабайта (FFFFFFh). Перемещение BIOS из первого мегабайта памяти в режиме нормальной работы невозможно, поскольку векторы прерывания, ссылающиеся на сервисы BIOS, в реальном режиме могут адресоваться только к памяти в диапазоне адресов 0-0FFFFFh (0-10FFEF) при открытом вентиле Gate A20).

     Если во время спада сигнала RESET  на  определенном  входе  процессора

удерживать низкий уровень сигнала, процессор начнет выполнять внутренний тест BIST (Built-In Self-Test). Тест для 386-го и 486-го процессоров выполняется примерно за 2 в 20-ой степени тактов, что занимает десятки миллисекунд. По окончанию самотестирования процессор начинает работу, как после обычного сброса, а регистр EAX содержит сигнатуру результата тестирования. Об успешном выполнении теста свидетельствует нулевое значение сигнатуры.

2.1.4. Ввод-вывод

Как и 8086, 32-разрядные процессоры позволяют адресовать до 64К однобайтных или 32К двухбайтных регистров в пространстве, отдельном от памяти. Дополнительно имеется возможность обращения к 32-битным портам. При операциях ввода-вывода линии A[16:31] не используются. Адрес устройства задерживается либо в команде (только младший байт, старший – нулевой), либо берется из регистра DX (полный 16-битытный адрес). Команды ввода-вывода вызывают шинные циклы с активными сигналами IORD#, IOWR#. Строковые команды обеспечивают блочный ввод-вывод со скоростью, превышающей аналогичные операции со стандартным контроллером DMA. В адресном пространстве ввода- вывода область 0F8-0FF зарезервирована для использования сопроцессором (при обращении к сопроцессору 386 выставляет единицу на линии А31 шины адреса, что используется для упрощения дешифрации адресов).

   В    защищенном     режиме     инструкции     ввода-вывода     являются

привилегированными. Это означает, что они могут исполнятся задачами только с определенным уровнем привилегий, определяемым полем IOPL регистра флагов или битовой картой разрешения ввода-вывода (I/O Remission Bitmap), хранящийся в сегменте состояния задачи. Несанкционированная попытка выполнения этих инструкций вызовет исключение 13 – нарушение защиты (знаменитое сообщение “General Protection Error ”).

2.1.5. Режим системного управления SMM

Современные модели 32-разрядных процессоров (начиная с некоторых модификаций 386-го и 486-го), кроме обычных режимов – реального, защищенного и режима V86, - имеют дополнительный режим системного управления SMM (System Management Mode). Этот режим предназначен для выполнения некоторых действий с возможностью их полной изоляции от прикладного программного обеспечения и даже операционный системы. Главным образом, этот режим предназначен для реализации системы управления энергопотреблением.

   В режим SMM процессор может войти  только  по  сигналу  на  входе  SMI#

(System Management Interrupt), более совершенные процессоры могут войти в SMM и по приему соответствующего сообщения по шине APIC. Сигнал для процессора является запросом прерывания с наивысшим приоритетом. Обнаружив активный сигнал (низкий уровень) SMI#, процессор по завершении текущей инструкции и выгрузки буферов записи переключается в режим SMM, о чем свидетельствует его выходной сигнал SMIACT#. Сразу при входе в SMM процессор сохраняет свой контекст – почти все регистры – в специальной памяти SMRAM. Эта память является выделенной областью физической памяти, доступ к которой обеспечивается внешними (по отношению к процессору) схемами в шинных циклах обращения к памяти только при наличии сигнала SMIAKT#. После сохранения контекста процессор переходит к выполнению обработчика SMI, который расположен в той же памяти SMRAM. Обработчика представляет собой последовательность обычных инструкций, исполняемых процессором в режиме, напоминающем реальный. При входе в режим SMM автоматически запрещаются аппаратные прерывания (включая и немаскируемые) и не генерируются исключения, так что действия процессора однозначно определяются программой обработчика SMI. Процедура обработки завершается инструкцией RSM, по которой процессор восстанавливает свой контекст из образа, хранящегося в SMRAM, и возвращается в обычный режим работы.

   При  возврате  из   SMM   возможны   некоторые   варианты,   заказанные

обработчиком (в пределах возможности SMM данного процессора). Во-первых, обработчик может программно внести изменения в образ контекста процессора, и при его восстановлении процессор может вернуться не в то состояние, в котором произошло SMI. Во-вторых возможен выбор варианта для случая, когда прерывание SMI возникло во время останова процессора по инструкции HALT: можно вернуться снова на инструкцию останова, а можно перейти к выполнению следующей за ней инструкции. В-третьих, процессоры, начиная с Pentium второго поколения (и Enhanced 486 фирмы AMD), поддерживают возможность рестарта (повторного выполнения) инструкции ввода-вывода, предшествующей появлению сигнала SMI#.

   Возможность  рестарта  инструкции  ввода-вывода  является   расширением

режима SMM. Ее используют, например, когда прикладная программа (или системный драйвер) пытается обратиться операцией ввода-вывода к периферийному устройству, находящемуся в “спящем” режиме. Системная логика должна в этом случае выработать сигнал SMI# раньше сигнала RDY#, завершающего шинный цикл рестартуемой инструкции ввода-вывода. Обработчик SMI “разбудит” устройство, после чего операции ввода-вывода рестартует, и прикладное ПО (или драйвер) “не заметит”, что устройство пребывало в спячке. Таким образом, управление потреблением может быть организованно на уровне BIOS способом, совершенно “прозрачным” для программного обеспечения (в том числе и ОС). Прозрачность SMM обеспечивается следующими свойствами режима:

    . возможность только аппаратно входа в SMM,
    . исполнением кода SMM в отдельном адресном пространстве,
    . полным сохранением состояния прерванной программы в области SMRAM,
    . запретом обычных прерываний,
    . восстановлением состояния прерванной задачи по выходу из режима SMM.
   Память SMRAM должна быть физически или  логически  выделенной  областью
   размером от  32  Кб  (минимальные  потребности  SMM)  до  4  Гб.  SMRAM
   располагается, начиная  с  адреса  SMIBASE  (по  умолчанию  30000h),  и
   распределяется относительно адреса SMIBASE следующим образом:
    .  FE00h-FFFFh  (3FE00h-3FFFFh)   –   область   сохранения   контекста
      (распределяется,  начиная  со  старших  адресов  по  направлению   к
      младшим). По прерыванию SMI  сохраняются  практически  все  регистры
      процессора, включая программно невидимые регистры CR1, CR2 и CR4,  а
      также скрытые регистры дескрипторов для CS, DS, ES,  FS,  GS  и  SS.
      Автоматическое сохранение не производится для регистров DR5-DR0, TR7-
      TR3 и регистров FPU;
    . 8000h (38000h) – точка входа в обработчик (SMI Handler);
    . 0-7FFFh (30000h-37fffh) – свободная область.

2.1.6. Расширение ММХ

Расширение ММХ ориентированно на мультимедийное, 2D и 3D-графическое и коммуникационное применение. Основная идея расширения MMX заключается в одновременной обработки нескольких элементов данных за одну инструкцию – так называемая технология SIMD (single Instruction – Multiple Data). Расширение ММХ использует новые типы упакованных 64-битных данных:

    . упакованные байты (Packed byte) – восемь байт;
    . упакованные слова (Packed word) – четыре слова;
    . упакованные двойные слова (Packed doubleword) – два двойных слова;
    . учетверенное слово (Quadword) – одно слово.
   Эти типы данных могут специальным образом  обрабатываться  в  регистрах

ММХ0-ММХ7, представляющих собой младшие биты стека 80-битных регистров FPU. Как и регистры FPU, эти регистры не могут использоваться для адресации памяти, совпадение регистров FPU и ММХ накладывает ограничения на чередование кодов FPU и ММХ – забота об их независимости лежит на программисте приложений ММХ.

   Еще одна особенность технологии ММХ – поддержка арифметики с насыщением

(saturating arithmetic). Ее отличие от обычной арифметики с циклическим переполнением (wraparound mode) заключается в том, что при возникновении переполнения в результате фиксируется максимальное возможное значение для используемого типа данных, а перенос игнорируется. В случае антипереполнения в результате фиксируется минимальное возможно значение. Граничные значения определяются типом (знаковые или беззнаковые) и разрядностью переменных. Такой режим вычислений актуален, например, для вычисления цветов в графике.

   В систему команд введено 57 дополнительных инструкций для одновременной

обработки нескольких единиц данных. Одновременно обрабатываемое 64-битное слово может содержать как одну единицу обработки, так и 8 однобайтных, 4 двухбайтных или 2 четырехбайтных операнда. Новые инструкции включают следующие группы:

    . арифметические  (Arithmetic  Instructions),  включающие  сложение  и
      вычитание в разных  режимах,  умножение  и  комбинацию  умножения  и
      сложения;
    . сравнение (Comparison Instructions) элементов  данных  на  равенство
      или по величине;
    . преобразование форматов (Conversion Instructions);
    . логические (Logical Instructions) – И, И-НЕ, ИЛИ и Исключающее  ИЛИ,
      выполняемые над 64-битными операндами;
    . сдвиги (Shift Instructions) – логические и арифметические;
    . пересылки данных (Data Transfer Instructions) между регистрами ММХ и
      целочисленными регистрами или памятью;
    . очистка ММХ (Empty MMX State) – установка признаков пустых регистров
      в слове тегов.
   Инструкции ММХ не влияют на флаги условий.
   Регистры ММХ, в отличии от регистров FPU,  адресуются  физически  а  не

относительно значения TOS. Более того, любая инструкция ММХ обнуляет поле TOS регистра состояния FPU. В слове тегов свободному регистру соответствует комбинация “11”, остальные комбинации указывают только на занятость регистра. После каждой операции ММХ биты тегов используемого регистра назначения обнуляются. Неиспользуемые в ММХ биты [79:64] регистров FPU заполняются единицами, так что ошибочное использование данных ММХ инструкций FPU приведет к исключению.

   Инструкции  ММХ  не  порождают  новых  исключений.  Исключения  при  их

выполнении могут возникать только при нарушении границ при обращениях к памяти (данные и инструкции). Однако если предшествующая инструкция FPU породила условие исключения, то оно произойдет при выполнении инструкции ММХ. После его обработки инструкция ММХ может быть благополучна исполнена.

   Инструкции ММХ доступны из любого режима процессора.  При  переключении

задач необходимо следить за корректностью сохранения контекста, как и при работе с FPU.

   Часто чередование годов FPU и ММХ может снизить  производительность  за

счет необходимости сохранения и восстановления весьма объемного контекста FPU.

2.1.7. Внутренний кэш

Внутренне кэширование обращений к памяти применяется в процессорах, начиная с 486-го. С кэшированием связаны новые функции процессоров, биты регистров и внешние сигналы.

   Процессоры 486 и Pentium имеют внутренний кэш первого уровня, в Pentium

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

   Строки в кэш-памяти  выделяются  только  при  чтении,  политика  записи

первых процессоров 486 – только Write Through (сквозная запись) – полностью программно-прозрачная. Более поздние модификации 486-го и все старшие процессоры позволяют переключаться на политику Write Back (обратная запись).

   Работу  кэша   рассмотрим   на   примере   четырехканального   наборно-

ассоциативного кэша процессора 486, его физическая структура приведена на рис. 3.1.7. Кэш является несекторированным – каждый бит достоверности (Valid bit) относится к целой строке, так что стока не может являться “частично достоверной”.

   Работу  внутренней   кэш-памяти   характеризуют   следующие   процессы:

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

   Любой внутренний запрос процессора на обращение к  памяти  направляется

на внутренний кэш. Теги четырех строк набора, который обслуживает данный адрес, сравниваются со старшими битами запрошенного физического адреса. Если адресуемая область представлена в строке кэш-памяти (случая попадания –cache hit), запрос на чтение обслуживается только кэш-памятью, не выходя на внешнюю шину. Запрос на запись модифицирует данную строку, и в зависимости от политики записи либо сразу выходит на внешнюю шину (при сквозной записи), либо несколько позже (при использовании алгоритма обратной записи).

   В случае промаха (Cache Miss) запрос на запись направляется  только  на

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

   Внутренний запрос  процессора  на  данные  удовлетворяется  сразу,  как

только затребованные данные считываются из ОЗУ – заполнение строки до конца может происходить параллельно с обработкой полученных данных. Если в наборе, который обслуживает данный адрес памяти, имеется свободная строка (с нулевым битом достоверности), заполнена будет она и для нее установится бит достоверности. Если свободных строк в наборе нет, будет замещена строка, к которой дольше всех не было обращений. Выбор строки для замещения выполняется на основе анализа бит LRU (Least Recently Used) по алгоритму “псевдо-LRU”. Эти биты (по три на каждый из наборов) модифицируются при каждом обращении к строке данного набора (кэш-попадании или замещении).

   Таким образом, выделение  и  замещение  строк  выполнятся  только  кэш-

промахов чтения, при промахах записи заполнение строк не производится. Если затребованная область памяти присутствует в строке внутреннего кэша, то он обслужит этот запрос. Управлять кэшированием можно только на этапе заполнения строк; кроме того, существует возможность их аннулирования – объявления недостоверными и очистка всей кэш-памяти.

   Очистка  внутренней  кэш-памяти  при  сквозной  записи  (обнуление  бит

достоверности всех строк) осуществляется внешним сигналом FLUSH# за один такт системной шины (и, конечно же, по сигналу RESET). Кроме того, имеются инструкции аннулирования INVD и WBINVD. Инструкция INVD аннулирует строки внутреннего кэша без выгрузки модифицированных строк, поэтому ее неосторожное использование при включенной политике обратной записи может привести к нарушению целостности данных в иерархической памяти. Инструкция WBINVD предварительно выгружает модифицированные строки в основную память (при сквозной записи ее действие совпадает с INVD). При обратной записи очистка кэша подразумевает и выгрузку всех модифицированных строк в основную память. Для этого, естественно, может потребоваться и значительное число тактов системной шины, необходимых для проведения всех операций записи.

   Аннулирование строк выполняется внешними схемами  –  оно  необходимо  в

системах, у которых в оперативную память запись может производить не только один процессор, а и другие контроллеры шины – процессор или периферийные контроллеры. В этом случае требуются специальные средства для поддержания согласованности данных во всех ступенях памяти – в первичной и вторичной кэш-памяти и динамического ОЗУ. Если внешний (по отношению к рассматриваемому процессору) контроллер выполняет запись в память, процессору должен быть подан сигнал AHOLD. По этому сигналу процессор немедленно отдает управление шиной адреса A[31:4], на которой внешним контроллером устанавливается адрес памяти, сопровождаемый стробом EADS#. Если адресованная память присутствует в первичном кэше, процессор аннулирует строку – сбрасывает бит достоверности этой строки (она освобождается). Аннулирование строки процессор выполняет в любом состоянии.

   Управление заполнением кэша возможно и на аппаратном и  на  программном

уровнях. Процессор позволяет кэшировать любую область физической памяти. Внешние схемы могут запрещать процессору кэшировать определенные области памяти установкой высокого уровня сигнала KEN# во время циклов доступа к этим областям памяти. Этот сигнал управляет только возможностью заполнения строк кэша из адресованной области памяти. Программно можно управлять кэшируемостью каждой страницы памяти – запрещать единичным значением бита PCD (Page Cache Disable) в таблице или каталоге страниц. Для процессоров с WB-кэшем бит PWT (Page Write Through) позволяет постранично управлять и алгоритмом записи. Общее программное управление кэшированием осуществляется посредством бит управляющего регистра CR0:CD (Cache Disable) и NW (No Write Through). Возможны следующие сочетания бит регистра:

    . CD=1, NW=1 – если после установки такого значения выполнить  очистку
      кэша, кэш будет полностью отключен. Если же перед  установкой  этого
      сочетания бит кэша был заполнен, а  очистка  не  производилась,  кэш
      превращается в “замороженную” область статической памяти;
    .  CD=1,  CW=0  –  заполнение  кэша  запрещено,  но  сквозная   запись
      разрешена. Эффект аналогичен  временному  переводу  сигнала  KEN#  в
      высокое (пассивное) состояние. Этот режим может  использоваться  для
      временного отключения кэша, после которого  возможно  его  включение
      без очистки;
    . CD=0, NW=1 – запрещенная комбинация (вызывает отказ общей защиты);
    . CD=0, NW=0 – нормальный режим работы со сквозной записью.
   Для полного запрета кэша необходимо установить CD=1 и NW=1, после  чего

выполнить очистку (Flush). Без очистки кэш будет обслуживать запросы в случае попаданий.

   Процессоры 486 и старше имеют выходные сигналы PCD и  PWT,  управляющие

работой вторичного (внешнего) кэша (они же управляют и внутренним кэшем). В циклах обращения к памяти, когда страничные преобразования не используются (например, при обращении к таблице каталогов страниц), источником сигналов являются биты PCD и PWT регистра CR3, при обращении к каталогу страниц – биты PCD и PWT из дескриптора соответствующего вхождения каталога, при обращении к самим данным – биты PCD и PWT из дескриптора страницы. Кроме того, оба этих сигнала могут принудительно устанавливаться общими битами управления кэшированием CD и NW регистра CRO.

   Режим обратной  записи  может  разрешаться  только  аппаратно  сигналом

WB/WT#, вырабатываемым внешними схемами.

   В пространстве памяти  РС  имеются  области,  для  которых  кэширование

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

   Программно   при   включенном   режиме    страничного    преобразования

кэшированием управляют биты атрибутов страниц (на уровне таблицы страниц и их каталога), биты PCD и PWT регистра CR3, и, наконец, глобально кэшированием управляют биты CD и NW регистра CR0.

   Аппаратно (сигналом KEN#) внешние схемы  могут  управлять  кэшированием

(разрешать заполнение строк) для каждого конкретного адреса обращения к физической памяти.


2.2. Процессор 80386

    Микропроцессор 80386 имеет два режима работы: режим реальных  адресов,

называемый реальным режимом, и защищенный режим. При подаче сигнала сброса или при включении питания устанавливается реальный режим, причем 80386 работает как очень быстрый 8086, но, по желанию программиста, с 32- разрядным расширением. В реальном режиме МП 80386 имеет такую же базовую архитектуру, что и МП 8086, но обеспечивает доступ к 32-разрядным регистрам. Механизм адресации, размеры памяти и обработка прерываний МП 8086 полностью совпадают с аналогичными функциями МП 80386 в реальном режиме. Единственным способом выхода из реального режима является явное переключение в защищенный режим. В защищенный режим микропроцессор 80386 входит при установке бита включения защиты (РЕ) в нулевом регистре управления (CR) с помощью команды пересылки (MOV to CR). Для совместимости с МП 80286 с целью установки бита РЕ может быть также использована команда загрузки слова состояния машины LMSW. Процессор повторно входит в реальный режим в том случае, если программа командой пересылки сбрасывает бит РЕ регистра CR.

       Полные  возможности  МП  80386  раскрываются  в  защищенном  режиме.

Программы могут исполнять переключение между процессами с целью входа в задачи, предназначенные для режима виртуального МП 8086. Каждая такая задача проявляет себя в семантике МП 8086 (т.е. в отношениях между символами и приписываемыми им значениями независимо от интерпретирующего их оборудования). Это позволяет выполнять на МП 80386 программное обеспечение для микропроцессора 8086 - прикладную программу или целую операционную систему. В то же время задачи для виртуального МП 8086 изолированы и защищены как друг от друга, так и от главной операционной системы МП 80386.

2.3. Процессор 80486

   В  1989  г.  фирма  Intel  выпустила  микропроцессор  Intel-80486.  Все

процессоры семейства 486 имеют 32-разрядную архитектуру, внутреннюю кэш- память 8 КВ со сквозной записью (у DX4 -16 КВ). Модели SX не имеют встроенного сопроцессора. Модели DX2 реализуют механизм внутреннего удвоения частоты (например, процессор 486DX2-66 устанавливается на 33- мегагерцовую системную плату), что позволяет поднять быстродействие практически в два раза, так как эффективность кэширования внутренней кэш- памяти составляет почти 90 процентов. Процессоры семейства DX4 - 486DX4- 75 и 486DX4-100 предназначены для установки на 25-ти и 33-мегагерцовые платы. По производительности они занимают нишу между DX2-66 и Pentium- 60/66, причем быстродействие компьютеров на 486DX4-100 вплотную приближается к показателям Pentium 60. Напряжение питания составляет 3,3 вольта, то есть их нельзя устанавливать на обычные системные платы. Процессор 486DX4-75 предназначен, прежде всего, для использования к компьютерам типа Notebook, а 486DX4-100 - в настольных системах.

2.4. Процессор Pentium

   В 1993 г. Intel анонсировала  о  новом  детище  –  процессоре  Pentium.

Процессор Pentium является одним из самых мощных в настоящее время. Он относится к процессорам с полным набором команд, хотя его ядро имеет риск- архитектуру. Это 64-разрядный суперскалярный процессор (то есть выполняет более одной команды за цикл), имеет 16 КВ внутренней кэш-памяти - по 8 КВ отдельно для данных и команд, встроенный сопроцессор. Несколько слов о процессорах семейства OverDrive. В основном это процессоры с внутренним удвоением частоты, предназначенные для замены процессоров SX. Что касается широко разрекламированного в свое время процессора OverDrive на основе Pentium (так называемый P24T или Pentium SX), то сроки его выпуска неоднократно срывались. Сейчас начало выпуска перенесено на последнюю четверть текущего года. Хотя на рынке представлено очень много системных плат, предназначенных для установки кроме 486 процессоров и процессора Р24Т, использовать его на этих платах, скорее всего, будет нельзя, так как никакого тестирования плат с этим процессором изготовители не проводят ввиду его отсутствия, а ориентируются при изготовлении только на опубликованную фирмой Intel спецификацию. Представители фирмы Intel заявили недавно, что существуют серьезные сомнения в работоспособности большинства этих плат в связи с недостаточной проработкой вопросов, связанных с перегревом процессоров. Поскольку при работе с существующим программным обеспечением процессоры Pentium не достигают максимального быстродействия, фирма Intel для оценки производительности своих процессоров предложила специальный индекс - iCOMP (Intel COmparative Microprocessor Performance), который, по ее мнению, более точно отражает возрастание производительности при переходе к новому поколению процессоров (некоторые из выпущенных уже моделей компьютеров на основе Pentium при выполнении определенных программ демонстрируют даже меньшее быстродействие, чем компьютеры на основе 486DX2-66, это связано как с недостатками конкретных системных плат, так и с не оптимизированностью программных кодов).


Модель Индекс iCOMP 486SX2-50 180 486DX2-50 231 486DX2-66 297 486DX4-75 319 486DX4-100 435 Pentium 60 510 Pentium 66 567 Pentium 90 735 Pentium 100 815


   Более того, именно величина производительности с использованием индекса

iCOMP используется фирмой Intel в новой системе маркировки процессоров Pentium. например, 735\90 и 815\100 для тактовой частоты 90 и 100 МГц. Кроме фирмы Intel, на рынке широко представлены другие фирмы, выпускающие клоны семейств 486 и Pentium. Фирма AMD (Advanced Micro Devices) производит 486DX-40, 486DX2-50, 486DX2-66. Процессоры 486DX2-80 и 486DX4-120 обеспечивают полную совместимость со всеми ориентированными на платформу Intel программными продуктами и такую же производительность, как и аналогичные изделия фирмы Intel (при одинаковой тактовой частоте). Кроме того, они предлагаются по более низким ценам, а процессор на 40 МГц, отсутствующий в производственной программе Intel, конкурирует с 486DX-33, превосходя его по производительности на 20 процентов при меньшей стоимости. Фирма Cyrix разработала процессоры М6 и М7 (аналоги 486SX2 и 486 0DX 2) на тактовые частоты 33 м 40 МГц, а также с удвоением частоты DX2-50 и DX2- 66. Они имеют более быстродействующую внутреннюю кэш-память 8 КВ с обратной записью и более быстрый встроенный сопроцессор. По некоторым операциям производительность выше, чем у процессоров фирмы Intel, по некоторым - несколько ниже. Соответственно, существенно различаются и результаты на разных тестирующих программах. Цены на 486 процессоры Cyrix значительно ниже, чем на Intel и AMD. По оценкам Intel, эффективность Pentium при работе с таким программным обеспечением составляет около 70 процентов, Cyrix же обещает 90, так как архитектура М1 более "рисковая": он имеет 32 регистра вместо 8 и систему их динамической переадресации для обеспечения совместимости. В то же время М1 по операциям с плавающей точкой уступает процессору фирмы Intel. Собственные варианты процессоров семейства 486 - 486SX-33,486SX-40, 486SX-80, 486DX-40 предлагает фирма UMC. Они полностью совместимы с процессорами Intel. Из-за патентных ограничений они не поставляются в США. Первый клон процессора Pentium - изделие под названием 586 - выпустила фирма NexGen. Этот 64-разрядный процессор рассчитан на работу на тактовых частотах 60 и 66 МГц, построен на основе запатентованной суперскалярной архитектуры RISC86 и полностью совместим с семейством 80х86. Напряжение питания - 3,3 вольта. Стоимость его существенно ниже, чем у Pentium. Для самых простых систем фирмой Texas Instruments выпускала дешевые, но эффективные процессоры 486DLC, которые, занимая промежуточное положение между 80386 и 80486 семейством (они выполнены в конструктиве 386 процессора, обеспечивают производительность на уровне 80486 процессора при цене 80386. Новая версия - 486SXL с увеличенной до 8 КВ внутренней кэш-памятью еще ближе приближается к характеристикам 486 семейства. Все большую популярность завоевывали риск- процессоры семейства Power PC 601 (IBM, Apple, Motorola) , которые имеют отличную от Intel архитектуру (в основе - архитектура Power фирмы IBM с внутренней кэш-памятью 32 КВ). Полагают, что именно конкуренция между Power PC и Pentium является самым существенным фактором для развития рынка процессоров и персональных компьютеров. Power PC 601 примерно в два раза дешевле, чем Pentium, потребляет в два раза меньшую мощность и превосходит Pentium по производительности, особенно по операциям с плавающей точкой. Сначала на процессоре 601 была реализована только система 6000 фирмы IBM и PowerMac фирмы Apple. В настоящее время большинство производителей компьютеров имеют свои варианты систем на базе Power PC, однако, решение об их производстве будет определяться, прежде всего, складывающейся конъюнктурой.

    Объем и сложность данных,  обрабатываемых  современными  компьютерами,

стремительно увеличивается. Новые средства связи, видео - и аудиоприложения выдвигают повышенные требования к производительности микропроцессора. ММХ - технология разработана для ускорения мультимедиа и коммуникационных программ. Она включает в себя новые команды и типы данных, что позволяет создавать приложения нового уровня. Технология основана на параллельной обработке данных. При этом сохраняется полная совместимость с существующими операционными системами и программным обеспечением. ММХ – технология – это самое значительное усовершенствование со времени создания процессора Intel- 80386, т.е. создания 32 – разрядной архитектуры.

   В процессоры семейства  Р5  (Pentium  и  Pentium  MMX)  были  добавлены

следующие команды:

    . CMPXCHG8B  (compare and exchange 8 bytes)
    . CPUID  (CPU identification)
    . RDTSC  (read time-stamp counter)
    . RDMSR  ( read model-specific register)
    . WRMSR  (write model-specific register)
    . RSM  (resume from SSM)
   Форма команды MOV, которая обращалась к регистрам тестирования, удалена

из процессоров Р5 и всех последующих. Функция регистров тестирования теперь выполняют регистры MSR (Model Specific Register). Задействован новый регистр управления CR4. В регистр EFLAGS добавлены следующие флажки:

. VIF (virtual interrupt flag)
. VIP (virtual interrupt pending)
. ID (identification flag)


Рисунок 1. Формат регистра EFLAGS в процессорах Р5

Табл1. Процессоры 70-х годов Модель 4004 8008 8080 8086 8088 Объявлено о выпуске 26252 26390 27120 28649 29007 Тактовая частота 108 КГц 108 КГц 2 МГц 5 МГц, 8 МГц, 10 МГц 5 МГц, 8 МГц Разрядность шины, бит 4 8 8 16 8 Количество транзисторов 2300 3500 6000 29000 29000 Адресуймая памьять 640 байт 16 Кбайт 64 Кбайт 1 Мб 1 Мб Краткая характеристика Первая микросхема, выполняющая арифметические вычисления Обработка цыфровых текстовых даных 10-кратный рост производительности по сравнению с 8008 10-кратный рост производительности по сравнению с 8080 Аналог процессора 8086,но 8 рязрядной шиной

Табл.2. Процессоры 80-х годов Модель 80286 Микропроцессор Intel386TM DX Микропроцессор Intel386TM SX Центральный процессор Intel486TM DX Объявлено о выпуске 29983 31337 32310 32608 Тактовая частота 6 МГц, 8 МГц, 10 МГц,12.5 МГЦ 16 МГц, 20 МГц, 25 МГц, 33 МГЦ 16 МГц, 20 МГц, 25 МГц, 33 МГЦ 25 МГц,33 МГц, 50 МГц Разрядность шины, бит 16 бит 32 бит 16 бит 32 бит Количество транзисторов 134000 275000 275000 1,5 милиона Адресуймая памьять 16 Мб 4 Гб 4 Гб 4 Гб Краткая характеристика Рост производительности в 3-6 раз

по ставнению с процессором 8086	Первая микросхема

архитектуры X86, способная обрабатывать 32-рязрядные наборы данных Недорогое устройство с возможностю 3-рязрядной обработке данных благодаря 16 битной адресной шины Встроеная Кеш-памьять 1-го уровня

Табл.3. Процессоры 90-х годов | |Микропроцессор |Процессор Pentium® |Процессор |Процессор | | |Intel486TM SX | |Pentium® Pro|Pentium® II | |Объявлено о |22/4/91 |22/3/93 |01/11/95 |07/5/97 | |выпуске | | | | | |Тактовая |16 МГц, 20 МГц,|60 МГц, 66 МГц, |150 МГц, 166|200 МГц, 233 | |частота | | |МГц, 180 |МГц, 266 МГц,| | |25 МГц, 33 МГц | |МГц, 200 МГц|300 МГц | | | |75 МГц, 90 МГц, | | | | | |100 МГц, 120 МГц, | | | | | |133 МГц, 150 МГц, | | | | | |166 МГц | | | |Разрядность |32 бит |32 бит |64 бит |64 бит | |шины | | | | | |Количество |1,185 миллиона |3,1 миллиона |5,5 |7,5 миллионов| |транзисторов | |(0,8 микрон) |миллионов | | | |(1 микрон) | |(0,6 микрон)| | |Адресуемая |4 гигабайт |4 гигабайт |64 гигабайт |64 гигабайт | |память | | | | | |Виртуальная |64 терабайт |64 терабайт |64 терабайт |64 терабайт | |память | | | | | |Краткая |Конструктивный |Пятикратный рост |Высокопроизв|Двойная | |характеристика|аналог |производительности |одительный |независимая | | |Intel486TM DX, |по сравнению с |процессор с |шина, | | |но без |процессором |применением |динамическое | | |математического|Intel486TM DX 33-МГц|архитектуры |исполнение, | | |сопроцессора |благодаря применению|динамическог|технология | | | |суперскалярной |о исполнения|Intel MMXTM | | | |архитектуры | | |

(((((((((((((((((((( АБО Камни древности: История развития процессоров x86


16.04.2004 | Версия для печати | Послать ссылку по почте | Комментарии



Процессор (CPU - central processor unit - центральный процессор) - это один из основных компонентов твоего компьютера, его можно сравнить с мозгом. Он выполняет логические и арифметические операции над различными данными. Процессор это большая интегральная схема в едином полупроводниковом кристалле. Это означает, что на куске камня сделали много-много маленьких транзисторов, которые вместе умеют правильно и быстро считать :).


Процессор, наверное, самая быстроразвивающаяся часть компьютера, с каждым годом его производительность только растет. Еще каких-то 20 лет назад люди и не могли мечтать, чтобы на их столах стоял компьютер с частотой 3ГГц.

Всевозможных процессоров существует великое множество. Мы же будет рассматривать самые популярное семейство процессоров х86, которое с 1982 года используется в персональных компьютерах. Прежде чем говорить об истории процессоров, стоит разобраться в том, из чего состоит процессор. Роль процессора В 1945 году Джорджем фон Нейманом была представлена архитектура персонального компьютера, получившая название архитектура фон Неймана. Компьютер с такой архитектурой включал в себя блок управления, арифметико-логическое устройство (АЛУ), память и устройство ввода-вывода. Именно на этой архитектуре, придуманной более 50 лет назад, основаны все современные персональные компьютеры. Процессор в этой архитектуре берет на себя функции АЛУ и блока управления, он выбирает команды из памяти, а затем по очереди исполняет их и результат записывает обратно в память. Что в твоем компьютере память (оперативная память, винчестеры, дисководы и т.д.) и устройства ввода-вывода (клавиатура, мышка, монитор и др.) и какие функции они выполняют, объяснять, я думаю, не нужно. Все устройства в таком компьютере общаются друг с другом через системную шину.

Мозг компьютера - процессор - подключен к системной шине и выполняет программу, находящуюся в памяти компьютера. Программа состоит из последовательности команд. Каждая команда имеет разный размер и включает в себя не только информацию о том, что необходимо сделать, но и данные, которые нужно обработать. Поскольку все компьютеры работают с двоичными данными (нулями и единицами), то и команды и данные представляют собой набор двоичного кода. Длина команды в семействе процессоров х86 может быть от 1 байта (8 бит) до 12 байт. Основные характеристики Для того чтобы процессор мог обрабатывать большие объемы информации, было решено передавать ему команды не по одному байту, а сразу по несколько. Так было введено понятие разрядности процессора и разрядности системной шины. Если процессор способен за раз принимать по одному байту, то он называется восьмиразрядным (или восьмибитовым), если 2 байта - шестнадцатиразрядным (16 бит), если 4 байта, то процессор называют тридцатидвухразрядным (32 бита), и самые последние процессоры могут принимать сразу по 8 байт и называются шестидесятичетырехразрядными (64 бита). Таким образом, чем больше разрядность процессора, тем больше информации он может получить и обработать за один период времени, а значит, тем он быстрее. То же самое и с разрядностью системной шины, чем больше разрядность - тем больше ее пропускная способность, тем больше информации она может доставить процессору. Причем разрядность процессора и системной шины не обязательно должны совпадать.

Кроме разрядности, процессоры отличаются набором команд. Существует некий общий набор команд, которые должны уметь выполнять все процессоры семейства х86, но каждый производитель процессоров добавляет к этому списку свои специализированные команды. Зачем это нужно? Конечно для ускорения работы! Например, существует два процессора: один умеет только складывать числа, другой умеет складывать и умножать. Дадим этим двум процессорам одну задачу: умножить 2 на 3. Первый процессор, умеющий только складывать, будет выполнять три команды (2+2+2), в то время как процессор умеющий умножать выполнит лишь одну команду (2*3), а значит быстрее выдаст результат.

И конечно, процессор характеризуется тактовой частотой. Именно этим показателем сейчас меряются производители процессоров. Тактовая частота - это интервал времени, за который процессор выполняет определенную инструкцию. Для того чтобы понять это, вернемся к операции сложения. Допустим, чтобы сложить два числа процессору нужно потратить целых три такта (выполнить три операции): выбрать команду из памяти, выполнить операцию сложения и поместить результат обратно в память. Понятно, что чем быстрее частота процессора, тем быстрее эти операции будут выполнены. Технологии производства Как было упомянуто в начале статьи, процессор состоит из огромного числа транзисторов, связанных между собой. Опять же, говоря умными словами: транзистор - это полупроводниковый элемент, предназначенный для преобразования, усиления, перенаправления электрических сигналов. То есть, транзистор получает два каких-то сигнала, и, в зависимости от того, что он получил, выдает третий сигнал. Для изготовления транзисторов в процессоре используется кремний, как самый распространенный полупроводниковый материал на Земле. Технология производства следующая: сперва создается тонкая кремниевая пластина, которая тщательно полируется и покрывается различными химическими смесями. Затем пластину в определенных местах облучают ультрафиолетом, создавая на ней специальный рисунок. При попадании ультрафиолета на пластину слой химии выгорает, открывая доступ непосредственно к кремнию. Затем на полученную пластину наносятся зоны проводимости и непроводимости, для этого используется опять же кремний, но уже поликристаллический, а также различные оксиды и металлы. Полученная схема представляет не что иное, как огромное множество транзисторов.

Это, конечно, очень грубое описание технологии производства, но я надеюсь, ты понял основные принципы. А теперь задумайся, чем сложнее становятся процессоры, чем больше команд они должны уметь выполнять, тем больше необходимо использовать транзисторов. А для того чтобы разместить большое число транзисторов на маленькой кремниевой пластине, необходимо уменьшить размер транзисторов и увеличить размер кремниевой пластины. Понятно, что размер пластины сильно увеличивать нельзя, иначе процессоры буду занимать целый стол, поэтому компании производящие процессоры стараются уменьшить размер транзистора. Последние процессоры от Интел имеют размер транзистора всего 0,09 микрон (1 микрон = 0,001 миллиметра). Кроме того, чем меньше размер транзистора, тем меньше тепла он излучает при работе. Первые процессоры Итак, разобравшись с некоторыми основными свойствами процессоров, перейдем непосредственно к истории. В далеком 1971 году корпорация Intel явила миру первый микропроцессор, прадедушку того гигагерцового монстра, что стоит у тебя в компьютере. Первый микропроцессор имел индекс 4004. Это был четырехразрядный процессор, включающий в себя всего две тысячи транзисторов. Он не получил широкого распространения из-за сильно ограниченного набора команд. Затем в 1974 году появился i8080, который выпускается и используется до сих пор в различных устройствах (например в АОНах домашних телефонов), и на основе которого был выпущен популярный компьютер ZX-Spectrum. Кстати, тогда этот процессор стоил чуть меньше 200 долларов.

Сейчас самое время вспомнить о другой компании, производящей процессоры, – Advanced Micro Devices. В 1969 году AMD открыла свою первую фабрику - Fab1. В то время компания не занималась созданием собственных процессоров, а выпускала чужие процессоры со своим логотипом. В начале 70-х годов она подписала соглашение с Intel о кросс-лицензировании и начала выпускать процессор 8080A (клон 8080).

В 1978 году появился первый 16-разрядный процессор от Интел - i8086. Он включал в себя 29 тысяч транзисторов и работал на частоте 4,77 МГц. Через год Intel разработал 8-разрядный процессор i8088, на основе которого и был выпущен первый персональный компьютер от IBM. i8088 был полностью совместим с более совершенным i8086, однако использовал 8-разрядную шину (то есть принимал по 1 байту за такт) и имел ограничение в 256 Кб памяти (а на самом деле компьютеры комплектовались лишь 16 Кб). IBM было проще и дешевле разработать и наладить выпуск компьютера на основе 8-разрядной шины, поэтому появился этот процессор с урезанной шиной. В то же время компания Compaq выпустила компьютер DeskPro на основе i8086, который имел 16-битовую архитектуру и мог работать с целым мегабайтом оперативной памяти. Компьютеры от Compaq не получили большой популярности, а вот IBM PC буквально заполонили рынок персональных компьютеров. Именно на таком IBM PC впервые заработал MS-DOS. Чуть позже появились версии процессора i8088 с частотами 8 и 10 МГц. В то время Интел охотно продавала всем лицензии на производство нового процессора. Среди компаний купивших лицензии были Fujitsu, Hitachi, NEC, Siemens и другие. Процессор i8086 умел хорошо и быстро работать с целыми числами, однако в нем почти не было команд для работы с числами с плавающей точкой (с дробными числами). И в 1980 году появился первый сопроцессор, получивший индекс i8087. Сопроцессор - это специализированный проц, работающий вместе с центральным процессором и предназначенный для выполнения операций с плавающей точкой. Такой сопроцессор был очень полезен для работы с различными электронными таблицами и математическими программами (древние аналоги Excel). Сопроцессор i8087 добавил более 60 дополнительных математических команд.

Примерно в то же время появился процессор i80186, однако дальше тестовой лаборатории компании он не вышел из-за своей несовместимости с процессором i8086 и наличия огромного количества багов. В 1982 году, Интел анонсировала новый i80286. Он расширил набор команд процессора i8086 и имел более высокую частоту (до 20МГц!). Процессор производился по 1.5 микронной технологии и содержал около 134 тысяч транзисторов. "Двойка" могла выполнять до 2,6 млн. операций в секунду, что было довольно круто и в 1984 году. IBM начала производство компьютеров IBM PC/AT. Из радикальных изменений была разработана новая модель распределения и защиты памяти, что позволило использовать память более 1Мб, для этого процессор переводился в специальный "защищенный" (protected mode) режим работы, однако он был реализован весьма сложно и имел множество недоработок. Использование защищенного режима позволило писать многозадачные программы.

В то же время AMD начала выпуск процессора 286А, который практически ничем не отличался от оригинального i80286. Революционная "трешка" В конце 1985 года все та же Интел представила новый процессор i80386. Это был большой прорыв. Во-первых, новый процессор умел работать в 32-битном режиме, а значит, был более производительный. Во-вторых, 386-й имел нормальную поддержку "защищенного" режима и расширенный набор команд, а значит, пришло время многозадачных операционных систем. И наконец, трешка умела выполнять несколько разных задач параллельно, то есть процессор мог выполнять две идущие друг за другом команды одновременно, если они не зависят друг от друга. Процессор производился по 1-микронному техпроцессу и имел более 275 тысяч транзисторов.

Ходят слухи, что 386-й проц был разработан раньше 286, но у Интел были какие-то трудности с его выпуском. Рынок был не готов к 32-битным процессорам. Всего Интел представила 3 разновидности своего процессора: 386DX (Double-word eXternal) настоящий 32-32-разрядный процессор с частотами от 12 до 33МГц. Этот процессор был дорог, и по просьбе IBM Интел выпустила упрощенный вариант - 386SX (Single-word eXternal). Он отличался от DX не только названием, но и урезанной шиной, всего 16 бит. Процессор имел те же частоты что и старший брат, но компьютеры на его основе производить было дешевле. И в октябре 1990 года появилась третья версия процессора - 386SL (Single-word external Laptop). Это был мобильный вариант процессора с частотами 20 и 25МГц. Впервые трешка была использована в компьютере Compaq DeskPro 386. Этим Compaq попросила потесниться лидера того времени IBM на рынке персональных компьютеров.

В то же время Intel отказала AMD в лицензии на выпуск 386 процессоров, разорвав заключенный ранее договор. AMD, естественно, подала в суд и победила. Таким образом, AMD могла выпускать полностью совместимые с Intel процессоры, и в 1991 появился Am386, точная копия i80386, только с более высокой тактовой частотой: до 40МГц. После этого было еще несколько судебных исков, во время которых AMD, фактически, выпускала процессоры без лицензии. И лишь в 1994 году суд запретил использовать AMD любые разработки Intel. Сразу после этого решения в 1995 году AMD и Intel подписывают новое соглашение, в котором AMD разрешается изготавливать и продавать 287, 386, и 486 процессоры.

На "трешку" впервые переносится операционная система UNIX, а также специально разрабатываются OS/2 и Windows. Конечно, не обошлось без сопроцессора, он по традиции назывался i80387. Кроме Intel сопроцессоры стали производить Texas Instruments и Cyrix. Революция номер раз Как уже упоминалось выше, ранее процессор мог выполнять команды только последовательно. В середине 80-х годов появилась деление процессоров на CISC (Complex Instruction Set Computing - процессоры со сложным набором команд) и на RISC (Reduсed Instruction Set Computing - процессоры с сокращенным набором команд). До 386 все процессоры были основаны на архитектуре CISC. Со временем разработчики заметили, что некоторые операции, содержащиеся в сложных командах, выполняются гораздо чаще, а значит, их можно выделить в отдельные короткие команды. Так «трешка» получила в свое распоряжение дополнительный набор коротких команд, которые выполнялись за один такт процессора, в то время как на предыдущих версиях процессора для этого требовалось несколько операций, а значит, много тактов.

Кроме всего прочего, в 386-ом проце был усовершенствован конвейер выполнения команд. Суть конвейерной архитектуры заключается в том, что процессор разбит на несколько блоков, которые могут работать независимо друг от друга и одновременно выполнять операции на разных ступенях конвейера. Процессор может одновременно выбирать из памяти новую команду и в то же время производить операцию с текущей. Такая система сильно ускоряет работу CPU.

Появились компиляторы, которые при компиляции оптимизировали программы специально для 386-х процессоров, определенным образом упорядочивая команды. Желание выполнять больше операций за один такт процессора, привело к появлению так называемой суперскалярной архитектуры, впервые появившейся в процессорах Pentium. Суперскалярная архитектура подразумевает, что ядро самого процессора построено с использованием нескольких независимых конвейеров и умеет выполнять несколько RISC команд за такт, а получает процессор сложные команды, соответствующие CISC архитектуре. "Четверка" Еще одна мини-революция произошла вместе с появлением 486-го процессора. В апреле 1989 года появляется i486DX. От 386 он отличался тем, что имел встроенный кэш (8 Кб), встроенный сопроцессор, мог работать в многопроцессорном (SMP) режиме, а также имел 5-ступенчатый конвейер. Новый процессор работал на частотах от 25 до 33 МГц, имел 1,2 миллиона транзисторов, и был произведен по 0.8 микронному техпроцессу.

Благодаря наличию конвейера и встроенному кэшу, производительность «четверки» была в два-три раза выше, чем у «трешки» с той же частотой. Но из-за усложнения процессора и еще не совершенной технологии производства в 1991 году Интел срочно начал выпуск процессора i486SX (16-33 МГц). Он отличался от DX тем, что не имел сопроцессора, а значит, значительно снижалась стоимость его производства. Первые процессоры SX были ничем иным как перемаркированными процессорами DX, у которых не работал сопроцессор. В то же время появились четверки от АМД: Am486DX-40 и SX-40, которые имели схожие характеристики, но были дешевле. Еще одним конкурентом стала компания Cyrix предложившая покупателям Cx486SLC/DLC. Компания продавала их как 486 процессоры, однако на самом деле это были «трешки» с увеличенной частотой и кэшем. А затем появились Cx486S/DX - которые были полные клоны i486 (только кэш был всего 2 Кб). Еще одним 386 процессором продававшимся под маркой «четверки» бы IBM 486DLC. Тогда же началась рекламная компания, идущая до сих пор: "Intel Inside" (изначально полный лозунг звучал как "Intel: The Computer Inside").

Росли скорости процессоров, и все было бы нормально, но вот однажды процессор стал работать быстрее 25 МГц и даже быстрее 33 МГц. Это принципиальные частоты, поскольку именно со скоростью 25 или 33 МГц работает системная шина, то есть теперь чтобы повысить скорость процессора, нужно было увеличить скорость системной шины. И в 1992 году появилось решение: частоту шины оставить прежней, а процессор заставить работать на вдвое большей частоте. Так появились 486SX2 и DX2 с частотами 50-66 МГц, и был придуман новый термин - коэффициент умножения. В 1994 году начинается производство новой «четверки» - DX4, имеющий утроенную частоту 75 и 100 МГц соответственно, увеличенный объем кэша (16 Кб) и изготовленной по 0.6 мкм технологии. Конкуренты тоже не дремали и выпускали свои версии "разогнанных" процессоров. АМД удалось разогнать свои CPU аж до 120 МГц.

Такое увеличение частоты процессора привело к тому, что новые чипы стали сильно греться... И на них пришлось устанавливать радиаторы, а затем кулеры. Новые процессоры из-за нового техпроцесса требовали пониженное питание, поэтому апгрейд на 486DX4 без смены матери был невозможен, и Интел стала выпускать небольшими партиями процессоры с названием "OverDrive". Это были DX4 процессоры, но они могли работать в старых системных платах. Из-за маленьких партий процессоры были дороги и не пользовались большой популярностью. Intel Pentium После выпуска 486 процессора возникла небольшая заминка, частоты процессора повышались, но ничего нового ни одна компания предложить не могла. Intel решила навести порядок с лицензиями и начала подавать в суд практически на всех крупных производителей процессоров: AMD, Cyrix, UMC.

Мир ждал 586 процессора, но Intel отказалась от такой схемы нумерации процессоров и новый процессор, вышедший в 1993 году, получил название Pentium (кодовое название P5). Он стал первым суперскалярным процессором семейства х86, и мог действительно выполнять несколько команд за один такт. P5 имел встроенный сопроцессор (причем полностью переработанный, с достаточно высокой производительностью). Первые процессоры имели частоты 60 и 66 МГц и работали с 64-битной шиной данных. P5 содержал 3,1 млн. транзисторов, и был построен на 0,8 мкм технологии. Новый процессор был дорог, и не смог завоевать рынок. Кроме того, в первых партиях процессора была обнаружена ошибка и Intel пришлось бесплатно менять уже проданные процессоры на новые. И вот год спустя, в 1994, появляется новая версия "пня" с кодовым названием P54C. Новый процессор имел частоты от 75 до 200 МГц. Он изготавливался по 0,35 мкм технологии и стоил... немногим меньше 900 долларов. Потом цена стала падать.

Занявшись производством "пней", компания полностью перестала выпускать все остальные процессоры, оставив рынок конкурентам. Конкуренты В 1994 году никому не известная компания NexGen Microsystems представила свой процессор Nx586, это был прямой конкурент Pentium'у. За неимением своих заводов их стали производить на заводах IBM. Процессор был хороший: дешевый и быстрый, но он требовал значительных изменений в структуре материнской платы, а на это мало кто мог пойти, учитывая что Интел удерживал около 80% рынка процессоров. И AMD решает купить NexGen вместе со всеми ее разработками. В то время у AMD не было собственного процессора пятого поколения, и они занимались выпуском AMD 5x86-133-P75 (быстрый 486 процессор). Обрати внимание на обозначение P75. АМД придумали сравнивать производительность своих процессоров с аналогичными разработкам Интел, так появился "P-рейтинг" (от слова Pentium).

Купив компанию NexGen, AMD разработала AMD K5 (75- 116МГц) - процессор с новой архитектурой. Внутри это был полностью RISC, получавший CISC команды. Теоретически, он мог выполнять до четырех команд за один такт. Однако процессор появился лишь в 1996 году и уже не мог полноценно конкурировать с более быстрым и известным "пнем". Компания продолжала использовать P-рейтинг, так, процессор AMD K5 PR 166 имел реальную частоту всего 116.5МГц. Cyrix тоже разрабатывали свою альтернативу пентиуму. Их проект назывался М1 (Spike). Технологически М1 мог бы конкурировать с P5 и K5, однако он разрабатывался как замена 486 процессору и из-за этого не стал популярным. Доработав процессор для установки в материнские платы для пентиумов и назвав его 6x86 Cyrix выпустили новый процессор. Он имел частоты от 80 до 150МГц, но также в маркировке использовал P-рейтинг. Cyrix и на этом не остановились и в 1995 году выпустили новый процессор - MediaGX. Новый чип отличался тем, что включал в себя контроллер памяти, графический ускоритель и интерфейс шины PCI. Конечно, такой новый процессор требовал новых материнских плат. MMX и 3DNow! В 1997 году, Intel решила добавить новые команды к процессору (получившему название P55C). До этого набор команд не менялся со времен 386-го проца. Было добавлено 57 новых команд, которые значительно позволяли ускорить обработку видео и звука. Эти команды получили название MMX (MultiMedia eXtension - мультимедийное расширение). Новые процессоры имели частоты 166, 200 и 233МГц.

Чуть позже Cyrix выпускает процессор совместимый с технологией MMX - 6x86MX. Это был самый медленный и самый дешевый процессор, совместимый с "пнем". AMD, в ответ на Pentium MMX, выпускает процессор AMD K6 (основанный на процессоре от компании NexGen и имевший поддержку MMX команд). И начиная с этого процессора АМД отказалась от использования P-рейтинга в маркировках, поскольку реальная частота стала соответствовать процессорам Интел от 166 до 233МГц. В 1998 году был анонсирован K6-2. Он отличался от K6 тем, что имел еще более высокие частоты до 550МГц, но главным отличием было наличие нового набора инструкций "3DNow!". АМД решила пойти против Интела и самостоятельно расширила список команд процессора. Это был некий аналог ММХ команд, но они были предназначены для работы с вещественными, а не целыми числами. А конкретно: для работы с 3D-графикой. Затем, с появлением новых процессоров, стали появляться: SSE (Streaming SIMD (single instruction-multiple data) Extension или MMX2), SSE2 и SSE3. AMD предложила 3DNow! Professional, Enhanced 3DNow! и т.д. Революция номер два Параллельно с Pentium Intel вела разработку принципиально нового по своей структуре процессора Pentium Pro (кодовое название P6). Он состоял из 21 млн. транзисторов, изготавливался по 0,35 мкм технологии и имел частоты от 150 до 200МГц. Революционность процессора состояла в том, что он имел RISC ядро, содержал в себе три независимых конвейера, два кэша и был оптимизирован специально для работы с 32-битным кодом. Новый процессор предназначался для серверов (в 4-процессорных конфигурациях) и рабочих станций, проводящих сложные вычисления. Однако при работе со стандартными 16-битными приложениями Pentium Pro показывал едва ли не худшую производительность, чем обычный Pentium, поэтому на рынке настольных систем он популярности не завоевал. Именно после выхода Pentium Pro начался постепенный переход с 16-битных приложений на 32-битные, который полностью не завершен до сих пор. Шестое поколение Хотя первым процессором шестого поколения на самом деле является Pentium Pro, среди обычных пользователей он не получил большого распространения из-за своей высокой стоимости. И в 1997 году Интел выпускает процессор Pentium II. По своей сути это был оптимизированный Pentium Pro с поддержкой MMX. Для удешевления стоимости производства кэш выносят на плату рядом с процессором, и все это хозяйство запихивают в картридж. Такой процессор имел частоты 233-450МГц и производился по 0.35 (0.25) мкм технологии. В это время появился AMD K6-2, о котором говорилось выше, но из-за более низких частот он не мог составить реальную конкуренцию PII. Также был начат выпуск Cyrix MII, который был дешевый, но медленный. Чуть позже появляется серверный вариант - PentiumII Xeon (усовершенствованная версия PII), стоимостью до 3 тысяч баксов. А для дешевых компьютеров был выпущен Pentium II Celeron (урезанная версия PII). Celeron уступал своему младшему собрату Pentium MMX в скорости, однако он обладал неплохими возможностями для разгона, чем, собственно, и пользовались юзеры. В 1999 году Интел представляет очередной процессор шестого поколения - Pentium III. Вначале он также выпускался в картриджах, но затем, вследствие усовершенствования техпроцесса, стал доступен в привычном для нас виде. P3 пережил четыре разных ядра: Klamath, Deschutes, Coppermine и Tualatin. И опять принес расширенный набор команд SSE. В качестве альтернативы АМД представляет K6-III. Причем новый процессор от АМД появился на три дня раньше процессора Интел. И затем в 1999 году появляется AMD Athlon (K7) и его урезанный вариант Duron. А в это время Cyrix покупается компанией VIA Technologies и прекращает любые попытки конкурировать с Интел и АМД, выпуская абсолютно никакой по производительности процессор Cyrix III. На рынке процессоров х86 остаются два основных игрока. Pentium 4 В ноябре 2000 года Интел представляет последний процессор шестого поколения Pentium 4. Ядро процессора было создано с нуля, при этом была полностью сохранена совместимость с предыдущими поколениями процессоров. По уже сложившейся традиции появились урезанные версии процессоров с маркировкой Celeron. В Pentium 4 была реализована технология Hyper-Threading. Благодаря этой технологии, в системе вместо одного физического процессора видно два "виртуальных" процессора. Операционная система думает, что работает на двухпроцессорной системе, хотя реально установлен только один процессор. Реально технология потоков существовала уже давно, и вывод ее в широкую рекламную кампанию – чисто маркетинговый ход. Таким образом Intel попыталась сохранить привычное для покупателей соотношение: Pentium 2ГГц = 2 х Pentium 1ГГц. С приближением к частотам 3ГГц прямой зависимости уже не получалось, поэтому соотношение приняло такой вид: Pentium 3ГГц + HT = ~ 3 х Pentium 1ГГц. В ответ на Pentium 4, AMD представляет новый процессор Athlon XP... и снова возвращается к использованию P-рейтинга в маркировке процессоров. Ничего революционного не происходит: растут частоты процессоров, появляются новые расширения... Все ждут перехода к 64-битам! На пути к 64-битам Переход с 16-битных на 32-битные приложения произошел почти незаметно для обычного пользователя, примерено так же произойдет и с переходом к 64-битным процессорам. Первым настоящим 64-битным CPU стал Athlon 64 (K8). AMD создала 64-битный процессор для платформы x86, в то же время Intel при разработке своего 64-битного процессора (Itanium) начала с разработки совершенно новой архитектуры IA-64. Процессоры Itanium построены не на базе архитектуры CISC или RISC, а на некой их смеси, получившей название EPIC (Explicitly Parallel Instruction Computing). Такой процессор уже изначально предназначен для выполнения нескольких операций одновременно за счет того, что в процессе компиляции компилятор должен определять какие инструкции процессор может выполнять параллельно, а какие нет. Для совместимости со "старыми" 32-битными приложениями была создана система трансляции команд, при которой 32-битные команды преобразовываются в 64-битные. При этом скорость работы в 32-битных приложениях будет ниже, но новый процессор для этого и не предназначен. В то же время Athlon 64 прекрасно работает как с 32-битными так и с 64-битными приложениями. Чуть позже появился Itanium2, более совершенная версия процессора. Тут возникает одна проблема - для 64-битного процессора требуется специальная ОС. Для Athlon 64 уже есть альфа-версии Windows XP 64 и Unix... Что будет дальше? )))))))))))))))))))))))))))))))))))))))))))))))))))))) (((((((((((((((((((((((((( АБО Часть I - от 4004 до 8088 Чем 386-й отличается от 486-го? А Pentium от Pentium Pro? Было время, когда я мог робко ответить: "Скоростью... Чем же еще?". Вспоминая это, не могу удержаться от улыбки - мои заблуждения и "полузнания" частенько бывали смешными. Например, году в 94-м узнав что "бэкашка" - 16-битный компьютер, я решил что, приходя к дяде, я играю на 486-битном (!) компьютере. И не удивительно - тогда в нашей школе словечки "триставосемьдесятшестой" и "четыреставосемьдесятшестой" были у всех на слуху и многие дети (я!) скороговоркой выпаливали их даже не понимая толком, что все это значит. Как бы то ни было, но мой период ошибок и "полузнаний" благодаря интересу к компьютерам постепенно прошел. Думаю, что я трансформировался из любознательного чайника в слегка утомленного профи. :) С самого начала я завел общую тетрадку, в которой конспектировал все то, что узнавал интересного о процессорах, операционных системах, средствах мультимедиа... Читал все подряд и без разбору: от руководства по БЕЙСИКу к моей любимой "бэкашке" до "PC Magazine" с "Компьютеррой". Именно тогда я узнал, как расшифровывается EDO и PCI, как перезагрузить компьютер одной командой MS-DOS и многое другое. Впоследствии моими источниками стали Фидо и Интернет, а журналы приняли слегка "повторительный" оттенок. Сейчас во мне появилось желание консолидировать все то, что я разузнал о процессорах Intel, и выделить самое главное в рамках этой статьи. НАЧАЛО – ВСЕГО ЛИШЬ 4 БИТА Так с чего же началась история процессоров Intel? Познакомьтесь, пожалуйста, с ее первенцем - микропроцессором 4004! Он был представлен публике 15 ноября 1971 года и сразу же вызвал интерес у компьютерного мира. В то время реализация всех функций большой ЭВМ на одном маленьком чипе казалась просто чудом. Правда, его возможности были скромными даже для тех лет. Он мог обрабатывать данные порциями по 4 бита, длина машинной команды составляла 8 бит, что позволило иметь 46 инструкций. Память была раздельной для кодов и данных, менее 1 Кб для данных и 4 Кб для команд. Внутри у него было шестнадцать 4-битных регистров и 4-х уровневый стек.

Первый микропроцессор в мире! Первый микропроцессор имел 4-битную архитектуру и состоял всего-навсего из 2300 транзисторов (в современных "пентиумах" их десятки миллионов). При этом стандартно он работал на частоте 108 КГц (отдельные экземпляры разгонялись до 740 КГц) - намного меньше мегагерца! Тогда голубой мечтой инженеров Intel было создание мегагерцового варианта, чтобы догнать по скорости IBM 1620 - дорогой, но весьма быстрый по тем временам "шкаф" эпохи 60-х. Техпроцесс по сегодняшним меркам был ужасно "толстым" - целых 10 мкм. Несмотря на то что в компьютерах этот процессор не нашел применения, он все же использовался в калькуляторах Busicom и в различных системах управления (например, уличными светофорами). Через год (1972) был выпущен 4040. Он представлял собой улучшенную версию 4004 - главным нововведением была поддержка прерываний. Кроме того, добавилось 14 новых инструкций и глубина стека была увеличена до 8 уровней, а память команд до 8 Кб. 8 БИТ – ПИОНЕРЫ 70-Х 8008 был разработан в апреле 1972 года и стал первым 8-битным микропроцессором. Он был очень похож на 4040: появившиеся 8-битные регистры и увеличенная до 16 Кб память команд - вот, пожалуй, единственные отличия. Стек по-прежнему находился внутри чипа и был ограничен 8 уровнями вложенности. Он все еще позиционировался как процессор для продвинутых калькуляторов и терминалов ввода-вывода. Однако спустя полтора года Intel создала гораздо более совершенную версию - 8080. Основные идеи архитектуры были взяты с его предшественника, 8008, - но внутренняя организация была улучшена настолько, что именно он стал стандартом де-факто для микропроцессоров того времени, а 8008 был вскоре забыт. Новый процессор имел очень развитую систему команд (78 базовых + более 200 их вариаций). Шина данных была 8-битной, а 16-разрядная адресная шина позволила ему прямо адресовать 64 Кб единой памяти, которая перестала физически разделяться на память команд и память данных. С чипом 8080 связано появление стека внешней памяти, то есть стек стал располагаться не внутри процессора, а в оперативной памяти и мог быть довольно большим. Это позволило использовать в программах алгоритмы рекурсии. "Восьмидесятка" обладала семью 8-битными регистрами (именовавшимися A - E, H и L, - причем пары BC, DE и HL могли быть скомбинированы в 16-битные регистры). Кроме того, был улучшен техпроцесс, он составил 6 мкм. Количество транзисторов: 6000. Тактовая частота достигла 2 МГц. Помимо всего прочего 8080 послужил основой первому персональному компьютеру Альтаир-8800. Выпущенный в 1975 году фирмой MITS "Альтаир" стоил $439 ($621 в сборке). Клавиатура и монитор в стандартный комплект не входили, оперативная память составляла всего 256 байт (да-да, именно байт, а не килобайт), правда позже стали продаваться блоки расширенной памяти (от 1 до 4 Кб). Тогда же фирмой Digital Research была написана операционная система CP/M (Control Program for Microcomputers), ставшей на некоторое время стандартом, и прообразом MS-DOS. Между прочим, программисты "Альтаира" умудрялись писать даже игры, а Билл Гейтс и Пол Аллен - написали интерпретатор Бейсика. Стоит упомянуть о процессоре 8085, представленном в марте 1976 года, в котором Intel добавила две новые команды для управления прерываниями и усовершенствовала конструкцию корпуса. В этом процессоре появился сброс в начальное состояние (RESET) и использовался только один источник питания +5В (микропроцессору 8080 требовалось три источника: +12В, +5В и -5В). Одно из применений, которое нашел себе 8085 - электронные весы Toledo. Однако к середине 70-х рынок 8-битных чипов был уже переполнен. По этой причине Intel оставила попытки закрепиться на нем и сделала качественный шаг в сторону 16-битных процессоров... ДЕБЮТ “ВОСЕМЬДЕСЯТ ШЕСТЫХ” 8086 (86-й) можно назвать прадедушкой всех современных "пентиумов". :) Первый 16-битный процессор, результат усиленных разработок 1976 года. Он содержал рекордное по тому времени количество транзисторов - 29 тысяч! Именно от него ведет свое начало известная на сегодня архитектура x86. Размер его регистров по сравнению с 8080 был увеличен вдвое, что в свою очередь увеличило производительность в 10 раз. Ведь раньше чтобы сложить два больших числа, не умещавшихся в 8-битном регистре, приходилось писать специальную программу на Ассемблере, а теперь это стало доступно на аппаратном уровне. Количество базовых команд процессора 8086 возросло до 92. Кроме того, размер информационной шины был увеличен до 16 разрядов, что дало возможность вдвое увеличить скорость передачи данных на процессор и с него. Размер его адресной шины тоже был существенно увеличен - до 20 бит. Это позволило 86-му иметь 1 Мб (220 байт) оперативной памяти! Ближайший его конкурент, популярный в то время процессор Z80 (1976) фирмы Zilog Corporation, мог адресовать только 64 Кб. Память 8086 была также доработана: весь мегабайт оперативной памяти не представлялся единым полем, а был разделен на 16 сегментов величиной по 64 Кб. Таким образом, память 8086 можно было представить как объединенную вместе память нескольких 8080. При этом впервые в истории микропроцессоров программа перестала работать непосредственно с одним физическим адресом ячейки памяти (как это было, например, в Z80). Вместо этого, для получения физического адреса (20 бит) процессор складывал номер сегмента (16 бит), умноженный на 16, со смещением (16 бит). В действительности 8086 вместо умножения на 16 использовал содержимое регистра так, как если бы оно имело четыре дополнительных нулевых бита (см. рисунок). Такой странный на первый взгляд метод адресации обусловлен тем, что команды и данные процессора 8086 должны были располагаться в разных частях памяти, т. е. в разных сегментах.

Рис. 1 У 86-го процессора было всего 14 регистров. Из них 4 регистра общего назначения (AX, BX, CX, DX), 2 индексных (SI, DI), 2 указательных (BP, SP), 4 сегментных (CS, SS, DS, ES), регистр следующей инструкции IP и регистр флагов (состояний процессора) FLAGS. Все они были 16-битными, причем регистры AX, BX, CX, DX состояли из пары 8-битных (AL - AH, ..., DL - DH соответственно). Несмотря на то, что они являлись частями целых 16-битных регистров, их можно было использовать как отдельные 8-битные. Благодаря этому, программы, разработанные под 8080, можно было с минимальной переделкой использовать и на 8086 процессоре. Через год после презентации 8086, Intel объявила о разработке его более дешевого аналога - 8088. Он являлся близнецом 8086: 16-битные регистры, 20 адресных линий, тот же набор команд - все то же, за исключением одного, - шина данных была уменьшена до 8 бит. Заполнение 16-битных регистров извне теперь проходило в два раза медленнее. Как следствие - меньшая производительность. Его можно назвать своего рода "86SX" (тогда, правда, Intel не обозначала так свои процессоры). Однако стоимость самого чипа заметно не уменьшилась. Так для чего же Intel понадобилось делать этот шаг? Для того, чтобы угодить фирме IBM, решившей начать производство компьютеров на базе этого процессора. Желание IBM вполне объяснимо. Восьмибитная шина данных позволяла использовать имеющиеся на рынке 8-битные микросхемы памяти и сэкономить на развертывании производства 16-битных. При этом внутренняя структура процессора оставалась по-прежнему 16-битной, что давало важные преимущества по сравнению с другими микропроцессорами и задатком на будущее. На его основе в августе 1981 года фирма IBM начала массовое производство компьютеров IBM PC. Тактовая частота первых моделей была небольшой - 4.77 МГц. Однако позже были выпущены модели Turbo-XT с частотами 8, 10 и 12 МГц и встроенным жестким диском на 20 мегабайт. Часть II - 186/286 В предыдущей части речь шла о ранних процессорах Intel: от 4-битного 4004 до основателя нынешней династии - процессора 8086. Они были важнейшими творениями в истории корпорации, и не будь их - думаю, не было бы сейчас "пентиумов" и "целеронов". В этой речь пойдет о процессорах 186 и 286 - последних полностью 16-битных процессорах Intel. Если бы каждый процессор содержал в себе столько новинок, сколько их пришлось на долю 286-го, то наверное сегодня шлем виртуальной реальности был бы такой же привычной "железкой" как мышь или клавиатура... :-) Но не буду забегать вперед, вот что последовало за 86-м чипом. В СЕМЬЕ НЕ БЕЗ... СТО ВОСЕМЬДЕСЯТ ШЕСТОГО Мало кто знает, что 186-й процессор вообще существовал, и еще меньше знают о нем что-нибудь подробное... Тем не менее, он был. Созданный в 1981 году и презентованный в первой половине 1982 года, он стал базовым для реализации турборежима. Почти сразу же был создан процессор 188 - преемник 8088. Эти процессоры сохранили базовую архитектуру процессоров 8086/8088, но содержали на кристалле контроллер прямого доступа к памяти (DMA), трехканальный таймер, генератор синхронизации и контроллер прерываний (а зря - "интегралки" народ не любит и по сей день). Кроме того, было добавлено около десятка новых команд и стартовая частота поднялась до 8 МГц. Затем вышли модели с частотами 10, 12.5, 16 и 20 МГц. Процессоры C186/C188 имели средства управления энергопотреблением, были и редкие модификации со встроенными последовательными портами. Кроме того, добавилась парочка новых команд, ускоряющих вызов функций - pusha (Push All) и popa (Pop All), - запись и чтение всех регистров процессора в стек, раньше приходилось возиться с каждым регистром отдельно. У меня сложилось впечатление, что эти процессоры были созданы не столько для компьютеров, сколько для специальных устройств управления и микроконтроллеров. Но компьютеры на их основе все же были - у меня дома лежит журнал, привезенный в 1983 году мамой из Финляндии, с рекламой компьютеров Nokia на базе 186-го. :-) Правда широкого распространения эти компьютеры не получили. Видимо причины этого кроются в отсутствии качественных нововведений, относительной дороговизне чипа и в замаячившем на горизонте следующем процессоре Intel. Кроме того, встроенная периферия 186-го имела программный интерфейс несовместимый с IBM PC, т. е. для апгрейда писишки он не годился. Одним словом 186-й оказался тупиковой ветвью. 286-Й: ЕЩЕ НЕ СЕРВЕР, НО УЖЕ НЕ "БЭКАШКА" В 1982 году фирма Intel сделала крупный шаг в разработке новых идей: ее следующий 16-битный чип стал первой попыткой создать процессор, который мог бы аппаратно реализовывать многозадачность. Для этого был придуман защищенный режим. Ведь основная проблема многозадачности была в том, что любые программы, работавшие под управлением прежних процессоров, имели полную свободу действий - могли по любому адресу памяти записать все что угодно. Операционная система и другие приложения при этом были не защищены: в любой момент глючная программа могла затереть эти места в памяти и компьютер, скорее всего бы просто повис, даже не выдав знакомой таблички о выполнении "недопустимой операции". Были попытки создать операционную систему, которая сама бы контролировала все действия программ. Но для этого пришлось отказаться от компиляции приложений в готовые машинные коды - они стали интерпретируемыми, а производительность упала раз в двадцать. Стало ясно, что без аппаратной акселерации контроля, т. е. без защищенного режима процессора не обойтись. Суть работы защищенного режима была проста. Все свои команды процессор выполнял точно так же как и в реальном режиме, но программистам пришлось использовать понятие "логического адреса". Логический адрес состоял из 32 бит: селектора (16 бит) и смещения (16 бит). При этом в сегментных регистрах (CS, DS, SS, ES) теперь хранился не сегмент, а селектор. Селектор - это индекс в таблице дескрипторов (рис. 2). Запись в таблице дескрипторов содержала всю необходимую информацию о некотором блоке памяти: его базовый адрес, размер всего блока, его тип (код или данные) и сведения о приоритете программы-владельца. Таким образом, каждый дескриптор полностью описывал один сегмент программы. Размер этого дескриптора был одинаков как для 286-х, так и для 386-х машин - 64 бита или 8 байт, но у 286-го старшие 16 бит не использовались.

Рис. 2 Существовала одна глобальная и несколько локальных таблиц. Глобальная присутствовала всегда и хранила информацию о сегментах операционной системы. Локальные таблицы были для всех остальных программ. Управление памятью в защищенном режиме всегда было связано с конкретной операционной системой и ее версией. В OS/2 2.0 каждой программе были доступны глобальная и локальная (своя) таблицы дескрипторов. Всем приложениям в Windows 3.0 давалась одна общая локальная таблица. Система защиты 286-го процессора позволила разбить всю память и программы на 4 типа (кольца защиты - рис. 3). При этом программа работала только со своими блоками. Если программа обращалась к чужому сегменту памяти, то происходило прерывание с выдачей сообщения об ошибке. Ошибка также возникала, если программа пыталась считать или записать в свой собственный сегмент кода.

Рис. 3 Теперь о параметрах 286-го чипа. 134 000 транзисторов, техпроцесс 1.5 мкм, 68 контактных ножек, 16-битная шина данных, 24-битная адресная шина (до 16 Мб физической памяти), 19 "видимых" регистров (к 14 регистрам 86-го процессора добавилось еще 5, необходимых для реализации защищенного режима) и 6 "невидимых" (у программиста не было к ним никакого доступа, а нужны они были для эффективной работы самого процессора). Максимальный размер виртуальной памяти (файл подкачки) составил 1008 Мб (хотя на практике "двушка" никогда не имела таких больших дисков). Стартовая частота - 6 МГц, затем были созданы модели с частотами от 10 до 25 МГц. Помимо количественного повышения быстродействия было и качественное: некоторые операции 286-й научился выполнять за меньшое число тактов. Процессор 286 с тактовой частотой 12.5 МГц работал примерно в 6 раз быстрее, чем 8086 с частотой 4.77 МГц. Команда push научилась сохранять в стеке константы. Шины адреса и данных теперь стали раздельными, а не совмещенными на одном множестве ножек. Как и в 8086-м новый процессор имел 6-байтную очередь команд - что-то вроде прообраза будущих конвейеров. Команды в эту очередь загружались в последовательном порядке и параллельно с производимыми вычислениями. Несмотря на то, что 286-й процессор был окончательно представлен уже в 1982 году, производство компьютеров на его основе началось только в 1984-м. Новые компьютеры стали называться IBM PC AT (Advanced Technology). Выпуск этой модели подхлестнул интерес и к прежней IBM PC, способствуя популяризации архитектуры x86 в целом. Появилось несколько журналов, посвященных исключительно писишкам, магазинов, торгующих программным обеспечением. Словосочетание "персональный компьютер" становилось обыденным и больше не резало слух. Для меня, поклонника группы "Queen", 1984-й год ассоциируется со словами "I Want To Break Free". :-) Что ж, пожалуй, для писишек этот год стал и впрямь "освободительным". От диктата больших машин и насмешек их приверженцев. К сожалению, защищенный режим 286-го обладал и недостатками: • Несмотря на возможность адресовать 16 Мб памяти, максимальный размер сегмента остался по-прежнему равным 64 Кб, затрудняя программистам работу с большими массивами данных. • Режим работы с виртуальной памятью не был толком продуман - отсутствовал "прозрачный" для приложений способ перемещения данных операционной системой из памяти на жесткий диск - для реализации этого программам приходилось прибегать к разным ухищрениям вроде "запирания" и "отпирания" указателей на блок памяти. • В защищенном режиме отсутствовала совместимость с программами, написанными для реального режима MS-DOS. • Переход из реального режима в защищенный был односторонним, для обратного перехода требовалась перезагрузка компьютера. Таким образом, первый многозадачный "блинчик" у Intel получился слегка "комом" и 286-е компьютеры обычно использовались только в качестве быстрых аналогов 86-го. Сумела ли Intel исправить эти ошибки и подарить миру персоналок истинную многозадачность? Да, в следующем процессоре. Часть III - 386 17 октября 1985 года фирма Intel представила свой первый 32-битный процессор, обладавший уникальным преимуществом: в отличие от своих конкурентов, разработанных к тому времени компанией Motorola, он был аппаратно совместим с огромным парком 86-х и 286-х машин. Это был Intel 80386, сердце легендарной "трешки". Не сочтите меня стариком, но я люблю 386-е машины, люблю за все то, что они дали. Ведь именно на трешке я увидел Wolf3D и Warcraft. Познал миры легендарной Кирандии, заделался магнатом в Transport Tycoon и написал первые программки на Паскале... Даже Windows я впервые увидел на трешке (приняв ее за графический редактор со встроенным калькулятором :). 80386 - едва ли не самый революционный процессор, редко когда в чипах Intel появлялось столько новшеств сразу. КРАТКИЙ ОБЗОР Обладая полностью 32-битной архитектурой, 386-й процессор адресовал до 4 Гб (232 байт) физической оперативной памяти и до 64 Тб виртуальной. Он состоял из 275 000 транзисторов и изготавливался на основе технологии CHMOS III фирмы Intel, вобравшей в себя быстродействие технологии HMOS и низкое энергопотребление CMOS технологии. Толщина транзисторных элементов, как и у 286-го, составляла 1.5 мкм (в дальнейшем - 1 мкм), а число ножек увеличилось с 68 до 132. Новый процессор стал мощнее своих предшественников. Умножение двух 16-битных чисел командой MUL R16 выполнялось, в зависимости от числа единичных разрядов, за 9-22 такта. Для сравнения: то же у 286-го срабатывало всегда за 21 такт, а у 86-го аж за 118-133 такта! Математический сопроцессор 80387 не остался в стороне и тоже был оптимизирован - если 287-й выполнял команду извлечение корня FSQRT за 180-186 тактов, то 387-й чип справлялся с этой задачей уже за 122-129 тактов. В среднем количество тактов, необходимых для выполнения команд, уменьшилось в полтора-два раза в сравнении с 286-м и в 3-8 раз в сравнении с оригинальным IBM PC. Просмотр всего содержимого энциклопедии Britannica с применением 386-го занимал 12,5 секунд (286-у нужно было 45). Кроме того, добавилось несколько продвинутых команд сопроцессора, например вычисление синуса, косинуса и логарифмов. Первые процессоры стали работать с наивысшей частотой, достигнутой к тому времени для 286-го - 16 МГц, затем появилась 20 МГц модель (16 февраля 1987), а к середине 1988 года предел был отодвинут до 25 МГц (4 апреля 1988). В начале 90-х популярность приобрели 33 МГц модели (10 апреля 1989), кстати, все 386-е работали на частоте материнской платы, никаких коэффициентов умножения! Набор регистров в процессоре был существенно изменен - почти все 16-битные регистры были заменены их 32-битными аналогами. Новые регистры именовались как и прежде, только с приставкой "E" (Extended) в начале слова. Так, вместо регистров общего назначения AX, BX, CX, DX появились регистры EAX, EBX, ECX, EDX, младшие части которых (левые 16 бит) использовались 86/286-инструкциями в качестве прежних регистров. Вместо 16-битных IP (указатель следующей инструкции) и FLAGS (флаги процессора) - соответственно 32-битные регистры EIP и EFLAGS. Вместо SI/DI (индексы источника/назначения) - ESI/EDI. Словом, почти все прежние регистры заменились новыми, младшая часть которых использовалась по-старому. В новом процессоре 16-битными остались только сегментные регистры (CS, SS, DS, ES) и регистр локальной таблицы дескрипторов (LDTR). Кстати, к сегментным регистрам добавилась парочка новых, поначалу редко используемых - GS и FS. Напомню, что регистр CS указывает на начало сегмента кодов (исполняемый код программы), регистр SS - на "дно" стека, а остальные 4 регистра (DS, ES, GS, FS) - на разные сегменты данных (там хранятся переменные, массивы, в общем, любые данные программы). Между прочим Intel надолго осталась верна набору регистров 386-го, включая сопроцессор, и при создании следующих моделей (486, Pentium) ограничилась несущественным расширением (TR3-TR5 регистры, появившиеся в 486-м, управляющий регистр CR4, появившийся в Pentium). Все эти дополнительные регистры предназначались не столько для программ-приложений, сколько для операционных систем и средств отладки, т. е. выгоды от них в играх и Windows-приложениях не было никакой. Следующее увеличение числа регистров, полезных для самих приложений, произойдет, по сути дела, только в процессоре Pentium III (1999). ГЛАВНЫЕ "ИЗЮМИНКИ" Защищенный режим 386-го был существенно доработан. Именно тогда, 16 лет назад, Intel заложила фундамент успеха Windows 95. Модель 286-го в целом была сохранена, но добавилось три очень важных аспекта: сколь угодно большой размер сегмента, страничный режим адресации (Page Addressing) и режим виртуального 8086 (Virtual 8086 Mode). Все эти аспекты используются операционными системами Windows 95/NT и без них они работать не смогут. Кроме того, 386-й "научился" возвращаться обратно из защищенного режима в реальный без перезагрузки компьютера (в 286-м переход в защищенный режим был односторонним). Снятие ограничения на размер сегмента (вообще-то он ограничен четырьмя гигабайтами, но по-моему для компьютерного ОЗУ это почти бесконечность) тесно связано со страничной организацией памяти. Без использования страниц ограничение на размер остается, правда уже не в 64 Кб как у 86/286, а в 1 Мб. Это объясняется тем, что для указания размера сегмента в таблице дескрипторов отведено 20 бит (у 286-го 16 бит). 220 дает нам 1 Мб комбинаций. Но в дескрипторе сегмента 386-й машины появился очень интересный бит - бит гранулярности. При его включении процессор начинает понимать размер сегмента не в байтах, а в страницах по 4 Кб (4096 байт). Минимальный размер сегмента в этом случае будет равен 4 Кб (1 * 4 Кб), а максимальный - 4 Гб (1 Мб * 4 Кб). Ранее я говорил о принципах работы программ в защищенном режиме 286-го процессора. Не стоит заново все пересказывать, детали вы можете увидеть в предыдущей части, приведу только главные отличия. Вначале у трешки все почти так же - только смещение и базовый адрес в дескрипторе стали 32-битными, соответственно и результат их суммы - 32-битное число. Единственное что осталось 16-битным - селектор. Но вот дальше... Сумма базового адреса и смещения еще не физический адрес! Старшие 10 бит этой суммы, которая называется линейным адресом, задают индекс таблицы страниц в каталоге таблиц, следующие 10 бит - индекс страницы в найденной таблице страниц, оставшиеся 12 бит - смещение относительно начала этой страницы. И только когда процессор найдет в каталоге нужную таблицу, а в ней нужную страницу (потерпите, немного осталось :) и прибавит к полученному адресу смещение, он получит физический адрес ячейки памяти.

Рис. 4 Мудрено? Для чего такие сложности? Для реализации замечательной вещи: теперь процессор мог динамически менять расположение данных в памяти при постоянном логическом адресе! Программа, например WinWord, могла работать со своими документами и даже не подозревать, что секунду назад данные физически были в этих ячейках памяти, а сейчас процессор переместил их в другие (ему могла приказать операционная система - Windows частенько "перетасовывает" содержимое памяти). Логические адреса, с которыми оперирует WinWord, остаются постоянными! Операционная система может переместить часть данных в файл подкачки, сбросив при этом "бит присутствия" в дескрипторе сегмента. Если программа захочет обратиться к засвопленной странице, то процессор по нулевому значению бита присутствия обнаружит ее отсутствие в памяти и выработает соответствующее прерывание. Святая обязанность любой операционной системы на него среагировать и восстановить эти данные в какой-нибудь области памяти, после чего возобновить работу прерванной программы. При этом логические адреса не меняются, в этом вся соль! С режимом виртуального 8086 все просто - он наконец-то позволил в защищенном режиме запускать программы, написанные для реального режима, т. е. для MS-DOS. При этом в многозадачной среде любое количество MS-DOS приложений могло работать одновременно на одном компьютере, причем каждая программка думала, что она работает в одиночку, т. е. процессор обслуживает только ее. При запуске любой MS-DOS программы Windows 95/98 создает для нее виртуальную машину MS-DOS (DOS Virtual Machine) - задачу, использующую режим виртуального 8086. Кстати этот режим не запрещает DOS-приложениям использовать новые 32-битные регистры 386-го, за исключением тех, что необходимы для корректной работы самой системы защиты процессора и операционной системы. Модель защищенного режима трешки без изменений работает и по сей день. Современные Pentium 4 и Athlon не содержат в режимах адресации практически ничего нового. Появившиеся в Pentium странички памяти по 4 Мб и 36-битная адресация в Pentium Pro не в счет, ибо эти возможности в домашних персоналках не применяются. По крайней мере Windows 98/NT их не использует точно. Поскольку Windows ME/2000 могут (по крайней мере формально) работать и на обычном (первом) Pentium, где этих расширений просто нет, то полагаю они тоже их не используют. Работающие у вас дома "окошки" наверняка обходятся сводом правил, придуманным Intel еще в далеком 1985 году... ЕЩЕ КОЕ-ЧТО... Но и на солнце не без пятен: история 386-го была омрачена найденной в нем ошибкой. Процессор неправильно выполнял некоторые операции с 32-битными числами, в частности, умножение. Из-за отсутствия 32-битных операционных систем, и как следствие приложений, ошибку обнаружили только через полтора года, после того как появились соответствующие программы. Intel моментально устранила ошибку и микросхемы, изготовленные после апреля 1987 года ее не имели, а уже вышедшие чипы были промаркированы "только для 16-битных операций". При попытке установить на такой компьютер Windows 95, Setup выдает сообщение об ошибке "B1". Отличительный признак исправленных процессоров - все они маркируются двойным символом "сигма". И напоследок кое-что о процессоре 386SX. Он был представлен 16 июня 1988 года как недорогая альтернатива полноценному 80386, который с этого момента стал называться 386DX. Программно 386SX на 100% совместим со старшим братом - без замера производительности разницу между ними не обнаружить. Отличий было всего два: сокращенная до 16 бит шина данных и до 24 бит адресная шина (в DX обе шины 32-битные). Заполнение 32-битных регистров данными из оперативной памяти в SX-версии происходило вдвое медленнее. Такая же потеря скорости наблюдалась и при записи содержимого 32-битного регистра в память. Но на скорость выполнения самих арифметических операций сокращение шины не влияло. Т. е. умножение или деление одного и того же числа, если оно уже находилось в регистре процессора, происходило в SX и DX моделях за одинаковое число тактов. В результате в 16-битных приложениях 386SX отставал от старшего брата всего на 10-20%, но в 32-битных разница была существеннее - 50-70%. Поэтому Windows 95 не имело большого смысла ставить на 386SX, в то время как на DX-версию, думаю, это было вполне оправдано (в случае 8 или более мегабайт памяти). Кроме того, в SX-версию нельзя было добавить свыше 16 Мб оперативной памяти - следствие урезанной до 24 бит адресной шины. Впрочем, это несущественно, кто из нас видел трешку с большей памятью? :-) Часть IV - 486 10 апреля 1989 года Intel познакомила общественность со своим новым процессором i486. "Четверка" стала едва ли не самым важным процессором в истории ПК, наверное даже Pentium'у не выпадала такая честь. Догадываетесь о чем я? "Мультимедиа". Волшебное слово, как по мановению палочки обернувшее скучную машину в уникальный центр развлечения, досуга и творчества. А появление мультимедиа стало по-настоящему возможным только благодаря четверкам. Они привлекли внимание миллионов, унося их в миры Myst, Doom, Warcraft. Когда лет шесть назад я увидел на CD-ROM диске мультимедиа-энциклопедию динозавров с приятными на слух комментариями гида и видеороликами (!), я был пленен "персоналками" окончательно... Что же послужило причиной такого прорыва, превратившего очередной, по сути, бизнес-процессор в предвестника эры мультимедиа? Я постараюсь ответить на это и рассказать о ключевых достоинствах четверки. Тех "изюминках", которые отличают ее от предшественника, 386-го процессора. Дело в том, что в поисках способа повышения производительности наиболее передового в те годы 386DX-33, инженеры Intel столкнулись с серьезными проблемами. Традиционный путь уже не годился. Существовавшая в конце 80-х технология производства чипов не позволяла плотнее размещать транзисторы на кристалле. Это создавало трудности с теплоотводом при повышении частоты. Еще труднее было повысить частоту материнской платы. Нужны были качественные (и очень дорогие) модули памяти, чтобы работа на частотах свыше 33 МГц была стабильной. К примеру, самые дешевые мегабайтные модули памяти (SIMM 30-pin 100-ns) стоили тогда порядка $400. С другой стороны, оставаясь в рамках традиционной CISC-архитектуры, было трудно уменьшать количество тактов, необходимых для выполнения той или иной операции. Эти и другие проблемы не давали двигаться обычным путем, просто наращивая частоту процессора и материнской платы. Но решения были найдены. Коротко их можно описать шестью словами: кэш, конвейер, встроенный сопроцессор, коэффициент умножения. Эти термины на 95% описывают достоинства 486-го. Остальные 5% это пара-тройка мелких нововведений, о которых я упомяну позднее. Поехали? КЭШ Немного теории: кэш-память (cache, кэш) располагается "между" процессором и оперативной памятью, и, при обращении процессора к памяти, поиск нужных данных сначала производится в ней. Поскольку время доступа к кэшу гораздо меньше, чем к обычной памяти, а в большинстве случаев необходимые данные содержаться в кэше, среднее время доступа к памяти уменьшается. Если выключить в BIOS'е Pentium'а оба кэша, то по скорости получится... 386-й. Современные Pentium III или Athlon без обоих кэшей смогут обогнать разве что 486DX2-66. Наличие кэша оказывает огромное влияние на производительность, почти принципиальное. В 486-м процессоре появился внутренний кэш объемом 8 Кб, единый для данных и инструкций. Кэш имел 4-канальную наборно-ассоциативную архитектуру и работал на уровне физических адресов памяти. Он содержал 128 наборов по 4 строки размером по 16 байт. Кэш умел работать только со строками, и если процессор требовал какой-нибудь байт, отсутствующий в кэше, то кэш-контроллер загружал из ОЗУ всю 16-байтную строку, содержащую необходимый байт. Выбор строки для замещения производился по алгоритму "псевдо-LRU", для этого каждому набору строк отводилось по 3 бита статистики использования. Алгоритм LRU (Least Recently Used) основан на поиске элемента, к которому дольше всего не было обращений. При каждом обращении к строке кэш-контроллер увеличивал на 1 соответствующий счетчик LRU. Приставка "псевдо" означает лишь несовершенство механизма работы, ведь под счетчик отводилось всего 3 бита, что дает нам 8 положений счетчика (23). После 8-го обращения к строке счетчик обнулится и соответствующая строка из самой "необходимой" станет самой "не необходимой" и будет прямым кандидатом на замещение. Кэш первых 486-х работал в режиме Write Through (сквозная запись). В этом случае при записи данных тратилось дополнительное время на их запись во внешнюю память (даже если они присутствовали в кэше). Эта политика напоминает работу дискового кэша SmartDrive с настройками по умолчанию, когда ускоряется только чтение данных, а запись не ускоряется. Последовавшие процессоры (некоторые 486DX2 и все 486DX4) позволяли переключаться на политику Write Back. В этом варианте запись данных, если их старая копия уже присутствовала в кэше, производилась только в кэш, а запись в ОЗУ откладывалась. Процессор i486 мог использовать и внешний кэш (вне микросхемы процессора). Именно 486-у мы обязаны появлением 2-х уровнего кэширования: кэш, интегрированный в ядро процессора, стал называться кэшем первого уровня (L1), а кэш наружный, находящийся на материнской плате, - кэшем второго уровня (L2). Очевидно, что кэш первого уровня функционирует быстрее второго. Даже если они оба работают на частоте процессора, потому что при чтении данных из кэша L2 процессор все равно вынужден делать несколько пустых тактов, хотя и меньше, чем при чтении из ОЗУ. Объем кэша L2 в зависимости от материнской платы составлял от 256 до 512 Кб. В системных платах 386-х моделей наружный кэш обычно не превышал 128 Кб (типичный объем - 64 Кб). В марте 1994-го Intel, выпустив 486DX4, увеличила объем кэша L1 до 16 Кб (он по-прежнему оставался общим для данных и для команд). Что отрицательного несло в себе появление внутреннего кэша? Резкое увеличение числа элементов (486-й стал первым микропроцессором, перешагнувшим некий рубеж, - он содержал более миллиона транзисторов, и около половины их приходилось на долю кэша) повлекло за собой сильный процент брака, и как следствие высокие цены. Не только у Intel, но и у конкурентов (AMD, Cyrix). И лишь появление Pentium'а привело к падению цен на 486-е. Вторым минусом было увеличение энергопотребления и повышение температуры процессора. Именно это вынудило Intel применить новый подход - впервые на процессоры стали устанавливать радиаторы с активным охлаждением. КОНВЕЙЕР Конвейер - это специальное устройство, входящее в состав процессора, и реализующее такой метод обработки команд, при котором их выполнение разбивается на несколько этапов. В чем преимущество? Представьте себе часовой завод, на котором работает только один мастер, зато на все руки. Он сможет за час из пружинок и винтиков собрать работающие часы. Это и будет одна машинная команда, выполненная в течение часа. А теперь представьте, что вместо одного мастера - 5 узких специалистов. Никто из них не в состоянии в одиночку собрать часы. Но первый умеет вытачивать корпус, второй - стрелки, третий - нанизывать детали на ось, и т. д. Главное, что они работают параллельно и без задержек: сделал детальку, передал другому, берись за следующую. К тому же выполнять простые операции легче, а значит быстрее, чем сложные. В итоге эти спецы за час совместной работы изготовят не 5, а 10 или даже более часов (в нашем случае - машинных команд). Этот принцип не нов и был открыт еще пару веков назад - вспомните мануфактуры, расцвет массового производства. Помимо ускорения вычислений конвейеризация дает еще одно преимущество: каждый мини-блок, выполняющий часть операции, представляет собой менее сложное устройство, чем один исполнительный супер-блок, а значит он менее чувствителен к повышению частоты. Разбиение сложного вычислительного модуля на мелкие позволяет эффективнее разгонять процессор (это особенно актуально в свете нынешнего Pentium 4 с его 20-ступенчатым конвейером). Конвейер процессора i486 имел 5 ступеней (рис. 5). Не буду описывать назначение каждой ступени - на рисунке все показано. Справедливости ради стоит отметить, что Intel не изобретала конвейеры, по крайней мере, не была пионером в этой области: первые процессоры с полностью конвейеризированной архитектурой появились раньше. Например, процессор Z-80000 с 6-ступенчатым конвейером был анонсирован еще в начале 1986-го, но по некоторым причинам он не прижился в персональных компьютерах (впрочем, как и вся линейка процессоров Zilog).

Рис. 5 ВСТРОЕННЫЙ СОПРОЦЕССОР Сопроцессор (FPU, Floating-Point Unit) помогает основному процессору выполнять математические операции над вещественными числами. Начиная с 8086-го чипа сопроцессор представлял собой отдельную микросхему, имеющую то же название, что и центральный процессор, только с семеркой на конце: 8087, 80287, 80387. Микросхема 486-го стала первой микросхемой Intel со встроенным FPU. В состав процессора был введен математический сопроцессор, программно совместимый с сопроцессором 387. Процессор 486SX, появившийся 22 апреля 1991 года, отличался тем, что не имел встроенного сопроцессора. Любопытно, но первые 486SX представляли собой отбраковку полноценных 486, с неисправным блоком FPU, который был специальным образом заблокирован для использования. Полные 486 стали называться 486DX (по аналогии с серией 386, только там разница между SX и DX версиями была в разрядностях шин данных и адреса). Интересно заметить, что существовал 487SX процессор - по сути, аналог 486DX (CPU + FPU), устанавливаемый в гнездо сопроцессора материнской платы 486SX, и отключающий "основной" SX-процессор. КОЭФФИЦИЕНТ УМНОЖЕНИЯ Все знают, что коэффициент умножения - это число на которое надо умножить тактовую частоту материнской платы, чтобы получить частоту работы самого процессора. Но к 486-м, появившимся в 1989 году, он не имел отношения. Эти процессоры работали на частоте системной платы, также как и 386-е. Первым процессором, функционирующим на удвоенной частоте материнской платы, стал i486DX2-50, объявленный 3 марта 1992 года. Коэффициент умножения - одно из важнейших улучшений и оно тесно переплетается с внутренним кэшем. Без кэша вводить коэффициент почти бессмысленно. Именно появление i486DX2-50 и материнских плат, поддерживающих разные частоты шины и коэффициенты умножения, заложило основу для практического "разгона" процессоров.

ЭТИ ВАЖНЫЕ МЕЛОЧИ... В общем-то, их не так уж и мало. Во-первых, появилось 5 новых команд: XADD (обычный ADD, только шиворот-навыворот - результат суммы помещается во второй операнд, а не в первый), BSWAP (перестановка байт из порядка младший-старший в порядок старший-младший), INVD (очистка внутреннего кэша без выгрузки строк, опасно при политике Write Back), WBINVD (очистка внутреннего кэша с выгрузкой всех модифицированных строк, может потребовать значительное число тактов), CMPXCHG (сравнение и обмен). Во-вторых, была повышена производительности шины данных - введены пакетные циклы (burst), позволяющие передавать очередное слово в каждом такте шины (а не через такт, как в обычном режиме). Кроме того, расширены средства тестирования - введены регистры TR3, TR4, TR5 для тестирования внутреннего кэша. Увеличена очередь команд до 16 байт. Добавлена защита страниц памяти на уровне супервизора. Введены: буферы отложенной записи, функции контроля выравнивания операндов, ZIF-сокеты (в более поздних моделях) и возможность аппаратного тестирования процессора извне по интерфейсу JTAG (тоже не у всех моделей). Вот, пожалуй, и все... Часть V - Pentium В завершающей части я расскажу о самом известном процессоре Intel - "Первом Пентиуме". Мне кажется, этот процессор для Intel стал тем же, что и "Bohemian Rhapsody" для Queen - волшебной ракетой, что вывела фирму на орбиту известности и миллиардных оборотов... Сегодня "Первый Пентиум" - уже история. Но согласитесь, его магическая аура присутствует по-прежнему. Благодаря чему же он так прославился? Что нового привнес в нашу жизнь? Отчего это слово в последние годы стало нарицательным, порой - даже синонимом слова "компьютер"? Знаю, об этом можно писать целую книгу, но моя цель чуточку проще: я попробую изложить в рамках статьи только самую суть... РОЖДЕНИЕ Когда в июне 1989 года Винод Дэм, инженер фирмы Intel, делал первые "наброски" Pentium'а, он и не подозревал, насколько сложной окажется предстоящая работа и что именно этот продукт станет одним из главных достижений Intel. Вскоре проект был разбит на несколько этапов. Для тестирования была придумана технология, позволившая имитировать функционирование еще не существовавшего процессора. Достигали это применением специальных устройств-блоков, объединенных на 14 платах с помощью кабелей. Когда первое тестирование было закончено, а основные ошибки - исправлены, макет начал работать. В разработке и тестирования Pentium'а принимали участие не только специалисты Intel, но и сторонние разработчики, что, наверное, немало способствовало общему успеху. В конце 1991 года макет процессора был завершен, и инженеры смогли запустить на нем программное обеспечение. Естественно, ни о какой скорости пока не было и речи: макет функционировал в полном объеме, но не быстрее калькулятора! Работа продолжалась, и когда все архитектурные тонкости уже определились, настала очередь проектировщиков: они принялись под микроскопом изучать топологию процессора и прохождение сигналов с целью ее оптимизации. Эта работа была завершена где-то к февралю 1992 года, после чего началось тестирование опытной партии. В апреле 1992 года наконец-то приняли решение о промышленном освоении. Индустриальной базой стала 5-я Орегонская фабрика, лучшая на тот момент. Примерно через год более 3 млн. транзисторов окончательно перенесли на шаблоны и запустили цикл производства. 4-х летняя история создания процессора Pentium завершилось его презентацией 22 марта 1993 года. СУПЕРСКАЛЯРНОСТЬ Давайте заглянем в недра - чего же там нового? Помимо традиционного повышения тактовой частоты и сокращения времени (числа тактов) выполнения инструкций, есть одно свойство, наиболее качественно отличающее его от предшественника. В главе об особенностях 486-го я красной нитью выделял появление конвейера - устройства, разбивающего процесс выполнения команды на несколько этапов. Напомню этапы конвейера 486-го: выборка команды, ее декодирование, вычисление адресов операндов, выполнение и, наконец, сохранение результата. Оказывается, конвейер Pentium содержит эти же этапы, но самих конвейеров прибавилось! Новая микросхема стала первым процессором Intel, способным выполнять за такт СРАЗУ ДВЕ инструкции. Архитектура, при которой процессор имеет несколько конвейеров, получила название "суперскалярной", в противовес старой, одноконвейерной, т.е. "скалярной" архитектуре.

Рис. 6 Pentium имеет 2 целочисленных конвейера - u и v (рис. 6). Правда, они не равноценны: главным считается u-конвейер, он поддерживает весь набор инструкций и работает на полную катушку. v-конвейер имеет некоторые ограничения и лишь помогает основному. Он умеет обрабатывать только "простые" инструкции - целочисленная арифметика, логические команды, команды перехода... Вдобавок, он не может работать, если его действия зависят от результата выполнения команды, идущей по u-конвейеру. Условий, по которым определяется возможность "спаривания" инструкций, около десяти (если интересно - пишите, я пришлю). В моменты, не удовлетворяющие этим правилами, v-конвейер не берет новых команд, лишь продвигая по этапам те, за выполнение которых он уже взялся. Затем он простаивает, ожидая благоприятной ситуации. В остальных случаях процессор одновременно выполняет сразу 2 инструкции, точнее, учитывая конвейерную архитектуру, правильней сказать: "на различных стадиях выполнения одновременно продвигаются 2 потока инструкций". У конвейерной архитектуры одно слабое место: при выполнении команд, чтобы выбрать из памяти следующую, иногда нужно знать результат выполнения текущей. Дело в том, что некоторые команды (например, условного перехода) нарушают порядок выполнения инструкций, приказывая процессору "перепрыгнуть" не на следующую по порядку команду, а на какую-то другую. В любой мало-мальски сложной программе это встречается сплошь и рядом. В простейшем случае (как в 486-м) конвейер будет ждать выполнения команды, определяющей адрес следующей инструкции, и лишь затем приступит к выборке. В Pentium же появилось интересное новшество branch prediction - предсказание переходов. Процессор запоминает статистику последних 256 переходов и на ее основе выдает предположение о следующем. Если переход был предсказан верно, удается избежать простоя, если нет - конвейер полностью очищается и начинает заполняться снова (на что тратится время). Суперскалярность - особенность №1 микропроцессоров 5-го поколения. Она присуща не только Pentium, но и AMD K5, Cyrix M1, словом, всем его современникам. Кстати, помимо этой архитектуры, у Pentium еще один плюс: ступени D2 обоих конвейеров обзавелись многоканальным сумматором. Задержки, возникавшие в 486-м при декодировании сложных многокомпонентных адресов (например, "EBX + ESI + смещение"), наконец-то ушли в прошлое. FPU 2-е по значимости отличие Pentium от 486-го - быстрый сопроцессор (FPU). Именно Pentium вылечил у некоторых программистов фобию к числам с "плавучкой". Помнится, раньше в Фидо ходила куча советов, как рассчитать трехмерную сцену, обходясь только целыми числами - получались вещественные с "фиксированной точкой". Сказывалось на точности, но для графики 320x200 вполне хватало... С появлением Pentium стало очевидным: нет смысла соревноваться с оптимизированным сопроцессором. В результате появился целый ряд игр (Quake, MDK), сотворивших революцию в игровом мире. Благодаря новому FPU, мощность Pentium'а оказалась достаточной для показа Video CD без приобретения MPEG-карт, стоящих сотни долларов. За это отдельное спасибо Xing MPEG Player'у - родоначальнику чисто "софтового" проигрывания видео. А разве плохо слушать mp3, занимаясь при этом чем-то другим - гуляя в Интернете или набирая текст? На быстрой "четверке" mp3-файлы тоже игрались, но при работе в Word или Explorer звук начинал заикаться. Причина ускорения сопроцессора кроется в его новой конвейерной архитектуре. Инструкции FPU сначала проходят по u-конвейеру до ступени D2 включительно, после чего сворачивают на ступени X1, X2 и WF конвейера FPU (на схеме). Причем инструкции на целочисленном конвейере могут продвигаться во время просчета длительных инструкций FPU - именно с учетом этого был оптимизирован Quake. Почему конвейер сопроцессора сам не выбирает инструкции? В основном из-за вопросов совместимости, а отчасти - чтобы не заниматься проблемами адресации в защищенном режиме, эту сложную рутину делает основной процессор. Другая причина ускорения, пусть и не столь важная, - увеличение шины данных до 64 бит. Внешняя шина данных - это магистраль, передающая информацию между процессором и памятью. Особо заметно увеличение шины проявилось в серьезных программах, наподобие AutoCAD или Corel Draw. Почему? Небольшое отступление: в играх и MPEG-плеерах, где главное - скорость, процессор, как правило, работает с числами одинарной точности (32 бит). Это разумный компромисс между скоростью и качеством. Winamp при декодировании mp3 обходится 32-битными числами, что дает, по сравнению с 64-битными, меньшее на 30-40% потребление процессора. А разницу в звучании с NAD'ом (mp3-плеер, применяет 64-битную арифметику) замечают только завзятые аудиофилы. Но то, что оптимально в играх и мультимедиа, может быть неприемлемо в конструкторском или дизайнерском деле. В этих программах обычно применяют вещественные числа двойной точности (64 бит), иногда - даже повышенной (80 бит). Из-за 32-битной шины 486-го их приходилось загружать из памяти за несколько тактов. Pentium же, благодаря новой шине, обычно справляется за один такт. В итоге, пропускная способность была заметно увеличена - 528 Мб/с для Pentium-66 по сравнению со 160 Мб/с для 486DX-50. Из отрицательных "бонусов" 64-битной шины назову только один - потребность в специальной организации памяти. Помните правило: "SIMM'ы вставлять только парами"? Вот-вот, это оттуда... КЭШ С кэшем ситуация неоднозначная. Разумеется, он стал быстрее (в основном, благодаря объему), но появились и минусы. Сначала о главном: кэш L1 в Pentium стал раздельным и увеличился с 8 до 16 Кб - по 8 Кб на кэш команд и кэш данных. Оба кэша поддерживают политику отложенной записи (Write Back), хотя в кэш команд запись обычно не производится. По поводу разделения кэша не могу сказать, что это однозначно хорошо. Не случайно процессоры M1 фирмы Cyrix имели общий кэш L1 и в задачах, не требующих интенсивных FPU-вычислений, показывали отличную производительность. Я могу привести примеры, когда по скорости выигрывает тот или иной вариант кэша, если интересно, к тому же его разделение приводит к росту числа транзисторов. Скорее всего, это разделение в Pentium было мотивировано упрощением схем некоторых ступеней конвейеров (ступени PF и WB). Еще один минус: строки кэша стали 32-байтными (в 486-м строки 16-байтные). С одной стороны, это снизило число "служебных" транзисторов, а с другой - привело к небольшому падению эффективности. Напомню: все данные в кэше хранятся в строках, и в одной строке могут находиться только смежные данные, т. е. имеющие близкостоящие друг от друга адреса. Каждая строка имеет свойство "достоверности". По нему кэш-контроллер определяет, можно использовать содержащиеся в ней данные или нет. Строка не может быть "частично достоверной", она либо верна целиком, либо неверна совсем. Строка заполняется данными из памяти полностью, даже если процессору не хватает в кэше всего одного байта.

И, НАКОНЕЦ... В Pentium появилось несколько новых инструкций. Перечислю: распознавание семейства и модели процессора - CPUID, сравнение и обмен сразу 8 байтов - CMPXCHG8B, чтение/запись из/в регистр, специфичный для конкретной модели (Model Specific Register) - RDMSR и WRMSR. И еще одна, RDTSC - потрясная инструкция - возвращает в EDX:EAX текущее значение внутреннего счетчика, который увеличивается на единицу при каждом цикле процессора (т.е. эта команда дает количество тактов, сделанных процессором с момента включения). При 133 МГц этого счетчика хватает на 4400 лет... Кое-что из несущественного для домашних персоналок: в процессоре была введена трассировка инструкций и мониторинг производительности, реализован интерфейс построения двухпроцессорных систем с симметричной архитектурой (начиная со 2-го поколения Pentium, 1-е поколение позволяло строить лишь функционально-избыточную систему). Введена возможность оперирования страницами размером в 4 Мб. Расширен режим виртуального 8086 - введена виртуализация флага прерываний. Вот и все... ЗАКЛЮЧЕНИЕ Не знаю как вам, а мне достижения и нововведения современных процессоров кажутся малозначимыми по сравнению с принципиальными нововведениями процессоров прошлых лет. Исключение составляет, пожалуй, только появление HyperThreading'а - интересное нововведение, заслуживающее отдельной статьи. :) В заключение остается только пожелать "процессоростроителям" не ударяться в слепую гонку гигагерц и нанометров, а почаще думать о реализации качественно новых эффективных методов вычислений. )))))))))))))))))))))))))))))))))))))))))))


Процессоры: история Процессор — основная микросхема компьютера, в которой и производятся все вычисления. Конструктивно процессор состоит из ячеек, похожих на ячейки оперативной памяти, но в этих ячейках данные могут не только храниться, но и изменяться. Внутренние ячейки процессора называют: регистрами. Важно также отметить, что данные, попавшие в некоторые регистры, рассматриваются не как данные, а как команды, управляющие обработкой данных в других регистрах.

Среди регистров процессора есть и такие, которые в зависимости от своего содержания способны модифицировать исполнение команд. Таким образом, управляя засылкой данных в разные регистры процессора, можно управлять обработкой данных. На этом и основано исполнение программ. С остальными устройствами компьютера, и в первую очередь с оперативной памятью, процессор связан несколькими группами проводников, называемых шинами. Основных шин три: шина данных, адресная шина и командная шина.

Система команд процессора. В процессе работы процессор обслуживает данные, находящиеся в его регистрах, в поле оперативной памяти; а также данные, находящиеся во внешних портах процессора. Часть данных он интерпретирует непосредственно как данные, часть данных — как адресные данные, а часть — как команды. Совокупность всех возможных команд, которые может выполнить процессор над данными, образует так называемую систему команд процессора. Процессоры, относящиеся к одному семейству, имеют одинаковые или близкие системы команд. Процессоры, относящиеся к разным семействам, различаются по системе команд и невзаимозаменяемые. Процессоры с расширенной и сокращенной системой команд. Чем шире набор системных команд процессора, тем сложнее его архитектура, тем длиннее формальная запись команды (в байтах), тем выше средняя продолжительность исполнения одной команды, измеренная в тактах работы процессора. Так, например, система команд процессоров Intel Pentium в настоящее время насчитывает более тысячи различных команд. Такие процессоры называют процессорами с расширенной системой команд — CISC–процессорами (CISC–Complex Instruction Set Computing).

Архитектура фон Неймана

Основная статья: Архитектура фон Неймана Большинство современных процессоров для персональных компьютеров в общем основаны на той или иной версии циклического процесса последовательной обработки информации, изобретённого Джоном фон Нейманом. Д. фон Нейман придумал схему постройки компьютера в 1946 году. Важнейшие этапы этого процесса приведены ниже. В различных архитектурах и для различных команд могут потребоваться дополнительные этапы. Например, для арифметических команд могут потребоваться дополнительные обращения к памяти, во время которых производится считывание операндов и запись результатов. Отличительной особенностью архитектуры фон Неймана является то, что инструкции и данные хранятся в одной и той же памяти. Этапы цикла выполнения: 1. Процессор выставляет число, хранящееся в регистре счётчика команд, на шину адреса, и отдаёт памяти команду чтения; 2. Выставленное число является для памяти адресом; память, получив адрес и команду чтения, выставляет содержимое, хранящееся по этому адресу, на шину данных, и сообщает о готовности; 3. Процессор получает число с шины данных, интерпретирует его как команду (машинную инструкцию) из своей системы команд и исполняет её; 4. Если последняя команда не является командой перехода, процессор увеличивает на единицу (в предположении, что длина каждой команды равна единице) число, хранящееся в счётчике команд; в результате там образуется адрес следующей команды; 5. Снова выполняется п. 1. Данный цикл выполняется неизменно, и именно он называется процессом (откуда и произошло название устройства). Во время процесса процессор считывает последовательность команд, содержащихся в памяти, и исполняет их. Такая последовательность команд называется программой и представляет алгоритм полезной работы процессора. Очерёдность считывания команд изменяется в случае, если процессор считывает команду перехода — тогда адрес следующей команды может оказаться другим. Другим примером изменения процесса может служить случай получения команды останова или переключение в режим обработки аппаратного прерывания. Команды центрального процессора являются самым нижним уровнем управления компьютером, поэтому выполнение каждой команды неизбежно и безусловно. Не производится никакой проверки на допустимость выполняемых действий, в частности, не проверяется возможная потеря ценных данных. Чтобы компьютер выполнял только допустимые действия, команды должны быть соответствующим образом организованы в виде необходимой программы. Скорость перехода от одного этапа цикла к другому определяется тактовым генератором. Тактовый генератор вырабатывает импульсы, служащие ритмом для центрального процессора. Частота тактовых импульсов называется тактовой частотой.

Конвейерная архитектура

Конвейерная архитектура (pipelining) была введена в центральный процессор с целью повышения быстродействия. Обычно для выполнения каждой команды требуется осуществить некоторое количество однотипных операций, например: выборка команды из ОЗУ, дешифрация команды, адресация операнда в ОЗУ, выборка операнда из ОЗУ, выполнение команды, запись результата в ОЗУ. Каждую из этих операций сопоставляют одной ступени конвейера. Например, конвейер микропроцессора с архитектурой MIPS-I содержит четыре стадии: • получение и декодирование инструкции (Fetch) • адресация и выборка операнда из ОЗУ (Memory access) • выполнение арифметических операций (Arithmetic Operation) • сохранение результата операции (Store) После освобождения k-й ступени конвейера она сразу приступает к работе над следующей командой. Если предположить, что каждая ступень конвейера тратит единицу времени на свою работу, то выполнение команды на конвейере длиной в n ступеней займёт n единиц времени, однако в самом оптимистичном случае результат выполнения каждой следующей команды будет получаться через каждую единицу времени. Действительно, при отсутствии конвейера выполнение команды займёт n единиц времени (так как для выполнения команды по прежнему необходимо выполнять выборку, дешифрацию и т. д.), и для исполнения m команд понадобится единиц времени; при использовании конвейера (в самом оптимистичном случае) для выполнения m команд понадобится всего лишь n + m единиц времени. Факторы, снижающие эффективность конвейера: 1. простой конвейера, когда некоторые ступени не используются (напр., адресация и выборка операнда из ОЗУ не нужны, если команда работает с регистрами); 2. ожидание: если следующая команда использует результат предыдущей, то последняя не может начать выполняться до выполнения первой (это преодолевается при использовании внеочередного выполнения команд, out-of-order execution); 3. очистка конвейера при попадании в него команды перехода (эту проблему удаётся сгладить, используя предсказание переходов). Некоторые современные процессоры имеют более 30 ступеней в конвейере, что увеличивает производительность процессора, однако приводит к большому времени простоя (например, в случае ошибки в предсказании условного перехода.) Суперскалярная архитектура Способность выполнения нескольких машинных инструкций за один такт процессора. Появление этой технологии привело к существенному увеличению производительности. CISC-процессоры Complex Instruction Set Computer — вычисления со сложным набором команд. Процессорная архитектура, основанная на усложнённом наборе команд. Типичными представителями CISC является семейство микропроцессоров Intel x86 (хотя уже много лет эти процессоры являются CISC только по внешней системе команд). RISC-процессоры Reduced Instruction Set Computing (technology) — вычисления с сокращённым набором команд. Архитектура процессоров, построенная на основе сокращённого набора команд. Характеризуется наличием команд фиксированной длины, большого количества регистров, операций типа регистр-регистр, а также отсутствием косвенной адресации. Концепция RISC разработана Джоном Коком (John Cocke) из IBM Research, название придумано Дэвидом Паттерсоном (David Patterson). Самая распространённая реализация этой архитектуры представлена процессорами серии PowerPC, включая G3, G4 и G5. Довольно известная реализация данной архитектуры — процессоры серий MIPS и Alpha. MISC-процессоры Minimum Instruction Set Computing — вычисления с минимальным набором команд. Дальнейшее развитие идей команды Чака Мура, который полагает, что принцип простоты, изначальный для RISC процессоров, слишком быстро отошёл на задний план. В пылу борьбы за максимальное быстродействие, RISC догнал и перегнал многие CISC процессоры по сложности. Архитектура MISC строится на стековой вычислительной модели с ограниченным числом команд (примерно 20-30 команд). Многоядерные процессоры Содержат несколько процессорных ядер в одном корпусе (на одном или нескольких кристаллах). Процессоры, предназначенные для работы одной копии операционной системы на нескольких ядрах, представляют собой высокоинтегрированную реализацию системы «Мультипроцессор». На данный момент массово доступны процессоры с двумя ядрами, в частности Intel Core 2 Duo на ядре Conroe и Athlon64X2 на базе микроархитектуры K8. В ноябре 2006 года вышел первый четырёхъядерный процессор Intel Core 2 Quad на ядре Kentsfield, представляющий собой сборку из двух кристаллов Conroe в одном корпусе. Двухядерность поцессоров включает такие понятия, как наличие логических и физических ядер: например двухядерный процессор Intel Core Duo состоит из одного физического ядра, которое в свою очередь разделено на два логических. Процессор Intel Core 2 Duo состоит из двух физических ядер, что существенно влияет на скорость его работы. 10 сентября 2007 года были выпущены в продажу нативные (в виде одного кристалла) четырёхьядерные процессоры для серверов AMD Quad-Core Opteron, имевшие в процессе разработки кодовое название AMD Opteron Barсelona. 19 ноября 2007 вышел в продажу четырёхьядерный процессор для домашних компьютеров AMD Quad-Core Phenom. Эти процесоры реализуют новую микроархитектуру K8L (K10). 27 сентября 2006 года Intel продемонстрировала прототип 80-ядерного процессора. Предполагается, что массовое производство подобных процессоров станет возможно не раньше перехода на 32-нанометровый техпроцесс, а это в свою очередь ожидается к 2010 году. Кэширование Кэширование — это использование дополнительной быстродействующей памяти (кэш-памяти) для хранения копий блоков информации из основной (оперативной) памяти, вероятность обращения к которым в ближайшее время велика. Различают кэши 1-, 2- и 3-го уровней. Кэш 1-го уровня имеет наименьшую латентность (время доступа), но малый размер, кроме того кэши первого уровня часто делаются многопортовыми. Так, процессоры AMD K8 умели производить 64 бит запись+64 бит чтение либо два 64-бит чтения за такт, процессоры Intel Core могут производить 128 бит запись+128 бит чтение за такт. Кэш 2-го уровня обычно имеет значительно большие латентности доступа, но его можно сделать значительно больше по размеру. Кэш 3-го уровня самый большой по объёму и довольно медленный, но всё же он гораздо быстрее, чем оперативная память. Параллельная архитектура Архитектура фон Неймана обладает тем недостатком, что она последовательная. Какой бы огромный массив данных ни требовалось обработать, каждый его байт должен будет пройти через центральный процессор, даже если над всеми байтами требуется провести одну и ту же операцию. Этот эффект называется узким горлышком фон Неймана. Для преодоления этого недостатка предлагались и предлагаются архитектуры процессоров, которые называются параллельными. Параллельные процессоры используются в суперкомпьютерах. Возможными вариантами параллельной архитектуры могут служить (по классификации Флинна): • SISD — один поток команд, один поток данных; • SIMD — один поток команд, много потоков данных; • MISD — много потоков команд, один поток данных; • MIMD — много потоков команд, много потоков данных. Технология изготовления процессоров История развития процессоров Первым общедоступным микропроцессором был 4-разрядный Intel 4004. Его сменили 8-разрядный Intel 8080 и 16-разрядный 8086, заложившие основы архитектуры всех современных настольных процессоров. Но из-за распространённости 8-разрядных модулей памяти был выпущен 8088, клон 8086 с 8-разрядной шиной памяти. Затем проследовала его модификация 80186. В процессоре 80286 появился защищённый режим с 24-битной адресацией, позволявший использовать до 16 МБ памяти. Процессор Intel 80386 появился в 1985 году и привнёс улучшенный защищённый режим, 32-битную адресацию, позволившую использовать до 4 ГБ оперативной памяти и поддержку механизма виртуальной памяти. Эта линейка процессоров построена на регистровой вычислительной модели. Параллельно развиваются микропроцессоры, взявшие за основу стековую вычислительную модель. Современная технология изготовления Микропроцессор Athlon XP в «безмостиковой» упаковке В современных компьютерах процессоры выполнены в виде компактного модуля (размерами около 5×5×0,3 см) вставляющегося в ZIF-сокет. Большая часть современных процессоров реализована в виде одного полупроводникового кристалла, содержащего миллионы, а с недавнего времени даже миллиарды транзисторов. В первых компьютерах процессоры были громоздкими агрегатами, занимавшими подчас целые шкафы и даже комнаты, и были выполнены на большом количестве отдельных компонентов. В начале 1970-х годов благодаря прорыву в технологии создания БИС и СБИС (больших и сверхбольших интегральных схем), микросхем, стало возможным разместить все необходимые компоненты ЦП в одном полупроводниковом устройстве. Появились так называемые микропроцессоры. Сейчас слова микропроцессор и процессор практически стали синонимами, но тогда это было не так, потому что обычные (большие) и микропроцессорные ЭВМ мирно сосуществовали ещё по крайней мере 10-15 лет, и только в начале 80-х годов микропроцессоры вытеснили своих старших собратьев. Надо сказать что переход к микропроцессорам позволил потом создать персональные компьютеры, которые теперь проникли почти в каждый дом. Первый микропроцессор Intel 4004 был представлен 15 ноября 1971 года корпорацией Intel. Он содержал 2300 транзисторов, работал на тактовой частоте 108 кГц и стоил 300$. За годы существования технологии микропроцессоров было разработано множество различных их архитектур. Многие из них (в дополненном и усовершенствованном виде) используются и поныне. Например Intel x86, развившаяся вначале в 32 бит IA32 а позже в 64 бит x86-64. Процессоры архитектуры x86 вначале использовались только в персональных компьютерах компании IBM (IBM PC), но в настоящее время всё более активно используются во всех областях компьютерной индустрии, от суперкомпьютеров до встраиваемых решений. Также можно перечислить такие архитектуры как Alpha, POWER, SPARC, PA-RISC, MIPS (RISC — архитектуры) и IA-64 (EPIC-архитектура). Большинство процессоров используемых в настоящее время являются Intel-совместимыми, то есть имеют набор инструкций и пр., как процессоры компании Intel. Наиболее популярные процессоры сегодня производят фирмы Intel, AMD и IBM. Среди процессоров от Intel: 8086, i286 (в русском компьютерном сленге называется «двойка», «двушка»), i386 («тройка», «трёшка»), i486 («четвёрка»), Pentium (i586)(«пень», «пенёк», «второй пень», «третий пень» и т. д. Наблюдается также возврат названий: Pentium III называют «тройкой», Pentium 4 — «четвёркой»), Pentium II, Pentium III, Celeron (упрощённый вариант Pentium), Pentium 4, Core 2 Duo, Xeon (серия процессоров для серверов), Itanium и др. AMD имеет в своей линейке процессоры Amx86 (сравним с Intel 486), Duron, Sempron (сравним с Intel Celeron), Athlon, Athlon 64, Athlon 64 X2, Opteron и др. Будущие перспективы В ближайшие 10-20 лет, скорее всего, изменится материальная часть процессоров ввиду того, что технологический процесс достигнет физических пределов производства. Возможно, это будут: 1. Квантовые компьютеры 2. Молекулярные компьютеры Квантовые процессоры Процессоры, работа которых всецело базируется на квантовых эффектах. В настоящее время ведутся работы над созданием рабочих версий квантовых процессоров. Российские микропроцессоры Разработкой микропроцессоров в России занимается ЗАО «МЦСТ». Им разработаны и внедрены в производство универсальные RISC-микропроцессоры с проектными нормами 130 и 350 нм. Завершена разработка суперскалярного процессора нового поколения Эльбрус. Основные потребители российских микропроцессоров — предприятия ВПК. История развития • 1998 год SPARC-совместимый микропроцессор с технологическими нормами 500 нм и частотой 80 МГц • 2001 год SPARC-совместимый микропроцессор МЦСТ-R150 с топологическими нормами 350 нм и тактовой частотой 150 МГц. • 2003 год SPARC-совместимый микропроцессор МЦСТ-R500 с топологическими нормами 130 нм и тактовой частотой 500 МГц. • 2004 год E2K — микропроцессор нового поколения на полностью заказной технологии с топологическими нормами 130 нм и тактовой частотой 300 МГц (авторские права защищены 70 патентами). • 2005 год o Январь  Успешно завершены государственные испытания микропроцессора МЦСТ-R500 — самой совершенной модификации первых современных отечественных универсальных RISC-микропроцессоров семейства @МЦСТ-R. Этот микропроцессор явился базовым для пяти новых модификаций вычислительного комплекса Эльбрус-90микро, успешно прошедших типовые испытания в конце 2004 года.  На базе микропроцессоров МЦСТ-R500 в рамках проекта Эльбрус-90микро создан микропроцессорный модуль МВ/C, фактически представляющий собой одноплатную ЭВМ.  На базе микропроцессорного ядра МЦСТ-R500 начата разработка двухпроцессорной системы на кристалле (СНК). На кристалле будут также размещены все контроллеры, обеспечивающие её функционирование как самостоятельной ЭВМ. На базе СНК предполагается создание семейств новых малогабаритных носимых вычислительных устройств типа ноутбуков, наладонников, GPS-привязчиков и т. п. o Май  Получены первые образцы микропроцессора Эльбрус. Этот микропроцессор построен по не имеющей аналогов передовой отечественной технологии, в которой реализована архитектура явного параллелизма (VLIW/EPIC). ЗАО «МЦСТ» приступает к испытаниям микропроцессора. раПерспективные пути развития процессоров В настоящее время технология развивается стремительно, каждый год появляется несколько новых микропроцессоров. Однако факторы, влияющие на это развитие, известны. Зная эти факторы, довольно уверенно можно предсказывать и основные пути развития процессоров в ближайшем будущем. Всем специалистам известно, что при всем многообразии программного обеспечения основу всех программных продуктов составляет так называемый основной цикл работы микропроцессора: выборка команды, ее дешифрация, вычисление адреса и выборка операндов, выполнение команды, запись результата и переход к следующей команде. Все пакеты, все операционные системы, все текстовые процессоры – все имеет в основе своей этот нехитрый набор действий. Точно так же во всем многообразии видов внутреннего строения компьютерных процессоров лежат некоторые основополагающие принципы, которые обусловлены, прежде всего, теми техническими и экономическими факторами, которые влияют на разработку, производство и последующее внедрение микропроцессоров. Поняв эти факторы, а также зная современный уровень технологий, можно с достаточной уверенностью предсказывать дальнейшее развитие рынка процессоров в ближайшем будущем и оценить перспективность той или иной модели (или архитектурного подхода). Итак, нам необходимо, во-первых, выявить основную цель развития процессоров; во-вторых, определить ограничения, которые накладываются на процессоры; наконец, в-третьих, оценить существующие современные подходы построения микропроцессоров.

Устремления и ограничения Общая цель, которую стремятся достичь все разработчики микропроцессоров, в общем-то, кристально ясна – получить процессор максимальной производительности с наименьшими затратами как в разработке, так и в производстве. При этом процессор должен быть как можно более универсален. Лишь при достаточно большой массовости производства можно разделить все расходы по разработке модели на такое количество выпущенных экземпляров, что цена одного процессора будет иметь разумный размер. Если же, допустим, процессор найдет весьма узкое применение, то львиную долю его стоимости будут составлять расходы по собственно разработке процессора, а не расходы по его производству. Именно поэтому так дороги уникальные серверные и процессорные платформы, применяемые для нужд обороны и прочих малораспространенных задач. В общем случае, расходы по разработке, скажем, новой модели Pentium и какой-либо сложной специализированной структуры весьма сопоставимы. Однако цена специализированной системы будет превышать цену обычной в десятки раз. Причина этого – в массовости производства. Проще всего создать процессор, оптимизированный под одну-единственную задачу. В рамках этой задачи можно достичь пика производительности для данной элементной базы. Скажем (пусть это и несколько утрированное сравнение), логический элемент “И” даже устаревшего комплекта будет выполнять операцию логического умножения быстрее, чем самый современный процессор фирмы Intel. Но при этом применений больше, естественно, у процессора. Именно в связи с этой универсальностью происходят потери в производительности (ведь процессор должен выполнить гораздо больше микроопераций, зато и его набор команд гораздо шире). Подобная борьба противоположных требований, при всей своей простоте, является основным фактором влияния. Другим фактором, возможно и не таким очевидным, является удобство применения процессора для разработки приложений. При разработке любого сложного проекта на каком-то этапе сама технология производства оказывается делом первостепенной важности. Качественная реализация проекта оказывается невозможной без применения специальных средств для контроля за качеством производимых программных продуктов. Именно в этом заключаются корни популярности объектно-ориентированного подхода в языках высокого уровня. В той же мере и на уровне машинных кодов удобство системы команд может оказывать большое влияние на качество работы. Например, затрудненная реализация неких часто повторяющихся действий (сравните поочередное использование инструкции сохранения регистров в стеке для процессора i8088 и команду PUSHA в i80386). Чем удобнее окажется процессор для разработчиков, тем больше будет выпущено программных продуктов именно для этой платформы, и, соответственно, тем привлекательней окажется эта платформа для конечных пользователей. Итак, процессор должен обладать максимальной производительностью, при этом, однако, он должен сохранять свою относительную универсальность, обеспечивающую массовость производства. Также процессор должен быть достаточно удобен для разработки сложных приложений. С учетом всех этих требований можно рассматривать ныне существующие модели, оценивать их перспективность и, до некоторой степени, предсказывать их дальнейшее развитие.

Семейство Intel (CISC- процессоры) В 1978 году была анонсирована архитектура Intel 8086 как совместимое вверх расширение в то время успешного 8-битного микропроцессора 8080. 8086-й представляет собой 16-битовую архитектуру со всеми внутренними регистрами, имеющими 16-битовую разрядность. При этом регистры процессора в ряде случаев выполняют специальные функции (например, регистр BX играет роль базы при некоторых способах адресации), являясь в общем случае регистрами общего назначения. Микропроцессор 8086 (точнее, его версия 8088 с 8-битовой внешней шиной) стал основой, завоевавшей впоследствии весь мир серии компьютеров IBM PC, работающих под управлением операционной системы MS-DOS. Архитектура x86 на начальном этапе, впрочем, как и при последующем развитии, являлась типичной CISC (Complex Instruction Set Computing) архитектурой, то есть архитектурой с полным набором команд. По мере необходимости набор команд попросту дополнялся новыми операциями. Собственно, история дальнейшего развития этой серии являлась историей добавления в набор инструкций новых команд. Хотя при этом и вводились некоторые архитектурные новшества (например, другая модель памяти) и улучшалась технология производства кристалла. Появившийся в 1993 году процессор Pentium ознаменовал собой новый этап в развитии архитектуры x86. Процессор Pentium по сравнению со своими предшественниками обладает целым рядом улучшенных характеристик. Даже при одинаковой тактовой частоте Pentium значительно превосходит i486 по производительности. Компьютерные тесты приблизительно приравнивают i486DX4-120 и Penti-um-60. То есть производительность увеличилась в два раза! Этот пример поучителен в том смысле, что демонстрирует, насколько правильный архитектурный подход может увеличить производительность процессора. В процессоре Pentium был реализован целый ряд новых механизмов, в том числе суперскалярная обработка и динамическое прогнозирование направления переходов. Особая архитектурная организация позволила производить независимое выполнение сразу двух простых команд. Кроме того, с введением специального буфера переходов стало возможным вычислять адрес заранее, до выполнения условия перехода, а при выполнении условия – извлекать адрес уже не путем новых вычислений, а прямо из буфера. Однако для достижения большей, по сравнению с предыдущими CISC-моделями, производительности уже является необходимым использование технических решений, широко применяющихся при построении RISC (Reduced Instruction Set Computing, ограниченный набор команд) процессоров: • выполнение команд не в предписанной программой последовательности, что устраняет во многих случаях приостановку конвейеров из-за ожидания операндов операций; • использование методики переименования регистров, позволяющей увеличивать эффективный размер регистрового файла (малое количество регистров – одно из самых узких мест архитектуры x86); • расширение суперскалярных возможностей по отношению к процессору Pentium, в котором обеспечивается одновременная выдача только двух команд с достаточно жесткими ограничениями на их комбинации. Ввиду того, что семейство Intel с самого начала получило хороший старт, эта архитектура по-прежнему остается одной из самых распространенных в мире. Связано это как с удобным набором команд (ведь дополнительные команды вводились, в том числе, и с учетом рекомендаций разработчиков программного обеспечения), так и с большим обилием программного обеспечения для этой платформы. Все это позволило организовать производство процессоров в таком объеме, что их цена оказалась доступной для самых широких потребительских кругов. Однако в дальнейшем развитии этой линии наблюдается готовность к большим переменам. При сохранении всех прочих достижений, время диктует необходимость внесения больших корректив. Прежде всего, CISC-архитектура довольно сложна в плане распараллеливания,– необходимо постоянно учитывать время исполнения команд (у каждой команды оно свое), решать проблемы синхронизации данных, осуществлять диспетчеризацию доступа к оперативной памяти и т. д. Недаром в последних моделях Pentium-II и Pentium-III нет ничего качественно нового. В основном, изменения касаются введения новых команд, связанных, прежде всего, с обработкой мультимедийной информации. Однако еще в процессорах с расширением MMX начали внедряться так называемые SIMD (Single Instruction Many Data) инструкции, в которых одно и то же действие совершается над многими данными. В этом можно уследить качественно новую перспективу – подобных команд становится все больше от модели к модели, в скором времени мы сможем наблюдать качественный скачок в развитии процессоров этого семейства. Действительно, внедрение SIMD-команд является наиболее достойным выходом для CISC-архитектуры. Простое механическое увеличение числа команд является экстенсивным путем развития, который не может не привести к серьезному снижению по производительности (все больше времени затрачивается на дешифрацию кода операции, все больше вычислений производится для извлечения операндов из памяти и т. д.). Дальнейшее увеличение суперскалярной обработки тоже требует больших интеллектуальных затрат. Слишком уж разный формат команд используется, слишком они различаются по времени исполнения. Увеличение же производительности только за счет улучшения технологии производства – недостаточно эффективно. Итак, скорее всего в самом ближайшем будущем можно будет ожидать качественных изменений в линии Intel, связанных, прежде всего, с внедрением SIMD-инструкций. И также довольно уверенно можно говорить о том, что в самом ближайшем будущем семейство Intel не сдаст своих позиций на рынке SOHO (Small Office Home Office), потому что архитектура Intel по-прежнему остается одной из самых привлекательных для разработчиков пакетов прикладных программ.

RISC-архитектура (Power PC, Alpha, DSP и т. п.) Как уже говорилось выше, CISC-архитектура оказалась очень неудобной для организации суперскалярной обработки, а довольно вольный подход к формату команд приводит к большим потерям по времени из-за сложного алгоритма обработки каждой команды. Идеи о том, как всего этого избежать, и легли в основу процессоров с RISC-архитектурой. На систему команд был наложен ряд ограничений: • все команды стали иметь один размер, так что процессор больше не затрачивает время, необходимое для извлечения дополнительных байтов выполняемой инструкции; • все команды, в идеале, выполняются за один машинный такт, а их малое количество позволяет обходиться ограниченным количеством битов для задания кода операции; • используются простые методы адресации; • команды, которые изменяют данные, не обладают доступом непосредственно к памяти (все делается через регистры общего назначения); • число регистров общего назначения достаточно велико, так что общее количество обращений к памяти сведено к минимуму. Такой подход оказался крайне эффективным, до сих пор отрасль RISC-процессоров – одна из наиболее динамично развивающихся. Все ограничения, наложенные на набор команд, позволяют построить архитектуру процессора с максимальной эффективностью. Время дешифрации команд и время на получение операндов сведены к минимуму. Из-за жестких ограничений по времени исполнения команд почти нет проблем и с синхронизацией при суперскалярной обработке. Компания Apple, производитель процессоров с архитектурой Power, не раз демонстрировала превосходство по производительности своих процессоров над аналогичными моделями фирмы Intel. Многие профессиональные дизайнеры предпочитают работать на компьютерах Macintosh, построенных на базе процессора PowerPC. Однако накладываемые ограничения оказываются палкой о двух концах. Ввиду того, что действия, которые должен совершать компьютер, все равно остались, а многие команды в RISC-процессорах просто не реализованы, то зачастую для выполнения некоего действия, которое задано в Pentium одной командой, в RISC-процессорах приходится запускать целый алгоритмический блок. Да и собственно среда разработки оказалась достаточно сложной, приходится отвоевывать рынок программного обеспечения у ныне существующих систем. Все это привело к тому, что большинство RISC-архитектур используtтся исключительно в узкопрофессиональных областях. Чтобы как-то исправить подобные недостатки, в последнее время разработчики микропроцессоров стали прибегать к созданию гибридов RISC- и CISC-архитектуры. Новые процессоры обладают полной совместимостью по набору команд с процессорами фирмы Intel. Но при получении такой команды на исполнение происходит трансляция инструкции в микрокод, который уже и идет на исполнение. Микрокод же этот состоит уже из RISC-команд. Как ни странно, такой подход оказался наилучшим выходом из создавшегося положения. С одной стороны, все существующее программное обеспечение с успехом выполняется, с другой – доступны все те возможности по суперскалярной обработке, какие предоставляет RISC-архитектура. При этом и проектировать такие процессоры гораздо проще, нежели традиционные CISC-архитектуры. Именно такой подход был реализован и при создании микропроцессора Эльбрус E2k с архитектурой EPIC. Это проект компании Эльбрус Интернэшнл, руководит проектом член-корреспондент РАН Б.А. Бабаян (более подробно о нем см. "КОМПЬЮТЕР бизнес МАРКЕТ" №15). Набор системного программного обеспечения E2k включает в себя распараллеливающий компилятор и двоичный транслятор кода x86.Разработчики утверждают, что Е2k будет иметь более высокую производительность при меньшем энергопотреблении и меньших размерах кристалла. При этом программной двоичной трансляцией обеспечивается полная совместимость с кодом x86 почти без потерь производительности по сравнению с собственным кодом E2k. Это достигается как раз за счет применения суперскалярной обработки, которая оказывается осуществима только в рамках RISC-архитектуры. В общем, RISC-архитектура в настоящее время является одним из самых перспективных направлений развития процессоров. Однако этой архитектуре присущ и ряд недостатков, связанных, прежде всего, с потерей универсальности в угоду производительности. Насколько успешно удастся эти ограничения обойти, настолько плодотворной будет дальнейшая работа над этой линией процессоров.

Нечто совсем другое Не стоит думать, что RISC и CISC – это все возможные варианты построения современных процессоров. Во-первых, существует целый ряд менее известных архитектур. Во-вторых, есть и более узкоспециализированные архитектуры, которые разрабатывались под конкретную задачу (например, спецвычислители). Наконец, в-третьих, ведутся и принципиально новые разработки, о которых в настоящее время просто мало известно. В самом недалеком будущем, возможно, они будут обнародованы. В этом случае мы можем оказаться свидетелями больших перемен по сравнению с существующей в настоящее время ситуацией. Одной из таких эффективных разработок является микропроцессорная система с гибкой логикой. Проект разрабатывается в Санкт-Петербургском институте информатики и автоматизации РАН под руководством проф. В.А.Торгашева. Основу системы составляет динамически изменяемая схема на элементах с гибкой логикой. Путем программирования непосредственно этой схемы оказывается возможным изменять саму архитектуру процессора. Ранее уже говорилось о том, что наиболее производительной оказывается система, специально созданная под конкретную задачу. Но она становится слишком дорогой, если разрабатывать, а потом и организовывать ее производство. Так вот – за счет способности к динамической перестройке система с изменяемой архитектурой (и, заметьте, с динамически изменяемой системой команд!) оказывается способной совместить в себе и массовость универсальных систем, и производительность специализированных. Конечно, при использовании системы, основы которой можно подвергнуть изменению, возникают свои трудности. Самая первая из них – это разработка программного интерфейса. Очень трудно программировать в условиях, когда правила игры все время меняются. Если использовать эту систему в чистом виде, то необходимо подумать о разработке качественно новых алгоритмов функционирования программ. Например, вместо инициализации переменных в такой программе должны сначала инициализироваться система команд и архитектура системы. Для их описания необходимо использовать свой, специальный язык описаний. Что, в свою очередь, порождает проблему создания загрузчика и транслятора таких описаний. Но достоинство подобной системы заключается в ее универсальности, что не только создает предпосылки массовости, но и существенно облегчает внедрение. Ее можно использовать и совместно с традиционными процессорными системами. Так же, как работает 3D-акселератор, облегчая процессору выполнение специальных действий по обработке графики, так и эта система может играть роль акселератора, причем не только графического. Специальный набор программного обеспечения может превратить эту систему в акселератор любых действий, которые вам необходимы. Уже в настоящее время реализованы в железе прототипы таких систем. Пока что они не полностью автоматизированы, но уже сейчас они показывают производительность, превосходящую заурядные универсальные системы, пусть и выполненные на более современной элементной базе. Так что далеко не все возможности по развитию микропроцессоров (и, естественно, целиком компьютеров) на сегодняшний день исчерпаны. Следовательно, в ближайшем будущем всех нас ожидает еще много нового и интересного сположения атомов в пространстве. Выгода использования некоторых моделей процесоров Pentium 4 для сокета LGA775 Серия процессоров Intel 6хх для сокета LGA775 состоит из моделей 630, 640, 650, 660 и 670, тактовые частоты которых лежат между 3,00 и 3,80 ГГц. Все они имеют 2-мегабайтный кэш L2, используют FSB с частотой 800 МГц и поддерживают технологию Hyper-Threading. Кроме того, в серии 6хх реализована поддержка 64-битных- расширений команд EM64T, а также технологий SpeedStep (энергосбережение) и XD (защита от атак типа "переполнение буфера"). Представленные еще в июне 2004 г. Pentium-4 500-й серии имеют такие же тактовые частоты, однако кэш L2 для них составляет 1 Мб. Нет также поддержки технологий EM64T и SpeedStep. С конца прошлого года 500-е модели со степингом E0 поддерживают технологию XD. На это указывает индекс "J" в конце номера процессора. С июня 2005-го линейка процессоров 5х0 была модернизирована до линейки 5х1. Новые модели 521, 531, 541, 551, 561 и 571 по-прежнему имеют частоты от 2,8 до 3,8 ГГц, однако теперь дополнительно поддерживают технологию EM64T. Pentium D Двухъядерные процессоры Pentium D — это два независимых ядра, объединенных на одной кремниевой пластине. Каждое ядро имеет собственный кэш L2 объемом 1 Мб. Ядра процессоров базируются на архитектуре NetBurst процессоров Pentium 4. Ядра объединены общей процессорной шиной, работающей на частоте 800 МГц. Рассчитаны эти процессоры только на сокет LGA775. Ядра процессоров Pentium D не поддерживают технологию Hyper-Threading. Для двухъядерных процессоров она присутствует только в Pentium Extreme Edition, который благодаря этому виден в системе как восьмиядерный. Все процессоры Pentium D поддерживают 64-битные расширения команд EM64T и технологию XD — защита от атак типа "переполнение буфера". Кроме того, модели 830 и 840 дополнительно поддерживают технологию SpeedStep, при которой возможно динамическое регулирование частоты и напряжения питания ядер процессора. Все Pentium D выпускаются по 90-нанометровому техпроцессу, при этом на кристалле площадью 206 мм2 размещается 230 млн. транзисторов. AMD Athlon 64 4000+ San Diego и Athlon 64 FX-57 Помимо уже знакомого читателям Athlon 64 4000+ в нашем тесте участвует также Athlon 64 4000+ — новый процессор, выполненный по 90-нанометровому техпроцессу. По сравнению с предшественником эта модель отличается сниженным до 85 Вт максимальным энергопотреблением и, самое главное, поддержкой набора команд SSE3. Остальные параметры процессора остались без изменений. Это сокет 939, частота ядра 2,4 ГГц, частота шины HyperTransport 250 МГЦ (1000 МГц эффективная), поддержка двухканальной памяти DDR400 и кэш L2 размером 1 Мб. Сейчас в продаже как старый, так и новый процессоры — и, судя по нашим тестам, их производительность разнится незначительно. Athlon 64 FX-57, также участвующий в нашем тесте, построен на 90-нанометрвом ядре San Diego и от AMD Athlon 64 4000+ отличается только увеличенной до 2,8 ГГц частотой процессора. Что касается других технологических параметров обоих процессоров, то тут можно упомянуть об использовании технологии "кремний на изоляторе" и площади кристалла, которая составляет 155 мм2 (на ней размещается 114 млн. транзисторов). SYSmark2004 Новый тестовый пакет SYSmark2004 от компании BAPCo является наследником индустриально признанного предшественника SYSmark2002. Тестовый пакет использует 17 обновленных приложений и содержит исправления некоторых спорных моментов предшественника. SYSmark2004 не только открывает несколько программ одновременно, но и позволяет приложениям работать в фоновом режиме. Следовательно, многоядерные процессоры в этом тесте могут показать свой потенциал (как и процессоры, поддерживающие Hyper-Threading).

В общей оценке Pentium D 820 эффект от его второго ядра примерно эквивалентен прибавке частоты в 400 МГц для одноядерного процессора. То есть по производительности он примерно равен 3,2 ГГц процессору Pentium 4 540J. Не очень убедительно в общем зачете выглядит Pentium 4 670, работающей на новой 955X материнке с памятью DDR2-667. Его производительность практически равна таковой у Pentium 4 560 (925X чипсет с памятью DDR2-533). SYSmark2004: Internet Content Creation В этой дисциплине лидируют, прежде всего, процессоры с быстрыми блоками FPU. Кроме того, участвующие в этом подтесте приложения активно используют набор команд SSE2 и многопоточную обработку. В состав теста входят Macromedia Dreamweaver и Flash MX, Discreet 3ds max 5.1, Adobe AfterEffects 5.5, Photoshop 7.0.1 и Premiere 6.5, Microsofts Windows Media Encoder 9, WinZip 8.1 а также McAfee VirusScan 7.0.

В этой дисциплине процессор Pentium D 820 наглядно демонстрирует преимущества двухъядерной архитектуры. Здесь он практически равен моделям с частотой в 3,6 ГГц. Особенно большой прирост в производительности показали 3ds max и Photoshop. Весьма неплохо показал себя и Pentium 4 670. Наряду с общей суммой баллов в подтесте, SYSmark2004 вычисляет еще и производительность для подкатегорий 2D Creation, 3D Creation и Web Publication. 2D Creation Видео из различных несжатых источников монтируется в Premiere 6.5 и экспортируется. Одновременно Photoshop импортирует и модифицирует фотоизображения. После экспортирования видео к нему с помощью After Effects добавляются некоторые спецэффекты.

И снова Pentium D 820 показывает производительность, сравнимую с 3,6 ГГц процессорами. Для одноядерных процессоров в этом подтесте, наряду с частотой, очень важным показателем оказалась величина кэш-памяти. 3D Creation Производится рендеринг 3D-моделей в 3ds max 5. Одновременно с помощью Dreamweaver подготавливаются веб-страницы. В заключение происходит прокрутка трехмерной анимации.

Эффект от второго ядра Pentium D 820 в этом подтесте немного меньше, но все равно уровень процессора 3,2 ГГц примерно сохраняется. Web Publication В этом тесте сценарии SYSmark2004 распаковывают архив с WinZip. Параллельно с помощью Flash MX открывается, модифицируется и экспортируется трехмерная векторная графика. Видео из подсценария 2D Creation архивируется с помощью Windows Media Encoder 9. Dreamweaver с помощью своих сценариев обрабатывает веб-страницы и в конце VirusScan проверяет систему на вирусы.

Благодаря параллельной работе приложений второе ядро Pentium D 820 дает в этом тесте прибавку производительности, примерно эквивалентную 1 ГГц. Все одноядерные процессоры остались позади. SYSmark2004: Office Productivity В категории Office Productivity тестовый пакет SYSmark2004 использует 10 различных приложений: Microsofts Word, Excel, PowerPoint, Access и Outlook (все версий 2002), McAfee VirusScan 7.0, ScanSoft Dragon Naturally Speaking 6, WinZip 8.1, Adobe Acrobat 5.0.5 и Internet Explorer 6.0.

В категории Office Productivity двухъядерность не сыграла никакой роли. Обычные процессоры здесь лидируют — и среди них наилучшие результаты показывают модели, использующие память DD2-533. Наряду с общей суммой для офисной производительности SYSmark2004 дополнительно делает оценки в категориях Communications, Document Creation и Data Analysis. Communications Пользователь получает в Outlook 2002 e-mail с файлом zip, в котором содержится несколько документов. Во время чтения e-mail и актуализации календаря VirusScan 7.0 сканирует систему.

Теоретически в этом сценарии двухъядерный процессор должен был показать неплохие результаты, однако этого не произошло. Кроме того, на примере с Pentium 4 670 заметно, что чипсет 955X с памятью DDR2-667 вообще "не любят" этот подтест. Document Creation Производится редактирование документа в Word версии 2002. Кроме этого с помощью NaturallySpeaking аудиофайл переводится в документ и конвертируется затем в формат PDF. Затем сценарий SYSmark2004 прокручивает презентацию.

Уж кому многоядерность не нужна, так это тем, кто использует ПК в качестве продвинутой пишущей машинки. Результаты зависят, в основном, только от частот процессоров. Data Analysis В данном подтесте сначала производится выборка данных из Access. Затем WinZip 8.1 архивирует большое количество документов. Результаты выборки SYSmark2004 выгружает в Excel и строит там графики.

То, что в этой дисциплине двухъядерность не сыграла никакой роли, скорее всего, объясняется странностью самого подтеста. Не понятно, причем тут архиватор. И если с построением графиков в Excell еще можно согласиться, то выбор СУБД, мягко говоря, неадекватен. SPECint_base2000 Как Intel, так и AMD используют Base-рейтинг теста SPEC при рекламе своих продуктов. Мы также воспользовались этими тестами, скомпилировав их с помощью Intel C++ 8.1 и MS Visual Studio. Подтест SPECint_base2000 работает как однопоточное приложение, поэтому, естественно, не использует ни Hyper-Threading, ни двухъядерность. Соответственно, результаты позволяют оценить чистую целочисленную производительность ядра процессора. В таблице приведены развернутые результаты по каждой тестовой подзадаче: В итоге в тесте SPEC CPU2000 Integer, SPECint_base2000 имеем следующие результаты:

Pentium D 820 уверенно занял последнее место — и так же уверенно первое место досталось Pentium 4 670. Результат закономерный, так как при однопоточном выполнении целочисленных вычислений важны, в первую очередь, тактовая частота и объем кэша L2. SPECint_rate_base2000 Этот тест позволяет определить пропускную способность системы при выполнении целочисленных вычислений. При этом в системе запускается несколько копий теста параллельно. Обычно число копий является равным числу видимых операционной системой реальных или виртуальных ядер процессоров. То есть для процессоров от AMD запускалась одна копия (хотя при запуске двух результат остается тем же), а для всех процессоров Intel — две (двухъядерность или Hyper-Threading).

Pentium D 820 ни оставил одноядерным собратьям никаких шансов. Этот процессор работает при 2,80 ГГц тактовой частоты на 22% быстрее, чем Pentium 4 670 с 3,80 ГГц. Прибавка же производительности от второго ядра составила около 80%. SPECfp_base2000 Для определения Base-рейтинга вычислений с плавающей запятой мы скомпилировали тест с помощью Intel C++ 8.1 и MS Visual Studio а также Intel Fortran 8.1. SPECfp_base2000 также выполняется как однопоточное приложение, выдавая в качестве результата чистую производительность FPU процессора.

Процессоры AMD64 тестировались с ключами компиляции -QxW для включения поддержки SSE2. Результаты этого теста пропорциональны тактовым частотам, поэтому лидирующий результат Pentium 4 670 вполне закономерен. SPECfp_rate_base2000 При определении максимальной пропускной способности вычислений с плавающей запятой в системе параллельно запускается несколько копий теста. Обычно число копий является равным числу видимых операционной системой реальных или виртуальных ядер процессоров.

И опять при определении максимальной пропускной способности вычислений Pentium D 820 значительно опережает все классические процессоры. Lightwave 3D 8.2 Один из популярнейших инструментов для работы с 3D-графикой, программа Lightwave версии 8.2 хорошо оптимизирована под Pentium 4. Она может работать как используя набор команд SSE2, так и разбивая работу на оптимальное число параллельных потоков. Тестирование в этой программе мы провели как в однопоточном, так и в многопоточном (8 потоков) варианте.

При однопоточном рендеринге Pentium D 820 закономерно не получил никакой прибавки за счет второго ядра. Для одноядерных процессоров при прочих равных условиях здесь наиболее важна скорость кэш-памяти. При восьмипоточном рендеринге Pentium D 820 заметно лидирует и на 26% опережает Pentium 4 670, который, в свою очередь, заметно опережает Pentium 4 560. CineBench 2003 CineBench 2003 базируется на Cinema 4D восьмого релиза и является популярным Shading и Raytracing тестом. Актуальная версия поддерживает SSE2, а также технологию Hyper-Threading. В тесте Raytracing с помощью Cinema-4D-Raytracers производится рендеринг сцены Daylight. Она содержит 35 источников света и благодаря 16 картам освещенности формируют мягкие тени. Здесь в основном работает GPU процессора, а мощность графической карты играет второстепенную роль.

Тест работает, в основном, в кэш-памяти, пропускная способность процессорной шины здесь не очень важна. Pentium D 820 уверенно опережает более дорогие Pentium 4 670 и 3,73 ГГц Extreme Edition. В дисциплине OpenGL-HW тест CineBench 2003 выводит две анимации с помощью OpenGL ускорителя графической карты. Таким образом процессор передает лишь позицию источников света, а также геометрию графической карте. Самое важное здесь — объем кэш-памяти и производительность памяти. Анимация Pump Action состоит из 37000 треугольников в 1046 объектах, во второй сцене Citygen два объекта в целом состоят из 70000 треугольников. В дисциплине OpenGL-SW Cinema 4D дополнительно принимает расчет освещения — то есть процессор выполняет дополнительную арифметическую работу. В обоих дисциплинах заметно серьезное преимущество процессоров от AMD — точнее, преимущество архитектуры со встроенным в процессор контроллером памяти. Результаты процессоров от Intel пропорциональны тактовой частоте — и у Pentium D 820 закономерно последнее место. SPECapc: 3ds max 6 Компания Discreet/Autodesk известна своим софтом для 3D-моделирования, анимации и рендеринга 3ds max. Актуальная версия — 6. С июня 2004 г. для этой программы существует тест SPECapc. С его помощью можно определить производительность 3ds max 6 на различных аппаратных платформах.

SPECapc для 3ds max 6 представляет собой реальный проект с использованием функций wireframe modeling, shading, texturing, lighting, blending, inverse kinematics, object creation, scene creation, particle tracing, animation и rendering. При рендеринге 3ds max 6 полностью использует до шести процессоров, поэтому многоядерность Hyper-Threading должна значительно ускорять работу.

Как и представлялось изначально, в 3ds max процессор Pentium D 820 значительно опережает все одноядерные модели. Объем кэш-памяти особой роли в этом тесте не сыграл. Революция для профи Может ли быть сразу два правильных пути развития процессоров? На сегодня, наверное, да. Во многих тестах одноядерный Pentium 4 670 благодаря высокой частоте ядра и 2 Мб кэша L2 оказывается на первом месте. Так что для обычного клиентского ПК или, другими словами, для "потребителя" цифрового контента это довольно неплохой выбор. Обычно человек работает с одной программой, а для работающих на заднем плане брандмауэров/антивирусов/меседжеров/качалок вполне достаточно и возможностей Hyper-Threading. Совсем другое дело те пользователи, для которых ПК является инструментом для создания 3D/видео/аудио или интенсивных расчетов. При вполне достаточной для "single-threaded"-приложений производительности и в разы меньшей, по сравнению с Pentium 4 3,73 EE и Pentium 4 670, стоимости двухъядерный процессор Pentium D 820 обеспечивает значительно большую производительность на профессиональных задачах и, кроме того, "нафарширован" всеми модными технологиями типа EM64T и XD. Так что на сегодня наличие двух "правильных" путей развития процессоров выглядит вполне логично. Профессиональные пользователи пойдут по революционному (и более дешевому!) пути многоядерности, а обычные пользователи будут довольствоваться плодами эволюции одноядерных процессоров. Несколько разочаровывает пока связка чипсета 955X с памятью DDR2-667. Можно считать, что скоростной потенциал новой памяти оценить на данном этапе не удалось.

http://5ka.com.ua/67/26172/1.html http://www.atlant.ru/comar/articles/expert/16199911017/index.php http://www.xard.ru/post/13927/


Звіт у вигляді презентації...