Современные модели 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) – свободная область.
Расширение ММХ
Расширение ММХ ориентированно на мультимедийное, 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.
Внутренний кэш
Внутренне кэширование обращений к памяти применяется в процессорах, начиная с 486-го. С кэшированием связаны новые функции процессоров, биты регистров и внешние сигналы.
Процессоры 486 и Pentium имеют внутренний кэш первого уровня, в Pentium Pro и Pentium II имеется и вторичный кэш. Процессоры могут иметь как единый кэш инструкций и данных, так и общий. Выделенный кэш инструкций обычно используется только для чтения. Для внутреннего кэша обычно используется наборно-ассоциативная архитектура.
Строки в кэш-памяти выделяются только при чтении, политика записи первых процессоров 486 – только Write Through (сквозная запись) – полностью программно-прозрачная. Более поздние модификации 486-го и все старшие процессоры позволяют переключаться на политику Write Back (обратная запись).
Работу кэша рассмотрим на примере четырехканального наборно-ассоциативного кэша процессора 486, его физическая структура приведена на рис. 3.1.7. Кэш является несекторированным – каждый бит достоверности (Valid bit) относится к целой строке, так что стока не может являться “частично достоверной”.
Работу внутренней кэш-памяти характеризуют следующие процессы: обслуживание запросов процессора на обращение к памяти, выделение и замещение строк для кэширования областей физической памяти, обеспечение согласованности данных внутреннего кэша и оперативной памяти, управление кэшированием.
Любой внутренний запрос процессора на обращение к памяти направляется на внутренний кэш. Теги четырех строк набора, который обслуживает данный адрес, сравниваются со старшими битами запрошенного физического адреса. Если адресуемая область представлена в строке кэш-памяти (случая попадания –cache hit), запрос на чтение обслуживается только кэш-памятью, не выходя на внешнюю шину. Запрос на запись модифицирует данную строку, и в зависимости от политики записи либо сразу выходит на внешнюю шину (при сквозной записи), либо несколько позже (при использовании алгоритма обратной записи).
Рис 3.1.7. Структура первичного кэша процессора 486
В случае промаха (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#) внешние схемы могут управлять кэшированием (разрешать заполнение строк) для каждого конкретного адреса обращения к физической памяти.
Процессор 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.
Процессор 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 - в настольных системах.
Процессор 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 | |
486DX2-50 | |
486DX2-66 | |
486DX4-75 | |
486DX4-100 | |
Pentium 60 | |
Pentium 66 | |
Pentium 90 | |
Pentium 100 |
Более того, именно величина производительности с использованием индекса 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
ID | VIP | VIF | AC | VM | RF | IIT | IOPL | IOPL | OF | DF | IF | TF | SF | ZF | AF | PF | CF |
Изменения в прерываниях:
При попытке записать единицу в зарезервированный бит специальных регистров генерируется исключение #GP – нарушение общей защиты.
При обнаружении единицы в зарезервированном бите элемента каталога страниц или элемента таблицы страниц генерируется исключение #PG –страничное нарушение.
Добавлено новое исключение #18 – Machine Check Exception. Это исключение предназначено для сообщения об аппаратных ошибках. Исключение является специфическим для данной модели процессора и может быть изменено в последующих моделях. Управление исключением осуществляется через MSR-регистры.
Конвейер Pentium построен так, что позволяет выполнять до двух команд. Прозрачный для программ механизм предсказания ветвлений позволяет уменьшить задержки конвейера при переходах. В процессоре Pentium MMX в конвейер добавлены новые стадии. P5 может декодировать до двух инструкций за один такт и направлять их по двум логическим каналам (U и V – каналы). На этапе декодирования процессор проверяет, могут ли две команды выполнятся параллельно. Если да, то первая команда направляется в U-канал конвейера, а вторая – в V – канал. В противном случае только одна команда направляется в U – канал и ничего не поступает в V – канал.
На стадии предвыборки (PF – pre fetch) команды выбираются из кэша команд. Далее они поступают на стадию выборки (F – fetch). Здесь происходит разделение выбранной порции кода на отдельные команды, а также декодирование любых префиксов. Между стадией (F) и стадией (D1) находится FIFO – буфер. В нем может содержаться до четырех инструкций. FIFO – буфер прозрачен, т.е. он не отнимает времени, когда он пуст. В каждом такте из стадии (F) в FIFO – буфер может выпускаться до двух команд. Пара инструкций поступает (если это возможно) из FIFO на стадию (D1). Так как средняя скорость выполнения команд меньше чем две команды за такт, то FIFO обычно заполнен. Следовательно, FIFO может буферизировать задержки, возникающие на стадиях (PF) и (F), тем самым, предотвращая по возможности обеднение (когда в FIFO находится одна команда) или полную остановку конвейера. Если в одном из каналов возникла задержка, то команды, следующие за застрявшей командой, не могут продвигаться дальше, даже если застрявшая команда находится в другом канале. Например, параллельно по двум каналам следуют две команды, одна из которых требует один такт на стадии (EX), а другая – два такта. Пусть первая команда находится в V – канале, а вторая - в U – канале. Попав на стадию (EX), первый такт эти команды выполняют вместе. В следующем такте команда в U – канале остается на стадии (EX), а команда в V – канале переходит на следующую стадию, при этом на ее место ничего не поступает, т.е. параллельно с двухтактной командой не могут выполняться две однотактные. Решение о спаривании команд принимается только один раз при входе в конвейер. Это один из главных недостатков архитектуры P5.
PF – предвыборка команд.
F – определение границ команд.
D1 – декодирование команд.
D2 – генерация линейного адреса.
EX: INT – чтение операндов из памяти, выполнение команды, запись операндов в память.
MMX – чтение операндов из памяти, далее переход на стадию Mex.
FPU – чтение операндов из памяти и регистров, далее переход на стадию X1, преобразование данных ко внешнему формату, запись в память (FST).
WB – запись результата в регистр.
Mex – выполнение MMX – команд. Первый такт команды умножения.
Wb/M2 – запись результата однотактных команд. Второй такт умножения.
M3 – третий такт умножения.
Wmul – запись результата умножения.
X1 – преобразование данных ко внутреннему формату, запись в регистр.
X2 – выполнение FPU – команд.
WF – округление и запись результата в регистр.
В отличие от целочисленных команд, которые целиком выполняются на стадии (EX), а затем уходят на свои стадии, где продолжаются выполняться дольше. FPU – команды не могут спариваться с целочисленными командами в начале конвейера, но, после того как FPU – команда уйдет на стадию (X1), следующие за ней целочисленные команды смогут продвигаться дальше. Например, если запустить в конвейер сначала команду Fmul, то следующие за ней целочисленные команды смогут продолжать выполняться параллельно с Fmul. Если же запустить команду Mul, то она застрянет на стадии (EX), блокировав дальнейшее продвижение следующих команд по обоим каналам.
В процессоры семейства Р6 (Pentium Pro и Pentium II) добавлены следующие команды:
· CMOVcc (Conditional Move) – выполняет условную передачу данных
· FCMOVcc (Floating – point Conditional Move) – выпоняет условную предачу FPU-регистра в вершину стека [ST(0)]
· FCOMI (Floating – point Compare and set EFLAGS) – сравнивает значение двух FPU – регистров и устанавливает флажки регистра EFLAGS в соответствии с результатом.
· RDPMC (Read Performance Monitoring Counters) – считывает содержимое специфических счетчиков для мониторинга производительности процессора.
· UD2 (Undefined) – генерирует исключение недействительной операции).
Конвейер процессоров семейства Р6 существенно отличается от конвейера процессоров семейства Р5. В Р6 используется принципиально новый подход к выполнению команд. Применен ряд новых приемов для предотвращения заторов конвейера. Например, внеочередное выполнение команд (out-of-order execution), переименование регистров. Конвейер Р6 состоит из трех частей:
1. In-Order Issue Front End. На этом этапе происходит выборка команд из памяти и декодирование в микрооперации.
2. Out-of-Order Core. На этом этапе процессор выполняет микрооперации. Выполнение может происходить вне очереди.
3. In-Order Retirement unit. На этом этапе происходит удаление команд с конвейера.
Следует заметить, что в семействе Р5 допущены следующие ошибки:
· Микропроцессоры Pentium раннего производства, ошибка связанная с операцией FDIV.
· Микропроцессоры Pentium и Pentium MMX с ошибкой F0, т.е. процессоры «зависают» при выполнении последовательности четырех байтов F0, 0F, C7, C8.
Процессор Celeron
7 июня 1998 компания Intel представила процессор Celeron с тактовой частотой 300 МГц и снизила цену на ранее выпускавшуюся модель 266 МГц. Компания, однако, предпочитает не афишировать, что эти частоты – далеко не предел возможностей Celeron, и безо всяких переделок процессор способен на нечто большее.
Известный среди любителей «железа» сайт Tom’s Hardware Guide сообщает, что выпускаемые модели Celeron способны работать на гораздо более высокой частоте. Этому есть две объективные причины. Ядро Celeron изготовляется по последней, 0.25 – микронной технологии и имеет кодовое название Deschutes. Оно такое же, как у процессоров Pentium II, предназначенных для работы на частотах 333, 350 и 400 МГц (в младших моделях Pentium II используется ядро Klamath с 0.35 – микронной технологией). А кристалл процессора, грубо говоря, «не знает», в какой корпус его установили, Celeron или Pentium II. С другой стороны, у Celeron отсутствует кэш второго уровня (за счет чего, в основном, и достигается его дешевизна). Именно благодаря этому обстоятельству Celeron является практически идеальной моделью для «разгона» – ведь увеличению тактовой частоты мешает, в первую очередь, именно кэш – память со слишком большим временем доступа. Усилиями своих создателей Celeron пока от этой проблемы избавлен – только его наследник под названием Mendocino будет иметь немного кэша второго уровня и, следовательно, будет более чувствительным к поднятию тактовой частоты.