Взаимодействие основных узлов и устройств персонального компьютера при автоматическом выполнении команды. Архитектура 32-разрядного микропроцессора
Архитектура 32-разрядного микропроцессора
В 1985 году фирма Intel выпустила 32-разрядный микропроцессор, ставший родоначальником семейства IA-32. Развитие этого семейства прошло ряд этапов, среди которых можно выделить следующие: реализация блока обработки чисел с плавающей запятой непосредственно на кристалле МП (микропроцессор I486 ), введение MMX -технологии обработки данных с фиксированной точкой по принципу SIMD - single instruction multi data (один поток команд - множество потоков данных) в микропроцессоре Pentium MMX и развитие этой технологии на числа с плавающей запятой ( SSE - streaming SIMD Extention ), появившееся впервые в МП Pentium III [ [ 4 ] , [ 9 ] ]. Однако основные черты этой архитектуры вплоть до настоящего времени остаются неизменными.
Архитектура 32-разрядного микропроцессора (рис. 10.2) существенно отличается от архитектуры 16-разрядного. Некоторые из этих отличий чисто количественные, другие носят принципиальный характер.
Главное внешнее отличие - увеличение разрядности шины данных и шины адреса до 32 бит. Это, в свою очередь, связано с изменениями в разрядности внутренних элементов микропроцессора и в механизме выполнения некоторых процессов, например, формирования физического адреса.
Регистры блока обработки чисел с фиксированной точкой стали 32-разрядными. К каждому из них можно обращаться как к одному двойному слову (32 разряда). К младшим 16 разрядам этих регистров можно обращаться так же, как и в 16-разрядном микропроцессоре.
В блоке сегментных регистров произошли как количественные, так и качественные изменения. К используемым в реальном режиме четырем регистрам CS, DS, SS и ES добавлены еще два: FS и GS. Хотя разрядность регистров этого блока осталась прежней (каждый по 16 бит), в формировании физического адреса оперативной памяти они используются по-другому. При работе микропроцессора в так называемом защищенном режиме они предназначаются для поиска дескриптора (описателя) сегмента в соответствующих системных таблицах, а уже в дескрипторе хранится базовый адрес и атрибуты сегмента. Формирование адреса в этом случае выполняет блок сегментации диспетчера памяти.
Если помимо сегментов память разбита еще и на страницы, то окончательное вычисление физических адресов выполняет блок управления страницами.
Начиная с микропроцессора I486, в состав кристалла микропроцессора входит блок обработки чисел с плавающей запятой, включающий в себя восемь 80-разрядных регистров для представления знаков, мантисс и порядков таких чисел.
На кристалле микропроцессора располагается также внутренняя кэш-память, которая представляет собой особым образом организованную быстродействующую буферную память, предназначенную для хранения наиболее часто используемой информации (команд и данных). В различных моделях микропроцессоров объем кэш-памяти составляет от 8 Кбайт до 512 Кбайт.
Микропроцессор на аппаратном уровне поддерживает мультипрограммный режим работы ЭВМ, то есть возможность иметь в памяти одновременно несколько готовых к выполнению программ, запуск которых осуществляется операционной системой в соответствии с алгоритмами ее функционирования либо в зависимости от особых ситуаций, складывающихся в работе внешних устройств.
С этой возможностью неразрывно связаны средства защиты памяти, которые обеспечивают контроль над неразрешенными взаимодействиями между отдельными программами. Они включают в себя защиту при управлении памятью и защиту по привилегиям.
Главные особенности расширенного формата команды - возможность использовать любой из регистров общего назначения в любом из режимов адресации, а также добавление еще одного режима адресации - относительного базового индексного с масштабированием. При этом эффективный адрес формируется следующим образом:
ЭА = (base) + (index) x scale + disp,
где ( base ) - значение базового регистра; ( index ) - значение индексного регистра; scale - величина масштабного множителя (scale = 1,2,3,4); disp - значение смещения, закодированного в самой команде.
Отметим, что в 32-разрядной архитектуре эффективный адрес обычно называют смещением ( offset ), в то же время отличая его от смещения, кодируемого в самой команде ( displacement ).