Архитектура процессоров
Все 32-разрядные процессоры могут работать в двух режимах, между которыми обеспечивается достаточно быстрое переключение в обе стороны: Real Address Mode — режим реальной адресации (или просто реальный режим — Real Mode), полностью совместимый с 8086. В этом режиме возможна адресация до 1 Мбайт физической памяти (на самом деле, как и у 80286, — почти на 64 Кбайт больше). Protected Virtual Address Mode — защищенный режим виртуальной адресации (или просто защищенный режим — Protected Mode). В этом режиме процессор позволяет адресовать до 4 Гбайт физической памяти, через которые при использовании механизма страничной адресации могут отображаться до 16 терабайт виртуальной памяти каждой задачи. Существенным дополнением является Virtual 8086 Mode — режим виртуального процессора 8086 (V86). Этот режим является особым состоянием задачи защищенного режима, в котором процессор функционирует как 8086. На одном процессоре в таком режиме могут одновременно исполняться несколько задач с изолированными друг от друга реальными ресурсами. При этом использование физического адресного пространства памяти управляется механизмами сегментации и трансляции страниц. Защищенный режим появился еще в процессоре 80286, но имел не все возможности, доступные в 32-разрядных процессорах. Попытки выполнения недопустимых команд, выхода за рамки отведенного пространства памяти и разрешенной области ввода/вывода контролируются системой защиты. Процессоры могут оперировать с 8, 16 и 32-битными операндами, строками байт, слов и двойных слов, а также с битами, битовыми полями и строками бит. Для обработки чисел в формате с плавающей точкой и выполнения трансцендентных функций 32-разрядные процессоры предполагают использование мощного математического сопроцессора. У процессоров 486 и старше сопроцессор является встроенным (правда, в некоторых моделях его может и не быть). Для процессора 386 предназначен сопроцессор 80387, программно-совместимый с 8087 и 80287 (хотя они имеют и некоторые различия). Кроме сопроцессоров 80387 существуют более производительные FPU Cx83S87 и Cx83D87 фирмы Cyrix для 386SX и DX соответственно. Сопроцессоры Weitek 3167 и 4167 для 386DX еще более мощные, но они несовместимы с Intel, требуют специального гнезда и математического обеспечения (хотя возможно и универсальное гнездо для 387 и 3167). Поддержка сопроцессора Weitek при его использовании должна быть разрешена опциями BIOS Setup.
Внутренний кэш Внутреннее кэширование обращений к памяти применяется в процессорах, начиная с 486. С кэшированием связаны новые функции процессоров, биты регистров и внешние сигналы. Процессоры 486 и Pentium имеют внутренний кэш первого уровня, в Pentium Pro и Pentium II имеется и вторичный кэш. Процессоры могут иметь как единый кэш инструкций и данных, так и общий. Выделенный кэш инструкций обычно используется только для чтения. Для внутреннего кэша чаще всего применяется наборно-ассоциативная архитектура. Строки в кэш-памяти выделяются только при чтении, запись кэшируется только при попадании в адрес, представленный действительной строкой кэша. Политика записи первых процессоров 486 — только Write Through (сквозная запись), полностью программно-прозрачная. Более поздние модификации 486 и все старшие процессоры позволяют переключаться на политику Write Back (обратная запись). Работу внутренней кэш-памяти характеризуют следующие процессы: обслуживание запросов процессора на обращение к памяти, выделение и замещение строк для кэширования областей физической памяти, обеспечение согласованности данных внутреннего кэша и оперативной памяти, управление кэшированием.
Любой внутренний запрос процессора на обращение к памяти направляется во внутренний кэш. Теги строк набора, который обслуживает данный адрес, сравниваются со старшими битами запрошенного физического адреса. Если адресуемая область представлена в строке кэш-памяти — случай попадания (Cache Hit), запрос на чтение обслуживается только кэш-памятью, не выходя на внешнюю шину. Запрос на запись модифицирует данную строку и в зависимости от политики записи на внешнюю шину выходит либо сразу (при сквозной записи), либо несколько позже при использовании алгоритма обратной записи. В случае промаха (Cache Miss) запрос на запись направляется только на внешнюю шину, а запрос на чтение обслуживается сложнее. Если этот запрос относится к кэшируемой области памяти, выполняется цикл заполнения целой строки кэша — все 16 байт (32 — для Pentium) читаются из оперативной памяти и помещаются в одну из строк набора кэша, обслуживающего данный адрес. Если затребованные данные не укладываются в одной строке, заполняется и соседняя. Заполнение строки процессор старается выполнить самым быстрым способом — пакетным циклом с 32-битными передачами (64-битными для Pentium и старше). Внутренний запрос процессора на данные удовлетворяется сразу, как только затребованные данные считываются из ОЗУ — заполнение строки до конца может происходить параллельно с обработкой полученных данных. Если в наборе, который обслуживает данный адрес памяти, имеется свободная строка (с нулевым битом достоверности), заполнена будет именно она и для нее установится бит достоверности. Если свободных строк в наборе нет, будет замещена строка, к которой дольше всех не было обращений. Выбор строки для замещения выполняется на основе анализа бит LRU (Least Recently Used) no алгоритму «псевдо-LRU». Эти биты модифицируются при каждом обращении к строке данного набора (кэш-попадании или замещении). Таким образом, выделение и замещение строк выполняется только для кэш-промахов чтения, при промахах записи заполнение строк не производится. Управлять кэшированием можно только на этапе заполнения строк, кроме того, существует возможность их аннулирования — объявления недостоверными и очистки всей кэш-памяти. Если затребованная область памяти присутствует в строке внутреннего кэша, то он обслужит этот запрос.
Процессоры 386/387 Процессор Intel386, выпущенный в 1985 году, был первым 32-разрядным процессором. Он имел 32-битные раздельные шины адреса и данных с возможностью динамического управления конвейерной адресацей и разрядностью (16/32) шины данных. Позже, в 1988 году фирмой Intel был выпущен вариант процессора Intel386™ SX с 16-разрядной шиной данных и 24-разрядной шиной адреса, а полноразрядный вариант получил официальное название Intel386™ DX. Как и в случае с 8088, это было сделано с целью удешевления компьютера, собранного на базе данного процессора. Это удешевление, конечно же, обернулось и снижением производительности компьютера примерно в полтора раза по сравнению с использованием DX на той же тактовой частоте. Процессоры Intel386™ SX и Intel386™ DX отличаются только внешней шиной данных и адреса, их программные модели идентичны. В 1990 году появился процессор Intel386™SL со средствами управления энергопотреблением, разработанный специально для портативных компьютеров. В комплекте с 386SL выпускалась БИС 82360SL, содержащая набор PC-периферии, контроллер сигналов шины ISA, контроллер динамической памяти и контроллер внешнего кэша размером 16-64 Кбайт с архитектурой прямого отображения либо 2- или 4-канальной наборно-ассоциа-тивной архитектурой. В дальнейшем описании для краткости эти процессоры будем обозначать как 386, добавляя суффиксы SX, DX или SL при необходимости подчеркнуть различия. Внутренняя очередь команд процессора 386 имеет размер 16 байт. Количество тактов, требуемое для выполнения инструкций, примерно такое же, как и у 80286. Предусмотрена возможность использования математического сопроцессора Intel387, программно-совместимого с 8087 и 80287. Возможно и использование сопроцессора 80287, но его производительность ниже. С появлением процессора 386 в PC появилась возможность более эффективного использования памяти и стал широко применяться защищенный режим. Некоторые процессоры первых выпусков не обеспечивали полную работоспособность в 32-разрядном режиме, о чем должна была свидетельствовать маркировка «16 bit operations only». Попытка установить на компьютер с таким процессором 32-разрядную ОС обречена на неудачу (при установке Windows 95 будет сообщение об ошибке «В1»). Однако подавляющее большинство процессоров 386 полностью отвечает спецификациям 32-разрядных процессоров, приведенным выше.
Процессоры 486 Процессоры Intel486™ представляют второе поколение 32-разрядных процессоров. Обладая всеми свойствами процессора 386 и обеспечивая полную обратную совместимость с прежними представителями семейства 80х86, эти процессоры имеют ряд существенных изменений:
Существует несколько разновидностей процессоров Intel486, различающихся наличием сопроцессора, средств энергосбережения, возможностью умножения внешней тактовой частоты, политикой записи внутреннего кэша и напряжением питания:
· P23N Intel487 SX - аналог процессора 486 DX (FPU+CPU), устанавливаемый в гнездо сопроцессора и отключающий «основной» SX-процессор.
· Р24С IntelDX4 CPU — процессор с утроением частоты (OEM-версия), питание 5 В или 3,3 В может иметь средства SMM. · Р23Т Intel486 SX (или DX) OverDrive. Процессор Р24Т — Pentium®OverDrive®, хотя и имеет системную шину процессора Intel486, по архитектуре относится к классу Pentium. Рассмотрим подробнее основные нововведения в архитектуру процессоров, появившиеся в четвертом поколении. Внутренний кэш Процессор 486 имеет внутренний первичный кэш (Cache Level 1) размером 8 Кбайт, единый для данных и инструкций. Кэш имеет 4-канальную наборно-ассоциативную архитектуру и работает на уровне физических адресов памяти. Кэш содержит 128 наборов по 4 строки размером по 16 байт каждая. Строки в кэш-памяти выделяются только при чтении, политика записи первых процессоров 486 — Write Through (сквозная запись), полностью программно-прозрачная; более поздние модификации позволяют переключаться на политику Write Back (обратная запись). Заполнение строки процессор старается выполнить самым быстрым способом — пакетным циклом с 32-битными передачами, но контроллер памяти может потребовать 16- или 8-битных обменов и отказаться от пакетного режима. Выбор строки для замещения выполняется на основе анализа бит LRU (Least Recently Used) по алгоритму «псевдо-LRU». Выделение и замещение строк выполняется только для кэш-промахов чтения, при промахах записи заполнение строк не производится. Кэширование каталогов страниц (TLB) в процессоре 486 отличается от 386 только улучшением алгоритма замещения — здесь тоже реализован алгоритм псевдо-LRU. На смену конвейерной адресации предыдущих процессоров, начиная с процессора 486, введен режим пакетной передачи (Burst Mode). Этот режим предназначен для быстрых операций со строками кэша. Поскольку использование кэша предполагает, что строка должна в нем присутствовать целиком, ввели пакетный цикл (Burst Cycle), оптимизированный для операций обмена внутреннего кэша с оперативной памятью. В этом цикле адрес и сигналы идентификации типа шинного цикла выдаются только в первом такте пакета. В каждом из последующих тактов могут передаваться данные, адрес для которых уже не передается по шине, а вычисляется из первого по правилам, известным и процессору, и внешнему устройству. В пакетный цикл процессор может преобразовать любой внутренний запрос на множественную передачу, но при чтении его размер ограничен одной строкой кэша, а при записи в стандартном режиме шины в пакет могут собираться не более 32 бит. Более поздние модели процессоров при работе с WB-кэшем при записи строк в память собирают в пакет четыре 32-битных цикла, но это уже работа в расширенном режиме шины процессора.
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|