Режимы работы процессора: Режимы работы центрального процессора

Содержание

Режимы работы центрального процессора


 

В 1976 году фирма Intel закончила разработку 16-разрядного микропроцессора i8086. Он имел разрядность регистров 16 бит и системной шины адреса 20 бит, за счет чего мог адресовать до 1 Мбайт оперативной памяти.

В 1982 году был создан i80286. Этот микропроцессор представлял собой улучшенный вариант i8086. Он поддерживал уже несколько режимов работы: реальный, когда формирование адреса производилось по правилам i8086, и защищенный, который аппаратно реализовывал многозадачность и управление виртуальной памятью, i80286 имел также большую разрядность шины адреса — 24 разряда против 20 у i8086, и поэтому он мог адресовать до 16 Мбайт оперативной памяти. Первые компьютеры на базе этого микропроцессора появились в 1984 году.

В 1985 году фирма Intel представила первый 32-разрядный микропроцессор i80386, аппаратно совместимый снизу вверх со всеми предыдущими микропроцессорами этой фирмы. Он был гораздо мощнее своих предшественников, имел 32-разрядную архитектуру и мог прямо адресовать до 4 Гбайт оперативной памяти. Микропроцессор i386 стал поддерживать новый режим работы — режим виртуального i8086, который обеспечил не только большую эффективность работу программ, разработанных для i8086, но и позволил осуществлять параллельную работу нескольких таких программ.

В настоящее время микропроцессор с 32-битной Intel-архитектурой может работать в одном из четырех режимов:

  • реальный режим
  • системный режим
  • защищенный режим
  • режим виртуального i8086
Реальный режим (Real Mode)

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

Режим системного управления (System Management Mode).

В новых поколениях микропроцессоров Intel появился режим системного управления. Он предназначен для выполнения некоторых действий с возможностью их полной изоляции от прикладного программного обеспечения и даже от операционной системы. Микропроцессор переходит в этот режим только аппаратно. Никакой программный способ не предусмотрен для перехода в этот режим. Микропроцессор возвращается из режима системного управления в тот режим, при работе в котором был получен соответствующий сигнал по команде RSM. Эта команда работает только в режиме системного управления и в других режимах не распознается, генерируя исключение #6 (недействительный код операции).

Защищенный режим (Protected Mode)

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

виртуальным. Размер виртуального адресного пространства программы может превышать емкость физической памяти и достигать 64Тбайт.

Виртуальный режим i8086 (V86)

В режим V86 процессор может перейти из защищённого режима, если установить в регистре флагов EFLAGS бит виртуального режима (VM-бит, бит 17). Когда процессор находится в виртуальном режиме, его поведение во многом напоминает поведение процессора i8086. В частности, для адресации памяти используется схема <сегмент:смещение>, размер сегмента составляет 64 килобайта, а размер адресуемой в этом режиме памяти — 1 мегабайт.  Виртуальный режим предназначен для работы программ, ориентированных на процессор i8086 (или i8088). Но виртуальный режим – это не реальный режим процессора i8086, имеются существенные отличия. Процессор фактически продолжает использовать схему преобразования адресов памяти и средства мультизадачности защищённого режима.

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

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

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

Назад


Назад: Язык ассемблера

Лекция 2. Процессор. Режимы работы процессора. Пользовательские регистры процессора.

2.1. Процессор.

Самый основной элемент компьютера, это, конечно, процессор. Давайте подробней его рассмотрим. Упрощённая структура процессора (рис. 4):


Рис. 4. Упрощённая структура процессора

Основные элементы процессора:

·         Регистры – это специальные ячейки памяти, физически расположенные внутри процессора. В отличие от ОЗУ, где для обращения к данным требуется использовать шину адреса, к регистрам процессор может обращаться напрямую. Это существенно ускорят работу с данными.

·         Арифметико-логическое устройство выполняет арифметические операции, такие как сложение, вычитание, а также логические операции.

·         Блок управления определяет последовательность микрокоманд, выполняемых при обработке машинных кодов (команд).

·         Тактовый генератор, или генератор тактовых импульсов, задаёт рабочую частоту процессора.

2.2. Режимы работы процессора.

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

1.        Реальный (незащищенный) режим (real address mode) — режим, в котором работал процессор 8086. В современных процессорах этот режим поддерживается в основном для совместимости с древним  программным обеспечением (DOS-программами).

2.        Защищенный режим (protected mode) — режим, который впервые был реализован в 80286  процессоре. Все современные операционные системы (Windows, Linux и пр.) работают в защищенном режиме. Программы реального режима не могут функционировать в защищенном режиме.

3.        Режим виртуального процессора 8086 (virtual-8086 mode, V86) — в этот режим можно перейти только из защищенного режима. Служит для обеспечения функционирования  программ  реального  режима,  причем дает возможность одновременной работы нескольких таких программ, что в реальном  режиме невозможно. Режим V86 предоставляет аппаратные средства для формирования виртуальной  машины, эмулирующей процессор8086. Виртуальная машина формируется программными  средствами  операционной  системы.  В Windows такая виртуальная машина называется VDM (Virtual DOS Machine — виртуальная машина DOS). VDM перехватывает и обрабатывает системные вызовы  от работающих DOS-приложений.

4.        Нереальный режим (unreal mode, он же big real mode) — аналогичен реальному режиму, только позволяет получать доступ ко всей физической памяти, что невозможно в реальном режиме.

5.        Режим системного управления System Management Mode (SMM) используется в служебных и отладочных целях.

При загрузке компьютера процессор всегда находится в реальном режиме, в этом режиме  работали  первые  операционные системы, например MS-DOS, однако современные операционные системы, такие  как Windows и Linux переводят процессор в защищенный режим. Вам, наверное, интересно, что защищает процессор в защищенном режиме? В защищенном режиме процессор защищает выполняемые программы в памяти от взаимного влияния (умышленно или по ошибке) друг на друга, что легко может произойти в реальном режиме. Поэтому защищенный режим и назвали защищенным.

2.3. Регистры процессора (программная модель процессора).

Для понимания работы команд ассемблера необходимо четко представлять, как выполняется адресация данных, какие регистры процессора и как могут использоваться при выполнении инструкций. Рассмотрим базовую программную модель процессоров Intel 80386, в которую входят:

·         8 регистров общего назначения, служащих для хранения данных и указателей;

·         регистры сегментов — они хранят 6 селекторов сегментов;

·         регистр управления и контроля EFLAGS, который позволяет управлять состоянием выполнения программы и состоянием (на уровне приложения) процессора;

·         регистр-указатель EIP выполняемой следующей инструкции процессора;

·         система команд (инструкций) процессора;

·         режимы адресации данных в командах процессора.

Начнем с описания базовых регистров процессора Intel 80386.

Базовые регистры процессора Intel 80386 являются основой для разработки программ и позволяют решать основные задачи по обработке данных. Все они показаны на рис. 5.


Рис. 5. Базовые регистры процессора Intel 80386

Среди базового набора регистров выделим отдельные группы и рассмотрим их назначение.

2.4. Регистры общего назначения.

32-битные регистры ЕАХ (аккумулятор), ЕВХ (база), ЕСХ (счетчик), EDX (регистр данных) могут использоваться без ограничений для любых целей – временного хранения данных, аргументов или результатов различных операций. Названия регистров происходят от того, что некоторые команды применяют их специальным образом: так, аккумулятор часто необходим для хранения результата действий, выполняемых над двумя операндами, регистр данных в этих случаях получает старшую часть результата, если он не умещается в аккумулятор, регистр-счетчик работает как счетчик в циклах и строковых операциях, а регистр-база – при так называемой адресации по базе. Младшие 16 бит каждого из этих регистров применяются как самостоятельные регистры с именами АХ, ВХ, СХ, DX. На самом деле в процессорах 8086 – 80286 все регистры были 16-битными и назывались именно так, а 32-битные ЕАХ – EDX появились с введением 32-битной архитектуры в 80386. Кроме этого, отдельные байты в 16-битных регистрах АХ – DX тоже могут использоваться как 8-битные регистры и иметь свои имена. Старшие байты этих регистров называются АН, ВН, СН, DH, а младшие — AL, BL, CL, DL (см.    рис.4.1).

Остальные четыре регистра – ESI (индекс источника), EDI (индекс приемника), ЕВР (указатель базы), ESP (указатель стека) – имеют более конкретное назначение и применяются для хранения всевозможных временных переменных. Регистры ESI и EDI необходимы в строковых операциях, ЕВР и ESP – при работе со стеком. Так же как и в случае с регистрами ЕАХ — EDX, младшие половины этих четырех регистров называются SI, DI, BP и SP соответственно, и в процессорах до 80386 только они и присутствовали.

2.5. Сегментные регистры.

При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещение искомого байта относительно этого начала (в бессегментной модели памяти flat адреса начал всех сегментов равны). Операционные системы (кроме DOS) могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Так как сегменты способны оказаться где угодно, программа обращается к ним, применяя вместо настоящего адреса начала сегмента 16-битное число, называемое селектором. В процессорах Intel предусмотрено шесть 16-битных регистров — CS, DS, ES, FS, GS, SS , где хранятся селекторы. (Регистры FS и GS отсутствовали в 8086, но появились уже в 80286.) Это означает, что в любой момент можно изменить параметры, записанные в этих регистрах.

В отличие от DS, ES, GS, FS, которые называются регистрами сегментов данных, CS и SS отвечают за сегменты двух особенных типов – сегмент кода и сегмент стека. Первый содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из кода, находящегося в другом сегменте, с тем же смещением. Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP (указатель инструкции, 16-битная форма IP), запись в который так же приведет к тому, что далее будет исполнена какая-нибудь другая команда. На самом деле все команды передачи управления – перехода, условного перехода, цикла, вызова подпрограммы и т.п. – и осуществляют эту самую запись в CS и EIP.

2.6. Регистр флагов.

Еще один важный регистр, использующийся при выполнении большинства команд, — регистр флагов. Как и раньше, его младшие 16 бит, представлявшие собой весь этот регистр до процессора 80386, называются FLAGS. В EFLAGS каждый бит является флагом, то есть устанавливается в 1 при определенных условиях или установка его в 1 изменяет поведение процессора. Все флаги, расположенные в старшем слове регистра, имеют отношение к управлению защищенным режимом, поэтому здесь рассмотрен только регистр FLAGS (см. рис. 6):


Рис. 6. Регистр флагов FLAGS.

CF – флаг переноса. Устанавливается в 1, если результат предыдущей операции не уместился в приемнике и произошел перенос из старшего бита или если требуется заем (при вычитании), в противном случае – в 0. Например, после сложения слова 0FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000h и флаг CF = 1.

PF – флаг четности. Устанавливается в 1, если младший байт результата предыдущей команды содержит четное число битов, равных 1, и в 0, если нечетное. Это не то же самое, что делимость на два. Число делится на два без остатка, если его самый младший бит равен нулю, и не делится, когда он равен 1.

AF – флаг полупереноса или вспомогательного переноса. Устанавливается в 1, если в результате предыдущей операции произошел перенос (или заем) из третьего бита в четвертый. Этот флаг используется автоматически командами двоично-десятичной коррекции.

ZF – флаг нуля. Устанавливается в 1, если результат предыдущей команды – ноль.

SF – флаг знака. Он всегда равен старшему биту результата.

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

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

DF – флаг направления. Он контролирует поведение команд обработки строк: когда он установлен в 1, строки обрабатываются в сторону уменьшения адресов, когда DF=0 – наоборот.

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

Флаги IOPL (уровень привилегий ввода-вывода) и NT (вложенная задача) применяются в защищенном режиме.

2.7. Цикл выполнения команды

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

Для того чтобы процессор знал, какую команду нужно выполнять в определённый момент, существует счётчик команд – специальный регистр, в котором хранится адрес команды, которая должна быть выполнена после выполнения текущей команды. То есть при запуске программы в этом регистре хранится адрес первой команды. В процессорах Intel в качестве счётчика команд (его ещё называют указатель команды) используется регистр EIP (или IP в 16-разрядных программах).

Счётчик команд работает со сверхоперативной памятью, которая находится внутри процессора. Эта память носит название очередь команд, куда помещается одна или несколько команд непосредственно перед их выполнением. То есть в счётчике команд хранится адрес команды в очереди команд, а не адрес оперативной памяти.

Цикл выполнения команды – это последовательность действий, которая совершается процессором при выполнении одной машинной команды. При выполнении каждой машинной команды процессор должен выполнить как минимум три действия: выборку, декодирование и выполнение. Если в команде используется операнд, расположенный в оперативной памяти, то процессору придётся выполнить ещё две операции: выборку операнда из памяти и запись результата в память. Ниже описаны эти пять операций.

  • Выборка команды. Блок управления извлекает команду из памяти (из очереди команд), копирует её во внутреннюю память процессора и увеличивает значение счётчика команд на длину этой команды (разные команды могут иметь разный размер).
  • Декодирование команды. Блок управления определяет тип выполняемой команды, пересылает указанные в ней операнды в АЛУ и генерирует электрические сигналы управления АЛУ, которые соответствуют типу выполняемой операции.
  • Выборка операндов. Если в команде используется операнд, расположенный в оперативной памяти, то блок управления начинает операцию по его выборке из памяти.
  • Выполнение команды. АЛУ выполняет указанную в команде операцию, сохраняет полученный результат в заданном месте и обновляет состояние флагов, по значению которых программа может судить о результате выполнения команды.
  • Запись результата в память. Если результат выполнения команды должен быть сохранён в памяти, блок управления начинает операцию сохранения данных в памяти.

Суммируем полученные знания и составим цикл выполнения команды:

  1. Выбрать из очереди команд команду, на которую указывает счётчик команд.
  2. Определить адрес следующей команды в очереди команд и записать адрес следующей команды в счётчик команд.
  3. Декодировать команду.
  4. Если в команде есть операнды, находящиеся в памяти, то выбрать операнды.
  5. Выполнить команду и установить флаги.
  6. Записать результат в память (по необходимости).
  7. Начать выполнение следующей команды с п.1.

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

 

Режимы работы микропроцессора (Лекция) | МПС

МПС

Режимы работы микропроцессора (Лекция)

ПЛАН ЛЕКЦИИ

1. Режимы работы микропроцессора

2. Защищенный режим

3. Реальный режим

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

5. Переключение между режимами

 

1. Режимы работы микропроцессора

Впервые о различных режимах работы процессоров стали говорить с появлением процессора 80286. Это был первый представитель данного семейства процессоров, в котором были реализованы многозадачность и защищенная архитектура. Чтобы обеспечить совместимость с предыдущими представителями этого семейства (8086/88, 80186/188) в процессоре 80286 было реализовано два режима функционирования: режим эмуляции 8086 (режим реального адреса) и защищенный режим, в котором используются все возможности процессора. В последующих поколениях процессоров этого семейства защищенный режим становится основным режимом работы.

В новых поколениях процессоров Intel появился еще один режим работы - режим системного управления. Впервые он был реализован в процессорах 80386SL и i486SL. Начиная с расширенных моделей Intel486, этот режим стал обязательным элементом архитектуры IA-32. С его помощью прозрачно даже для операционной системы на уровне BIOS реализуются функции энергосбережения.

 

2. Защищенный режим (Protected Mode)

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

В защищенном режиме программа оперирует адресами, которые могут относиться к физически отсутствующим ячейкам памяти, поэтому такое адресное пространство называется виртуальным. Размер виртуального адресного пространства программы может превышать емкость физической памяти и достигать 64Тбайт. Для адресации виртуального адресного пространства используется сегментированная модель, в которой адрес состоит из двух элементов: селектора сегмента и смещения внутри сегмента. С каждым сегментом связана особая структура, хранящая информацию о нем, — дескриптор. Кроме «виртуализации» памяти на уровне сегментов существует возможность «виртуализации» памяти при помощи страниц — страничная трансляция. Страничная трансляция предоставляет удобные средства для реализации в операционной системе функций подкачки, а кроме того в процессорах P6+ обеспечивает 36-битную физическую адресацию памяти (64Гбайт).

Встроенные средства переключения задач обеспечивают многозадачность в защищенном режиме. Среда задачи состоит из содержимого регистров МП и всего кода с данными в пространстве памяти. Микропроцессор способен быстро переключаться из одной среды выполнения в другую, имитируя параллельную работу нескольких задач. Для некоторых задач может эмулироваться управление памятью как у процессора 8086. Такое состояние задачи называется режимом виртуального 8086 (Virtual 8086 Mode). О пребывании задачи в таком состоянии сигнализирует бит VM в регистре флагов. При этом задачи виртуального МП 8086 изолированы и защищены, как от друг друга, так и от обычных задач защищенного режима.

Защита задач обеспечивается следующими средствами: контроль пределов сегментов, контроль типов сегментов, контроль привилегий, привилегированные инструкции и защита на уровне страниц. Контроль пределов и типов сегментов обеспечивает целостность сегментов кода и данных. Программа не имеет права обращаться к виртуальной памяти, выходящей за предел того или иного сегмента. Программа не имеет права обращаться к сегменту данных как к коду и наоборот. Архитектура защиты микропроцессора обеспечивает 4 иерархических уровня привилегий, что позволяет ограничить задаче доступ к отдельным сегментам в зависимости от ее текущих привилегий. Кроме того, текущий уровень привилегий задачи влияет на возможность выполнения тех или иных специфических команд (привилегированных инструкций). Функции страничной трансляции, впервые появившиеся в МП Intel386, обеспечивают дополнительные механизмы защиты на уровне страниц.

 

3. Реальный режим (Real Mode)

В реальном режиме микропроцессор работает как очень быстрый 8086 с возможностью использования 32-битных расширений. Механизм адресации, размеры памяти и обработка прерываний (с их последовательными ограничениями) МП Intel386 в реальном режиме полностью совпадают с аналогичными функциями МП 8086. В отличие от 8086 микропроцессоры 286+ в определенных ситуациях генерируют исключения, например, при превышении предела сегмента, который для всех сегментов в реальном режиме — 0FFFFh.

Имеется две фиксированные области в памяти, которые резервируются в режиме реальной адресации:

·                     область инициализации системы

·                     область таблицы прерываний

Ячейки от 00000h до 003FFH резервируются для векторов прерываний. Каждое из 256 возможных прерываний имеет зарезервированный 4-байтовый адрес перехода. Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы.

 

4. Режим системного управления (System Management Mode)

Режим системного управления предназначен для выполнения некоторых действий с возможностью их полной изоляции от прикладного программного обеспечения и даже операционной системы. Переход в этот режим возможен только аппаратно. Когда процессор находится в режиме SMM, он выставляет сигнал SMIACT#. Этот сигнал может служить для включения выделенной области физической памяти (System Management RAM), так что память SMRAM можно сделать доступной только для этого режима. При входе в режим SMM процессор сохраняет свой контекст в SMRAM (контекст сопроцессора не сохраняется) по адресу SMM Base и передает управление процедуре, называемой обработчиком System Management Interrupt, по адресу SMM Base+8000h (по умолчанию SMM Base содержит значение 30000h). Состояние процессора в этот момент точно определено: EFLAGS обнулен (кроме зарезервированных битов), сегментные регистры содержат селектор 0000, базы сегментов установлены в 00000000, пределы — 0FFFFFFFFh.

Следует отметить, что в режиме SMM не предусмотрена работа с прерываниями и особыми случаями: прерывания по IRQ и SMI# замаскированы, пошаговые ловушки и точки останова отключены, обработка прерывания по NMI откладывается до выхода из режима SMM. Если необходимо обеспечить работу с прерываниями или особыми случаями, то надо инициализировать IDT и разрешить прерывания, выставив флаг IF в регистре EFLAGS. Прерывания по NMI будут разблокированы автоматически после первой же команды IRET.

При возврате из SMM (по инструкции RSM) процессор восстанавливает свой контекст из SMRAM. Обработчик может программно внести изменения в образ контекста процессора, тогда процессор перейдет не в то состояние, в котором произошло SMI. Если SMI было получено во время выполнения инструкции HLT, то дальнейшие действия при выходе из SMM определяются значением поля «Auto HALT Restart»: процессор может снова вернуться к инструкции останова или перейти к выполнению следующей команды. Если SMI произошло при выполнении инструкции ввода-вывода, то в зависимости от значения поля «I/O Instruction Restart» возможен рестарт инструкции ввода вывода.

Эти особенности режима системного управления позволяют использовать его для реализации системы управления энергосбережением компьютера или функций безопасности и контроля доступа.

 

5. Переключение между режимами

Рис. 1. Схема переключения между режимами

 

После инициализации процессор находится в реальном режиме. Процессор может быть переведен в защищенный режим установкой бита 0 (Protect Enable) в регистре CR0:

MOV EAX,00000001h

MOV CR0,EAX

или

MOV AX,0001h

LMSW AX

Второй вариант «достался в наследство» от 16-разрядной архитектуры 80286, для совместимости с которой ее регистр MSW (Machine Status Word) отображается на младшее слово регистра CR0.

Вернуться в режим реального адреса процессор может по сигналу RESET или (в отличие от 80286) сбросив бит PE:

MOV EAX,00000000h
MOV CR0,EAX

Для совместимости с 80286 инструкция LMSW бит PE не сбрасывает.

Режим системного управления изолирован от других режимов. Процессор переходит в этот режим только аппаратно: по низкому уровню на контакте SMI# или по команде с шины APIC (Pentium+). Никакой программный способ не предусмотрен для перехода в этот режим. Процессор возвращается из режима системного управления в тот режим, при работе в котором был получен сигнал SMI#. Возврат происходит по команде RSM. Эта команда работает только в режиме системного управления и в других режимах не распознается, генерирую исключение #6 (недействительный код операции).

 

 

Страница не найдена – kpet-ks.ru

И так дорогие друзья, настало время поразмышлять над информацией, точнее над её свойствами. Любую деятельность человека сложно представить без сбора, обработки и хранения информации, принятие решений на её основании. В последнее время мы говорим об информации как о ресурсе научно-технического прогресса. Информация содержится в человеческой речи, в сообщениях средств массовой […]

Дорогие друзья, настало время подведения итогов. Во время игры наблюдались разные участники с первого и второго курса. Кто-то сдался ещё на первых загадках, отгадав одну из двух., сдались потеряв всякую надежду. Были и те, кто наблюдал со стороны: читали загадки, следили за новостями. Но у меня ещё с первых дней […]

Существо, повлиявшее на ход работы программы, вклеенное 9 сентября 1945 года в технический дневник Гарвардского университета с определённой надписью, но будучи вклеенной в тот журнал, существо по сей день является программистам. Комплекс технических, аппаратных и программных средств, выполняющий различного рода информационные процессы.

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

Загадки При интернет сёрфинге мы передвигаемся по «звеньям одной цепи», то есть по … Можно подумать, что эти специалисты в компьютерном мире самые трудолюбивые «садовники», использующие в качестве инструмента мотыгу, тяпку, кайло. Напоминаю, что термины из области информатики, но “ноги растут” из английских слов. Удачи!

Загадки: Компьютерное изобретение, благодаря которому мы узнали имя одного из первых основателей корпорации Intel.   Инженерное сооружение, отличающееся значительным преобладанием высоты над стороной или диаметром основания. Все термины из области информатики и ИКТ. Будьте внимательны!

Очередная порция загадок: Наука о проектировании зданий, сооружений или набор типов данных и описания ПК. Устройство вывода, которое в переводе с английского языка синонимично «exhibition». Удачи.

Друзья мои, перед вами первая порция  загадок: отсчёт пошёл. Загадки: Устройство ввода, которое определило жизнь маленькой девочки по им. Дюймовочка. Место, расположенное вблизи берега моря или реки, устроенное для стоянки кораблей и судов, по совместительству разъём у ПК, ноутбуков и телефонов. Ответы присылаем на почту ведущего: [email protected] Убедительная просьба, подписывайтесь […]

Дорогие друзья!!! В течении недели с 23.04.18г. по 28.04.18г., будет проведена онлайн викторина «Загадка о загадке». Где каждый день будет публиковаться порция загадок (всего загадок 10). Каждая загадка оценивается в 5 баллов. Если с первой попытки загадка не отгадана будут даны подсказки, но ответ по подсказке будет оценён в 4 […]

“Проект при поддержке компании RU-CENTER” Подробнее ознакомиться с правилами участия в программе “RU-CENTER – Будущему” Вы также сможете на сайте Миссия программы — содействовать развитию общеобразовательных учреждений и повышению качества образования в нашей стране. Цели  программы — предоставить технические возможности для создания, поддержки и развития сайтов образовательных учреждений; обеспечить условия […]

Режимы работы процессора реальный режим

Реальный режим (Real Mode) соответствует возможностям CPU 8086/8088, позволяя адресовать не более I Мбайт памяти.

Чтобы поддержать совместимость с ранее разработанными программами, процессоры 286 и даже Pentium работают под управлением операционной системы MS-DOS в реальном режиме и используют при этом, конечно же, минимальные возможности процессора.

Защищенный режим Защищенный режим (Protected Mode) появился впервые в CPU 80286. В этом режиме CPU может адресовать до 16 Мбайт физической и до I Гбайт виртуальной памяти. Если физическая память полностью загружена, то данные, не поместившиеся в память, располагаются на винчестере. Таким образом, CPU работает не с реальными, а с виртуальными адресами, которые управляются с помощью специальных таблиц, чтобы информацию можно было найти (или снова записать). Эту память называют еще виртуальной памятью, потому что фактически она не существует.

Кроме того, в защищенном режиме возможна поддержка мультизадачного режима (Multitasking). При этом CPU может выполнять различные программы в выделенные кванты времени, отведенные каждой из программ (пользователю же кажется, что программы выполняются одновременно).

Виртуальный режим Впервые, начиная с процессора 386, CPU могут эмулировать работу нескольких процессоров 8086 (максимум 256) и, тем самым, обеспечить многопользовательский режим так, чтобы на одном PC можно было запустить одновременно даже различные операционные системы. Естественно, увеличивается и возможное количество выполняемых приложений.

64-разрядный режим Начиная с процессоров AMD64, в современных высокопроизводительных процессорах х86 поддерживается 64-разрядная обработка данных, т. е. основные регистры процессора имеют размер 64 бита. Правда, в процессорах линейки х86 64-разрядный режим реализован как дополнительный, а основным остается 32-разрядный. Процессор может по командам в программе переключаться между этими режимами работы.

Разработчиками процессоров гарантируется, что все старое программное обеспечение, предназначенное для 32-разрядных процессоров, может работать и на новых процессорах. Причем одновременно могут выполняться как 32-разрядные программы, так и 64-разрядные.

При работе на компьютере с 64-разрядным процессором не следует думать, что поскольку удвоена разрядность процессора, на старом программном обеспечении будет достигнута двукратная производительность. Для получения выигрыша при использовании 64-разрядных процессоров необходима новая операционная система и новое прикладное программное обеспечение. В ряде случаев производительность системы может даже снижается, т. к. объем программного кода увеличивается почти в два раза, т. к. каждая команда имеет размерность не менее 64 бит.

Хотя мы ныне вошли в эпоху 64-разрядных вычислений, но следует помнить, что при появлении процессоров I386, которые принесли 32-разрядные вычисления, переход с 16 разрядов на 32 занял довольно длительное время. Та же самая ситуация происходит и с 64-разрядными процессорами. В настоящее время происходит процесс накопления 64-разрядного программного обеспечения, которое, в основном, используется для профессиональной деятельности.

⇐Адресация памяти | Аппаратные средства PC | Процессоры первого и второго поколения⇒

19. Режимы работы (реальный, защищенный, виртуальный).

РЕЖИМЫ РАБОТЫ ПРОЦЕССОРА

Процессоры могут работать в различных режимах. Под термином «режим» подразумевается способы, которым процессор создает (и обеспечивает) для себя рабочую среду. Режим работы процессора задает способ адресации к оперативной памяти и способ управления отдельными задачами. Процессоры персональных компьютеров могут работать в трех режимах: реальном, защищенном и виртуальном режимах.

Реальный режим

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

Защищенный режим

Начиная с процессоров Intel 80286 и компьютеров типа IBM PC/AT, появляется защищенный режим. Это более мощный режим работы процессора по сравнению с реальным режимом. Он используется в современных многозадачных операционных системах. Защищенный режим имеет много преимуществ:

■ В защищенном режиме доступна вся системная память (не существует предела 1 Мбайт).

■ В защищенном режиме операционная система может организовать одновременное выполнение нескольких задач (многозадачность).

■ В защищенном режиме поддерживается виртуальная память — операционная система при необходимости может использовать жесткий диск в качестве расширения оперативной памяти.

■ В защищенном режиме осуществляется быстрый (32/64-разрядный) доступ к памяти и поддерживается работа 32-х разрядных операций ввода-вывода.

Каждая выполняемая на компьютере программа имеет свою собственную область памяти, которая защищена от доступа со стороны других программ. Когда какая-либо программа пытается обратиться по неразрешенному для нее адресу памяти, генерируется ошибка защиты памяти. Все современные операционные системы используют защищенный режим, включая Windows 98/Ме, Windows NT/2000/XP, OS/2 и Linux. Даже операционная система DOS (обычно работающая в реальном режиме) может использовать доступ к памяти защищенного режима с помощью программного интерфейса DPMI (DOS Protected Mode Interface — интерфейс защищенного режима операционной системы DOS). Этот интерфейс используется компьютерными играми и другими программами под DOS для того, чтобы преодолеть барьер в 640 Кбайт основной памяти DOS. С появлением процессора Intel 386 защищенный режим был усовершенствован: увеличено максимально доступное адресное пространство, расширена система команд. Поэтому он иногда называется усовершенствованным защищенным режимом.

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

Виртуальный режим

Защищенный режим используют графические многозадачные операционные системы, такие как Windows. Иногда возникает необходимость выполнения DOS-программ в среде операционной системы Windows. Но DOS-программы работают в реальном режиме, а не в защищенном. Для решения этой проблемы был разработан виртуальный режим или режим виртуального процессора 8086. Этот режим эмулирует (имитирует) реальныйрежим, необходимый для работы DOS-программ, внутри защищенного режима. Операционные системы защищенного режима (такие как Windows) могут создавать несколько машин виртуального режима — при этом каждая из них будет работать так, как будто она одна использует все ресурсы персонального компьютера. Каждая виртуальная машина получает в свое распоряжение 1 Мбайтное адресное пространство, образ реальных программ BIOS и т.п. Виртуальный режим используется при работе в DOS-окне или при запуске DOS-игр в операционной системе Windows 98/Ме. При запуске на компьютере DOS-приложения операционная система Windows создает виртуальную DOS-машину, в которой выполняется это приложение.

Режимы работы современных процессоров — презентация онлайн

Лекция
Режимы работы современных
процессоров
Программная модель современных процессоров х86
Современные представители семейства х86 являются 32-битными
процессорами; в новых моделях появилось 64-битное расширение. История
32-битных процессоров Intel (архитектуры IA-32) началась с процессора
80386. Он вобрал в себя все черты своих 16-битных предшественников
8086/88 и 80286 для обеспечения совместимости с громадным объемом ПО,
существовавшего на момент его появления.
Разрядность адреса определяет, сколько битов (16, 32 или 64) используется
в регистрах, формирующих адрес данных или инструкций, расположенных в
памяти. Разрядность данных определяет, сколько битов используется в
инструкциях, оперирующих словами. Каждому режиму работы процессоров
соответствуют своя разрядность, применяемая по умолчанию. При
необходимости для каждой исполняемой инструкции разрядность адреса
или/и операнда может изменяться с помощью специальных префиксов
(байтов перед кодом инструкции).
32-битные регистры процессоров позволяют непосредственно адресовать до
4 Гбайт памяти. Встроенный блок управления памятью поддерживает
механизмы сегментации и страничной трансляции адресов.
Расширения х86-64 и ЕМ64Т в первую очередь предназначены для
радикального увеличения объема адресуемой памяти: 64-битные регистры
позволяют адресовать до 264 =18,4 х 1018 байт. Это число и является
пределом объема виртуальной памяти 64-битного процессора, но пока
используют только младшие 48 битов адреса.
Процессоры предоставляют четырехуровневую систему привилегий для
защиты памяти, ввода-вывода и прерываний, а также механизм
переключения задач для многозадачных ОС.
Процессоры могут работать в различных режимах, определяющих
возможности адресации памяти и защиты.
Режим работы процессора задается операционной системой с учетом режима
работы приложений (задач). У процессоров с 64-битным расширением
появляются новые режимы, среди которых есть и режимы, обеспечивающие
совместимость с 32-разрядными операционными системами и
приложениями. Новые режимы используются только в 64-битных ОС, а
полностью их преимущества доступны только 64-битным приложениям.
Режимы работы процессоров
32-битные процессоры могут работать в одном из следующих режимов:
♦ Режим реальной адресации (real address mode), или просто реальный
режим (real mode), полностью совместим с 8086. В этом режиме возможна
адресация до 1 Мбайт физической памяти (на самом деле, как и у 80286,
почти на 64 Кбайт больше).
♦ Защищенный режим виртуальной адресации (protected virtual address
mode), или просто защищенный режим (protected mode). В этом режиме у
процессора включаются механизмы сегментации и страничной трансляции.
Механизм сегментации позволяет поддерживать виртуальную память
объемом до 64 Тбайт. На практике используется только страничная
трансляция, благодаря которой каждой задаче предоставляется до 4 Гбайт
виртуального адресного пространства. По умолчанию и адреса, и операнды
имеют разрядность 32 бита. В защищенном режиме процессор может
выполнять дополнительные инструкции, недоступные в реальном режиме;
ряд инструкций, связанных с передачей управления, обработкой прерываний,
и некоторые другие выполняются иначе, чем в реальном режиме.
Есть возможность организации 16-разрядного защищенного режима в стиле
процессора 80286, но этот режим не представляет интереса.
♦ Режим виртуального процессора 8086 (Virtual 8086 Mode, V86) является
особым состоянием задачи защищенного режима, в котором процессор
функционирует как 8086 (16-битные адрес и данные). На одном процессоре в
таком режиме могут параллельно исполняться несколько задач с
изолированными друг от друга ресурсами. При этом использование
физического адресного пространства памяти управляется механизмами
сегментации и трансляции страниц. Попытки выполнения недопустимых
команд, выхода за рамки отведенного пространства памяти и разрешенной
области ввода-вывода контролируются системой защиты. Более эффективен
расширенный режим виртуального процессора 8086 (Enhanced Virtual 8086
Mode, EV86), в котором оптимизирована виртуализация прерываний.
♦ «Нереальный» режим (unreal mode, он же big real mode) — это
«неофициальный» режим, который поддерживают все 32-битные
процессоры. Он позволяет адресоваться к 4-гигабайтному пространству
памяти. В этом режиме инструкции исполняются так же, как и в реальном
режиме, но с помощью дополнительных сегментных регистров FS и GS
программы получают непосредственный доступ к данным во всей физической
памяти.
♦ В режиме системного управления (System Management Mode, SMM)
процессор выходит в иное, изолированное от остальных режимов
пространство памяти. Этот режим используется в служебных и отладочных
целях. С его помощью, например, скрытно выполняются функции управления
энергопотреблением, эмулируются обращения к несуществующим
аппаратным средствам (эмуляция клавиатуры и мыши PS/2 для USB).
Для процессоров х86-64 вышеперечисленные режимы объединены понятием
legacy mode; кроме того, появился новый режим long mode с двумя
подрежимами:
♦ 64-битный режим (64-bit mode) — это режим полной поддержки 64-битной
виртуальной адресации и 64-битных расширений регистров. В этом режиме
используется только плоская модель памяти (общий сегмент для кода,
данных и стека). По умолчанию разрядность адреса составляет 64 бита, а
операндов (для большинства инструкций) — 32 бита, однако префиксом
(REX) можно заказать 64-битные операнды. Имеется новый способ
адресации данных — относительно указателя инструкций. Режим
предназначен для использования 64-битными ОС при запуске 64-битных
приложений — он включается операционной системой для сегмента кода
конкретной задачи;
♦ режим совместимости (compatibility mode) позволяет 64-битным ОС
работать с 32- и 16-битными приложениями. Для приложений процессор
выглядит как обычный 32-битный со всеми атрибутами защищенного режима,
сегментацией и страничной трансляцией. 64-битные свойства используются
только операционной системой, что отражается в процедурах трансляции
адресов, обработки исключений и прерываний. Режим включается
операционной системой для сегмента кода конкретной задачи.
32-битные ОС используют процессоры х86-64 только в режиме legacy mode
(как обычный процессор IA-32).
Пространство памяти (memory space) предназначено для хранения кодов
инструкций и данных. Память может логически организовываться в виде
одного или множества сегментов произвольной длины (в реальном режиме —
фиксированной). Помимо сегментации в защищенном режиме возможно (при
страничной трансляции адресов) разбиение логической памяти на страницы
размером 4 Кбайт, каждая из которых может отображаться на любую область
физической памяти. Начиная с 5-го поколения появилась возможность
увеличения размера страницы до 4 Мбайт. Сегментация и страничная
трансляция адресов могут применяться совместно и по отдельности.
Сегментация является средством организации логической памяти на
прикладном уровне. Страничная трансляция адресов применяется на
системном уровне для управления физической памятью. Сегменты и
страницы могут выгружаться из физической оперативной памяти на диск и по
мере необходимости подкачиваться с него обратно в физическую память.
Таким образом реализуется виртуальная память.
Эффективный адрес
При обращении к памяти (к данным), как и при формировании адреса
перехода, процессор строит эффективный адрес, который может включать
до трех компонентов (рис. 1). Такой сложный способ задуман для облегчения
доступа к элементу массива: компонент BASE — базовый адрес массива,
INDEX — номер элемента, DISPLACEMENT — смещение внутри элемента.
Массив может состоять из байтов, слов, двойных и учетверенных слов — это
учитывается масштабным коэффициентом SCALE (1, 2, 4 или 8). Компоненты
эффективного адреса могут быть константами (в инструкции), находиться в
регистрах и даже в памяти. Такая универсальность оборачивается
значительными микроархитектурными издержками.
Преобразование адресов
Применительно к памяти различают три адресных пространства: логическое,
линейное и физическое. По сочетанию сегментации и страничной трансляции
различают две модели памяти:
♦ В сегментной модели памяти приложение использует несколько сегментов
памяти (для кода, данных, стека) и может переключать используемые
сегменты. В этой модели приложение оперирует логическими адресами.
♦ В плоской модели памяти приложению для всех целей выделяется
единственный сегмент. В этой модели приложение оперирует линейными
адресами. Плоская модель гораздо проще и удобнее в обращении и
используется в современных ОС.
Логический адрес состоит из селектора сегмента Seg и эффективного
адреса, называемого также смещением (offset). Логический адрес
обозначается в форме Seg:Offset. Селектор сегмента хранится в старших
14 битах сегментного регистра (CS, DS, ES, SS, FS или GS), участвующего в
адресации конкретного элемента памяти. По значению селектора из
специальных таблиц дескрипторов сегментов, хранящихся в памяти,
извлекается начальный адрес сегмента. Поскольку каждая задача может
иметь до 16К селекторов (214), а смещение, ограниченное размером
сегмента, — достигать 4 Гбайт, логическое адресное пространство для каждой
задачи может равняться 64 Тбайт. Операционная система может ограничить
число доступных сегментов и их конкретные размеры.
Рис. 2. Формирование адреса памяти в 32-битных процессорах: а — в
защищенном режиме, б — в режиме V86, в — в реальном режиме
Преобразование логического адреса в физический для 32-битных
процессоров иллюстрирует рис. 2. Блок сегментации транслирует логическое
адресное пространство в 32-битное пространство линейных адресов.
Линейный адрес образуется сложением базового адреса сегмента с
эффективным адресом.
В реальном режиме селектор любого сегмента равен адресу его начала,
деленому на 16. Чтобы получить адрес в памяти, 16-битное смещение
складывают с этим селектором, сдвинутым предварительно влево на 4
разряда. Таким образом, оказывается, что максимальный доступный адрес в
реальном режиме 220-1 = 1 048 575.
Формирование линейного адреса
Содержимое сегментного регистра сдвигается
влево на 4 бита и складывается со смещением, в
результате
чего
получается
двадцатиразрядный
физический адрес.
19
4
0
0000
15
+
19
0
0
В реальном режиме микропроцессор работает как 8086 с возможностью
использования 32-битных расширений.
В отличие от 8086 микропроцессоры 286+ в определенных ситуациях
генерируют исключения, например, при превышении предела сегмента,
который для всех сегментов в реальном режиме — 0FFFFh.
Имеется две фиксированные области в памяти, которые резервируются в
режиме реальной адресации:
область инициализации системы
область таблицы прерываний
Ячейки от 00000h до 003FFH резервируются для векторов прерываний.
Каждое из 256 возможных прерываний имеет зарезервированный 4-байтовый
адрес перехода.
Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации
системы.
Данный механизм образования физического адреса позволяет сделать
программное обеспечение перемещаемым, то есть не зависящим от
конкретных адресов загрузки его в оперативной памяти.
Недостатки такой организации памяти:
сегменты бесконтрольно размещаются с любого адреса, кратного 16 (так
как содержимое сегментного регистра аппаратно смещается на 4 разряда).
Как следствие, программа может обращаться по любым адресам, в том
числе и реально не существующим;
сегменты имеют максимальный размер 64 Кбайт;
сегменты могут перекрываться с другими сегментами.
Защищенный режим лишен недостатков реального режима, в нем можно
адресоваться к участку памяти размером 4 Гб как к одному непрерывному
массиву и вообще забыть о сегментах и смещениях. Этот режим намного
сложнее реального, поэтому, чтобы переключить в него процессор и
поддерживать работу в этом режиме, надо написать небольшую
операционную систему. Кроме того, если процессор уже находится под
управлением какой-то операционной системы, которая перевела его в
защищенный режим, например Windows , она, скорее всего, не разрешит
программе устранить себя от управления компьютером. С этой целью были
разработаны специальные интерфейсы, позволяющие программам,
запущенным в режиме V86 в DOS, переключаться в защищенный режим
простым вызовом соответствующего прерывания — VCPI и DPMI.
В защищенном режиме базовый адрес загружается из дескриптора,
хранящегося в таблице, по селектору, загруженному в используемый
сегментный регистр.
РАБОТА С АДРЕСАМИ
В защищенном режиме, как и в реальном, логический адрес состоит из
двух компонент. Однако эти компоненты называются не сегмент и
смещение, а селектор и смещение . Для вычисления физического адреса в
процессоре 80286 используются также две таблицы дескрипторов глобальная таблица дескрипторов GDT (Global Descriptor Table ) и
локальная таблица дескрипторов LDT (Local Descroptor Table ). Селектор
используется для адресации ячейки одной из таблиц дескрипторов,
содержащей помимо прочей информации базовый 24-разрядный адрес
сегментов. Для получения физического адреса базовый адрес
складывается со смещением, расширенным до 24 разрядов.
Получение физического адреса в процессоре 80286
Согласно этой схеме адресации памяти, селектор содержит номер ячейки
таблицы дескрипторов, но не компоненту физического адреса. Программа
может задавать не любые значения селекторов, а только те, которые
соответствуют существующим ячейкам таблицы дескрипторов. Разумеется,
программа может загрузить в сегментный регистр любое значение, однако
при попытке обратиться к сегменту памяти с использованием
неправильного селектора работа программы будет прервана.
Таким образом, несмотря на то, что компоненты адреса остались, как и в
реальном режиме, 16-разрядными, новая схема адресации защищенного
режима процессора 80286 позволяет адресовать до 16 Мбайт памяти, так
как в результате преобразования получается 24-разрядный физический
адрес.
Кроме индекса, используемого для выбора ячейки дескрипторной таблицы
при формировании физического адреса, селектор содержит еще два поля
Поле TI (Table Indicator )
бит 2: индикатор таблицы 0/1 — использовать GDT/LDT
Поле RPL
биты 1 – 0: уровень привилегий запроса (RPL)— это число от 0 до 3,
указывающее уровень защиты сегмента, для доступа к которому
используется данный селектор.
Преобразование адресов в защищённом режиме
Процессор i80386 и выше использует трёхступенчатую схему преобразования
адреса. Программы используют логический адрес, состоящий из селектора и
смещения (аналогично процессору i80286). Селектор полностью аналогичен
используемому в процессоре i80286. Компонента смещения является 32разрядной, т.к. допустимый размер сегмента значительно превышает 64
килобайта.
Уровень логического адреса — это первая ступень в схеме преобразования
адресов.
Вторая ступень — получение из логического адреса 32-разрядного линейного
адреса. Линейный адрес берётся из глобальной или локальной таблицы
дескрипторов (GDT или LDT) в зависимости от соответствующего бита
селектора (бит 2). Механизм получения линейного адреса напоминает
механизм получения 24-разрядного физического адреса в процессоре i80286.
Однако линейный адрес не отображается непосредственно на адресную
шину памяти, то есть он не является физическим адресом.
Для получения из линейного адреса физического адреса используется третья
ступень — механизм страничной адресации. С помощью этого механизма 20
старших бит линейного адреса используются для выбора блока памяти
размером 4 килобайта. Такой блок называется страницей физической памяти.
Оставшиеся 12 бит линейного адреса представляют собой смещение внутри
страницы. Процесс преобразования логического адреса в линейный
иллюстрируется рис. 4.
Значение из поля индекса селектора используется в качестве индекса в
таблице LDT или GDT для выборки 32-разрядного базового адреса. Этот
базовый адрес складывается со второй компонентой логического адреса смещением. В результате получается 32-разрядный линейный адрес.
Преобразование линейного адреса в физический иллюстрируется рис. 5.
32
Процесс вычисления адреса страницы часто называют трансляцией страниц.
Старшие 10 бит линейного адреса используются как индекс в таблице,
называемой каталогом таблиц страниц. Расположение каталога таблиц
страниц в физической памяти определяется содержимым системного регистра
процессора CR3.
Каталог таблиц страниц содержит дескрипторы таблиц страниц,
определяющие физический адрес таблиц страниц. В каталоге таблиц страниц
всего может быть 1024 дескриптора. Самих же каталогов может быть сколько
угодно, но в каждый момент времени используется только один — тот, на
который указывает регистр CR3.
Следующие 10 бит линейного адреса предназначены для индексации таблицы
страниц, выбранной с помощью старших 10 бит адреса. Таблица страниц
содержит 1024 дескриптора, определяющих физические адреса страниц
памяти. Размер одной страницы составляет 4 килобайта, т.е. 4096 байт.
Младшие 12 бит линейного адреса указывают смещение к адресуемому байту
внутри страницы.
На рис. 6 представлен формат дескриптора таблицы страниц.
Дескриптор таблицы страниц.
Для представления старших 20 битов физического адреса таблицы страниц
в дескрипторе используются биты 12-31. Младшие 12 битов адреса таблицы
всегда равны нулю, таким образом, таблица страниц должна быть
выровнена в памяти на границу 4096 байт (на границу страницы).
Формат дескриптора страницы представлен на рис.7.
Дескриптор страницы.
Назначение бит 0-11 одинаково и для дескриптора таблицы страниц, и для
дескриптора страницы. В таблице 1 приведено описание этих бит.
Номер
бита
Назначение
0 (P)
Бит присутствия в памяти. Установлен в 1, если определяемая
данным дескриптором таблица страниц находится в
оперативной памяти. Этот бит используется для организации
виртуальной памяти.
1 (W)
Разрешение записи. Если бит установлен в 1, то запись в страницы
разрешена. Бит используется для организации защиты от
записи на уровне страниц.
2 (U)
Пользователь/супервизор. Используется для разграничения
доступа к страницам операционной системы (страницы
супервизора) и страницам программ пользователя. Значение
бита, равное 0, соответствует страницам супервизора, 1 страницам программы пользователя.
3-4
Эти биты зарезервированы и должны быть установлены в 0 для
совместимости со следующими моделями процессора.
5 (A)
Бит доступа. Он устанавливается процессором перед
выполнением операций чтения страницы или записи в
страницу.
6 (D)
Бит мусора. Устанавливается, если была выполнена запись
в каталог или страницу.
7-8
Эти биты зарезервированы и должны быть установлены в
0 для совместимости со следующими моделями
процессора.
9-12 (AVL)
Эти биты доступны для использования операционной
системой (AVL — Available for use).
Для использования механизма трансляции страниц операционная система
должна установить в 1 старший бит системного регистра CR0. Если этот бит не
установлен в 1, физический адрес будет равен линейному, содержимое
регистра адреса каталога таблиц страниц CR3 при этом для преобразования
адреса использоваться не будет.
Включенный блок страничной трансляции адресов осуществляет трансляцию
линейного адреса в физический страницами размером 4 Кбайт (для последних
поколений процессоров также возможны страницы размером 2 или 4 Мбайт).
Блок трансляции может включаться только в защищенном режиме.
Каков объем виртуального адресного пространства? Для индекса
дескриптора отведено 13 бит. Отсюда следует, что в дескрипторной таблице
может быть до 8К дескрипторов. Однако в действительности их в два раза
больше, так как программа может работать не с одной, а с двумя
дескрипторными таблицами. Таким образом, всего программе могут быть
доступны 214 = 16 К дескрипторов, т.е. 16 К сегментов. Поскольку размер
каждого сегмента, определяемый максимальной величиной смещения,
может достигать 232 = 4 Гбайт, объем виртуального адресного пространства
оказывается равным 16К * 4 Г = 64 Тбайт (1012).
Реально, однако, оперативная память компьютера с 32-разрядной адресной
шиной не может быть больше 4 Гбайт, т.е. при сделанных выше
предположениях (16 К сегментов размером 4 Гбайт каждый) в памяти может
поместиться максимум один сегмент из более чем 16 тысяч. Где же будут
находиться все остальные?
Полный объем виртуального пространства может быть реализован только с
помощью многозадачной операционной системы, которая хранит все
неиспользуемые в настоящий момент сегменты на диске, загружая их в
память по мере необходимости. Разумеется, если мы хотим полностью
реализовать возможности, заложенные в современные процессоры, нам
потребуется диск довольно большого объема — 64 Тбайт.
В процессорах, начиная с Pentium, страницы могут иметь размер 4Кбайт или
4Мбайт (эта возможность называется расширением размера страниц), а в
процессорах с архитектурой P6 при включенном расширении физического
адреса — 4Кбайт или 2Мбайт. (Расширение физического адреса заключается
в использовании 36-битного физического адреса вместо 32-битного.)
Расширение размера страниц включается установкой бита 4 (Page Size
Extension) в регистре CR4, а расширение физического адреса — установкой
бита 5 (Physical Address Extension) в регистре CR4. Обе возможности
работают только в защищенном режиме при включенной страничной
трансляции адресов. Для страниц размером 4Мбайт действует упрощенная
(одноуровневая) схема формирования физического адреса. В этом случае
физический адрес (старшие 10 бит) страницы хранится непосредственно в
каталоге таблиц. Младшие 22 бита линейного адреса задают смещение от
начала страницы. Конечно, страницы большого размера неудобны для
подкачки при работе с маленькими приложениями, но тот факт, что при
включенном PSE (или PAE) в системе можно использовать страницы обоих
размеров позволяет повысить эффективность работы: на страницах
большого размера можно разместить код операционной системы, к которому
часто обращаются все приложения и который не следует выгружать из
памяти, при этом экономится место — не нужны промежуточные таблицы
страниц.

Добро пожаловать в Real Digital

  1. Микропроцессоры
  2. Тема: Режимы работы процессора

13067

Режимы процессора

Многие процессоры запускают более одного процесса одновременно.В многопроцессорной (или многопользовательской) системе каждый процесс получает контроль над процессором и его памятью, портами и устройствами ввода-вывода в течение ограниченного «отрезка» времени. В конце выделенного ему временного интервала каждый процесс должен передать управление и праздно ждать, пока снова не заработает его запланированный временной интервал. Управляющее «системное» программное обеспечение (часто называемое операционной системой или ОС) распределяет время для различных задач. Иногда каждый процесс получает равное количество времени, а иногда процессы с более высоким приоритетом получают более длинные или более частые временные интервалы.

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

Чтобы помочь справиться с такими ситуациями, большинство процессоров имеют разные режимы работы, которые позволяют разный уровень «привилегированного» доступа к областям памяти, системным настройкам, периферийным устройствам и другим ресурсам. Обычно режим с самым низким приоритетом — это «пользовательский» режим, который используется обычными приложениями / пользовательскими программами.Можно запретить процессам, выполняющимся в пользовательском режиме, доступ к определенным областям памяти, определенным регистрам и определенным периферийным устройствам. Этот ограниченный доступ необходим для создания стабильной общей среды обработки.

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

ARM имеет несколько режимов работы, которые используются для различных целей:

  • Пользовательский режим — это основной режим, в котором работают прикладные программы. Пользовательский режим — единственный непривилегированный режим, и он имеет ограниченный доступ к системным ресурсам.Обычно процессор более 99% времени проводит в пользовательском режиме.
  • Системный режим обеспечивает неограниченный доступ ко всем системным ресурсам. В режим супервизора можно войти только определенными контролируемыми способами (обсуждаемыми ниже), и обычно он вводится только тогда, когда требуется управлять определенным ресурсом.
  • Режим супервизора также обеспечивает неограниченный доступ ко всем системным ресурсам. В режим супервизора входит при перезагрузке или включении, или когда программное обеспечение выполняет инструкцию вызова супервизора (SVC).Режим супервизора аналогичен системному режиму, но предлагает доступ к еще нескольким регистрам.
  • Режим прерывания вводится, если программа пытается получить доступ к несуществующей области памяти. Режим прерывания также предлагает доступ к нескольким частным регистрам, к которым другие режимы не могут получить доступ.
  • Неопределенный режим вводится для любых исключений, связанных с инструкциями, включая любую попытку выполнить нереализованную инструкцию.
  • Режим
  • IRQ вводится в ответ на нормальный запрос прерывания от внешнего устройства.
  • Режим FIQ вводится в ответ на запрос быстрого прерывания от внешнего устройства. Он используется для более быстрого обслуживания более срочных запросов.
  • Режим монитора доступен в некоторых реализациях для переключения между безопасным и небезопасным состояниями, а также для отладки.
  • Режим гипервизора доступен в некоторых реализациях для управления некоторыми расширениями виртуализации.

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

Существуют режимы системы и супервизора, позволяющие системному программному обеспечению управлять регистрами состояния, быстрее реагировать на определенные исключения и справляться с неожиданными условиями. Режимы IRQ и FIQ существуют для оптимизации реакции процессора на прерывания.Системный режим и режим IRQ используются регулярно (но временно) для доступа к определенным защищенным ресурсам, и эти режимы будут использоваться при инициализации и обработке прерываний. Другие режимы — это режимы особого случая, которые нечасто используются в обычных операциях и здесь не описываются.

Рабочий режим определяется пятью младшими битами в CPSR (биты 4: 0), как показано на рисунке со страницы B1-1139 AARM.

Рис. 1. Режимы процессора (Справочное руководство по архитектуре Arm, стр. B1-1139)

ARM поддерживает несколько отдельных / дублирующих регистров, которые доступны только тогда, когда процессор работает в определенном режиме.Как показано в таблице ниже, в пользовательском и системном режимах используются одни и те же регистры. Другие режимы имеют свои собственные локальные / частные SP, LR и PSR, а режим FIQ также имеет отдельные регистры R8-R12. Эти повторяющиеся регистры (включая дублированные GPR в режиме FIQ) ускоряют и повышают эффективность переключения режимов и контекста и уменьшают объем работы, необходимой для правильного переключения контекста при смене режимов.

Рис. 2. Регистры ARM с

R0 по R12 не дублируются ни в одном режиме, кроме FIQ.При входе в один из этих режимов, отличных от FIQ, возможно, в результате выполнения процедуры обслуживания исключения / прерывания, содержимое регистров должно быть сохранено в стеке, а затем восстановлено. В режиме FIQ есть отдельные регистры R8-R12, доступ к которым возможен только в режиме FIQ, поэтому эти регистры не нужно сохранять и восстанавливать (это позволяет быстрее обслуживать «быстрые прерывания»). Обратите внимание, что программное обеспечение, работающее в любом режиме, «видит» регистры, как указано в столбце «Просмотр приложений» в таблице выше. Контроллер определяет, к какому фактическому регистру осуществляется доступ, комбинируя режим с адресом регистра.Так, например, программное обеспечение в режиме IRQ будет обращаться к SP как «R13» или «SP», точно так же, как программное обеспечение, работающее в пользовательском режиме, а SP в режиме IRQ будет использоваться автоматически (запись «SP_irq» в таблице только для определения того, что существует отдельный регистр).

APSR — это псевдоним CPSR, доступный только для чтения. Иногда программному обеспечению необходимо записывать данные в CSPR (например, чтобы изменить режим работы или разрешить прерывания). Поскольку CPSR не может быть изменен в пользовательском режиме, программное обеспечение должно переключиться в режим супервизора, чтобы получить доступ на запись (в режим супервизора можно войти, выполнив инструкцию SVC или с некоторыми исключениями).В режиме супервизора для доступа к CPSR могут использоваться две специальные инструкции перемещения (MRS и MSR). «MRS Rd, CPSR» будет читать содержимое CPSR в Rd, а «MSR CPSR_n, Rd» может записывать новые значения в CPSR. Для записи CPSR разбит на четыре байта, которые используют спецификаторы _f, _s, _x и _c для обозначения битов CPSR 31:24, 23:16, 15: 8 и 7: 0 соответственно (спецификаторы используются в место _n в инструкции, показанной выше). Это помогает предотвратить случайную перезапись битов в этом чувствительном регистре.Чтобы записать только младшие восемь бит CPSR, можно использовать инструкцию MSR CPSR_c. Для записи всех битов можно использовать MSR CPSR_fsxc.

Что такое режим процессора?

В этой статье содержится информация о режиме процессора. Режим процессора также называется режимами ЦП или «уровнем привилегий» ЦП. Режимы ЦП используются процессором для автоматического создания операционной среды. В частности, режим ЦП управляет тем, как процессор видит и управляет системной памятью и задачами, которые ее используют.Есть три различных режима работы, но для нового 64-битного процессора добавлен еще один:

  1. Реальный режим.
  2. Защищенный режим.
  3. Виртуальный режим Реальный режим.
  4. 64-битный режим расширения.

Реальный режим:

Исходный компьютер IBM PC мог адресовать только 1 МБ системной памяти, и оригинальные версии DOS, созданные для работы с ним, были разработаны с учетом этого. DOS — это по своей природе однозадачная операционная система, что означает, что она может обрабатывать только одну программу, работающую одновременно.Решение, принятое в те первые дни, действует до сих пор, и в каждом новом процессоре нужно было заботиться о том, чтобы можно было перевести процессор в режим, совместимый с исходным чипом Intel 8088. Это называется реальным режимом. Реальный режим, конечно же, используется DOS и «стандартным» приложением DOS.

Защищенный режим:

Начиная с микросхемы 80286 в IBM AT, был опубликован новый режим ЦП, названный защищенным режимом. Это гораздо более мощный режим работы, чем реальный режим, и он используется во всех современных многозадачных операционных системах.Преимущества защищенного режима (по сравнению с реальным режимом):

  • Полный доступ ко всей системной памяти. В режиме
  • ограничения в 1 МБ нет.
  • Возможность выполнять несколько задач одновременно, что означает, что операционная система управляет выполнением нескольких программ одновременно.
  • Предпочтение для виртуальной памяти, которое дает разрешение системе использовать жесткий диск для имитации дополнительной системной памяти, когда это необходимо.
  • Более быстрый (32-разрядный) доступ к памяти и более быстрые 32-разрядные драйверы для передачи ввода-вывода.

Название этого режима происходит от его основного использования — многозадачной операционной системы. Каждая запущенная программа имеет собственное назначенное место в памяти, которое защищено от конфликтов с другими программами. Если программа пытается получить доступ к адресу памяти, то генерируется «отказ защиты».

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

Виртуальный режим:

Этот режим также называется виртуальным режимом 8086.Третий режим работы — это на самом деле некоторая дополнительная возможность, расширение защищенного режима. Защищенный режим используется для запуска графической многозадачной операционной системы, такой как различные типы окон. Часто возникает желание иметь возможность запускать программу DOS под окном, но программы DOS нужно запускать в реальном режиме, а не в защищенном режиме. Для решения этой проблемы используется виртуальный реальный режим. Виртуальный реальный режим также используется, когда вы используете окно DOS или запускаете игру DOS в Windows 95.

64-битный режим расширения:

Этот режим также называется длительным режимом.64-битный режим расширения — это режим, в котором 64-битное приложение может получить доступ к 64-битной инструкции и регистрам, в то время как 32-битные и 16-битные программы выполняются в подрежиме совместимости. Вот что насчет режимов процессора.

Для получения дополнительной информации о новостях технологий в Сингапуре и поисковом продвижении по интернет-маркетингу ознакомьтесь с дополнительными сведениями о других страницах.

Пользовательский режим и режим ядра — драйверы Windows

  • Статья
  • .
  • 2 минуты на чтение
Эта страница полезна?

Оцените свой опыт

да Нет

Любой дополнительный отзыв?

Отзыв будет отправлен в Microsoft: при нажатии кнопки «Отправить» ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

Процессор на компьютере под управлением Windows имеет два разных режима: пользовательский режим и режим ядра .

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

Пользовательский режим

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

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

Режим ядра

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

Эта диаграмма иллюстрирует взаимодействие между компонентами пользовательского режима и режима ядра.

Виртуальных адресных пространств

Регистры x86 и режимы работы

Микросхемы процессора x86 претерпели множество изменений за последние 20 лет.Сразу приходят на ум переходы между 16-, 32- и 64-битными версиями — и они действительно очень примечательны, — но программистам на ассемблере x86 пришлось столкнуться со многими другими изменениями. Еще одним большим изменением стало введение нового режима работы в моделях ЦП 286 и 386: защищенный режим , . Защищенный режим заменил старый режим работы , реальный режим и позволил программному обеспечению использовать такие функции, как виртуальная память и подкачка страниц. Эти функции сейчас используются практически во всех современных операционных системах, работающих на архитектуре x86, таких как Microsoft Windows, Linux и многих других.

В этой статье мы даем обзор доступных регистров и режимов работы различных архитектур x86, а также описываем базовую семантику регистров в различных режимах работы.

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

В следующих разделах мы рассмотрим регистры в 16-, 32- и 64-битной версии архитектуры x86. Мы опускаем специальные системные функции, такие как регистры отладки и регистры управления; они не представляют интереса для прикладного программиста.

Давайте посмотрим на различные регистры, доступные в первом процессоре x86, 16-битном 8086:

Регистры процессора процессора 8086 или 8088.Все регистры имеют ширину 16 бит.

Всего в моделях ЦП 8086 и 8088 доступно 14 регистров ЦП. Краткие имена регистров (AX, CS, SI) используются для обозначения регистров на языке ассемблера x86. Например, чтобы скопировать 16-битное значение из CX в SI, можно написать:

 MOV SI, CX 

Имена регистров отражают предполагаемое назначение каждого регистра, как это предусмотрено разработчиками 8086. Однако не следует чувствовать себя слишком ограниченным ими; многие регистры универсальны и могут использоваться свободно.

Имя регистра Описание
Общие регистры
AX
BX
CX
DX
Эти четыре 16-битных регистра являются действительно общими. Программисты могут свободно ими пользоваться. Регистр AX исторически является одним из наиболее часто используемых регистров, поскольку в некоторых случаях он работает быстрее, чем другие регистры.
Обратите внимание, что к отдельным 8-битным разделам 16-битных регистров общего назначения можно обращаться отдельно.Старшие байты регистра AX называются AH, а младшие байты называются AL.
Сегментные регистры
CS
DS
SS
ES
Четыре сегментных регистра играют важную роль в управлении памятью ЦП, и они не используются прикладными программистами для загрузки, хранения или манипулировать ценностями. Архитектура 8086 работает в реальном режиме , где сегментные регистры работают вместе с регистрами общего назначения для доступа к любому значению памяти.Описание реального режима и других режимов работы можно найти в разделе Рабочие режимы .
Важно понимать, что каждая инструкция ЦП, обращающаяся к памяти, использует один из сегментных регистров . Каждая инструкция имеет неявный регистр по умолчанию, но его часто можно переопределить.
Регистры указателя и индекса
SI Регистры исходного индекса и целевого индекса предназначались для использования в строковых операциях как начальный и целевой индексы соответственно.На практике эти регистры также являются общего назначения
DI
BP Базовый указатель используется для указания на основание кадра стека в случае функций на основе стека. . Регистр SS неявно используется в качестве базы адреса.
SP Регистр SP содержит указатель на вершину стека. Регистр SS неявно используется в качестве базы адреса.
IP Регистр указателя инструкций всегда работает вместе с регистром сегмента CS и указывает на ячейку памяти инструкции, которая должна быть выполнена в следующем , если ветвление не выполняется.
Регистр состояния
ФЛАГИ Регистр флагов определяет текущее состояние процессора; он содержит такие флаги, как флаг переноса, флаг переполнения и нулевой флаг.Они автоматически модифицируются ЦП после математических операций, это позволяет определить тип результата и определить условия для передачи управления другим частям программы. Обычно вы не можете получить доступ к этим регистрам напрямую; вместо этого они используются инструкциями ЦП.

С появлением 32-битного процессора Intel 80386 16-битные регистры общего назначения, базовые регистры, индексные регистры, указатель команд и регистр FLAGS, но не сегментные регистры, были расширены до 32 бит. .Это представлено префиксом E (для Extended ) к именам регистров на языке ассемблера x86. Таким образом, регистр AX соответствует младшим 16 битам нового 32-битного регистра EAX, SI соответствует младшим 16 битам ESI и так далее. Кроме того, были добавлены два сегментных регистра: FS и GS .

Регистры процессора архитектуры 386. Все регистры расширены до 32 бит, за исключением сегментных регистров. Обратите внимание, что старшие 16 бит расширенных регистров не адресуются отдельно.

Введение 64-битных процессоров как AMD, так и Intel привело к дальнейшим изменениям в регистрах ЦП. Существуют разные реализации, но общим знаменателем обычно называют архитектуру x86-64 . Он расширяет 32-битные регистры до 64-битных регистров аналогично тому, как было выполнено расширение с 16 до 32 бит. Расширенные регистры имеют префикс R . Кроме того, были введены восемь новых 64-битных регистров общего назначения (R8-R15).Сегментные регистры остались такими же, как и их 386 аналогов.

Регистры процессора архитектуры x86-64. Какие регистры можно использовать, зависит от режима работы ЦП.

Мы идентифицировали регистры ЦП x86. Хотя они универсальны и не имеют специальной семантики.

Рабочий режим определяет, как процессор видит и управляет системной памятью и задачами, которые ее используют. Существует пять рабочих режимов: реальный режим, защищенный режим, виртуальный режим 8086, 64-битный режим и режим совместимости.

211 Virtual-8086 Mode
Рабочий режим Доступен на Размер адреса по умолчанию (биты) Адресная память
Реальный режим Все модели x86. 16 1 МБ
Защищенный режим Все модели x86, начиная с 286, со значительными улучшениями в 386. 32 4 ГБ
Подрежим защищенного режима Все модели x86, начиная с 386.64 байта. Предел текущих процессоров составляет около 1 ТБ.
Подрежим длительного режима Режим совместимости Все 64-разрядные модели x86. 32 4 ГБ

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

Поскольку все регистры в 8086 были 16-битными, Intel решила разделить адресное пространство на сегменты по 64 КБ и координировать доступ к памяти с помощью двух 16-битных значений — сегмента и смещения . Как следует из названий, сегмент часть обозначает текущий сегмент размером 64 КБ, а смещение определяет смещение внутри этого сегмента.Соответствующее обозначение: сегмент : смещение . Режим работы определяет, как это преобразуется в адрес физической памяти. В 32-битных или 64-битных процессорах сегменты намного больше, но механизм сегментации все еще используется — вот почему все процессоры x86 имеют регистры сегментов.

Набор инструкций x86 предоставляет несколько различных способов задания ячеек памяти. В наборе инструкций 8086 есть 17 уникальных способов адресации памяти, а в новых моделях x86 их даже больше.К счастью, большинство способов очень похожи. Здесь мы приводим несколько примеров в нотации сборки Intel. Для получения дополнительной информации вы можете проверить эти страницы, но имейте в виду, что синтаксис зависит от вашего ассемблера.

Ссылка на сборку памяти заключена в квадратные скобки: [] . Обратите внимание, что каждая ссылка на память неявно или явно связана с сегментным регистром.

 mov ax, [102h]; Фактический адрес - DS: 102h 

Обратите внимание, что все операции с данными, такие как MOV, неявно используют регистр сегмента DS.Всегда можно отменить этот регистр сегмента по умолчанию.

 mov ax, cs: [102h]; Фактический адрес - CS: 102h 

Приведенная выше инструкция копирует 16 бит данных из сегмента CS (со смещением 102h) в регистр AX.

Этот код копирует 32-битное значение из сегмента DS в регистр EAX. Значение в регистре EBX принимается как смещение в DS.

 mov eax, [ebx]; Фактический адрес - DS: [ebx] 

Опять же, сегмент по умолчанию — DS, поскольку это операция с данными.

В режиме индексированной адресации регистр комбинируется со смещением.

Эти инструкции перемещают 4 байта данных из смещения EBX + 8 в сегменте DS в регистр EAX.

 mov eax, 8 [ebx]; Фактический адрес DS: [ebx] + 8
mov eax, [ebx] [8]; Та же операция
mov eax, [ebx + 8]; Та же операция 

Регистры ESP и EBP по умолчанию используют сегмент SS:

 mov eax, [esp-8]; Фактический адрес - SS: [esp] - 8 

В режиме базовой / индексированной адресации базовый регистр и индексный регистр используются вместе:

 mov eax, [ebx] [ecx]; Фактический адрес - DS: [ebx] + [ecx] 

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

 mov eax, 1000h [EBX] [EBX * 2]; Фактический адрес - DS: 1000h + [ebx] + [ebx] * 2 

Если бы EBX был равен 200h в описанной выше операции, фактический адрес был бы DS: 1600h .

На самых ранних моделях ЦП реальный режим был единственным доступным рабочим режимом. Даже в эпоху DOS это был единственный доступный режим, поэтому программисты на ассемблере, которые были активны в те дни, слишком хорошо его помнят. Реальный режим характеризуется 20-битным сегментированным адресным пространством памяти и неограниченным прямым программным доступом ко всей памяти, адресам ввода-вывода и периферийному оборудованию.Реальный режим предоставляется в современных процессорах x86 для обратной совместимости с процессорами и приложениями до 80386, но в настоящее время имеет очень ограниченное использование.

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

Процессор в реальном режиме может адресовать максимум 1 МБ памяти, что требует размера адреса 20 бит для доступа к физической памяти. Регистры имеют ширину 16 бит, поэтому сегмент и смещение объединяются для формирования логического адреса. В реальном режиме каждый логический адрес указывает непосредственно на область физической памяти, поскольку адресные пространства эквивалентны — оба имеют размер 1 МБ.

Адрес физической памяти вычисляется из сегмента и смещения следующим образом:

 PhysicalAddress = Segment * 16 + Offset 

На практике адрес сегмента сдвигается на 4 бита влево (умножение на 16 десятичных знаков), а затем смещение добавлено.

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

Хотя адрес сегмента увеличивается с шагом в 16 байт, каждый сегмент имеет размер 65,536 байта. Это означает, что существует до 4096 пар сегмент: смещение , которые относятся к одному и тому же месту в физической памяти.Для тех, кто все еще задается вопросом: да, программирование в реальном режиме чрезвычайно утомительно.

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

Защищенный режим — это рабочий режим, который позволяет системному программному обеспечению использовать такие функции, как виртуальная память, подкачка страниц, безопасная многозадачность и другие функции, предназначенные для увеличения контроля операционной системы над прикладным программным обеспечением. Он появился довольно давно: защищенный режим, каким мы его знаем сегодня, был представлен в модели процессора 386. Если у вас 32-битная операционная система, вы можете быть уверены, что работаете в защищенном режиме.

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

Абстрактное представление схемы трансляции памяти в защищенном режиме x86.

В защищенном режиме регистр сегмента больше не содержит физический адрес начала сегмента, а скорее «селектор», который указывает на структуру системного уровня, называемую дескриптором сегмента .Дескриптор сегмента содержит физический адрес начала сегмента, длину сегмента и права доступа к этому сегменту. Эти дескрипторы сегментов хранятся в двух таблицах: глобальной таблице дескрипторов (GDT) и локальной таблице дескрипторов (LDT). Каждый ЦП (или ядро) компьютера содержит регистр под названием gdtr , в котором хранится адрес линейной памяти первого байта в GDT.

Селектор может быть загружен в сегментные регистры напрямую с помощью таких инструкций, как MOV.Единственным исключением является CS, который можно изменить только с помощью инструкций, влияющих на поток выполнения, таких как CALL или JMP. Как и в реальном режиме, смещения, относящиеся к местоположениям внутри сегмента, комбинируются с физическим адресом начала сегмента, чтобы получить физический адрес, соответствующий этому смещению. Смещение проверяется по длине сегмента, причем смещения относятся к местоположениям за пределами сегмента, вызывая исключение. Кроме того, проверяются права доступа, чтобы убедиться, что процесс, пытающийся получить доступ к сегменту, имеет разрешение на это.

Режим Virtual-8086 — это подрежим защищенного режима, который был создан для обеспечения обратной совместимости с приложениями реального режима. Он предоставляет процессы, которые не могут быть запущены, пока процессор работает под управлением 32-разрядной операционной системы в защищенном режиме со средой выполнения, идентичной реальному режиму.

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

64-битный защищенный режим — это режим, в котором 64-битное приложение (или операционная система) может получить доступ к 64-битным инструкциям и регистрам.

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

Режимы процессора ARM | Блог Стивена Смита

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

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

Целью режимов процессора является регулирование доступа к памяти и аппаратным ресурсам, чтобы процесс, инициированный конкретным пользователем, не мог получить доступ к памяти других процессов или к оборудованию, для которого у них нет разрешения. Операционная система может добавлять довольно точные разрешения, поэтому пользователи имеют доступ только к определенным файлам, доступ только для чтения к определенным файлам или другие детализированные права. Все это может показаться излишним для Raspberry Pi, но все версии Linux, включая Raspbian, поддерживают несколько пользователей и несколько процессов, которые вошли в систему и работают одновременно.Кроме того, вы можете настроить определенных пользователей и группы, чтобы предоставить точные права таким процессам, как веб-серверы, чтобы защитить вашу систему от злонамеренных хакеров или программных ошибок, вызывающих хаос.

Большинство процессоров ARM имеют два уровня безопасности для процессов. PL0 предназначен для программ пользовательского режима, а PL1 — для кода операционной системы. Новые процессоры ARM, используемые в серверах, имеют третий уровень PL2 для гипервизоров виртуализации, поэтому они могут полностью разделить свои различные размещенные операционные системы.Существует также дополнительная сборка ARM для безопасных вычислений, если она присутствует, то для монитора безопасности системы используется еще более высокий уровень PL3.

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

Перечислим все режимы процессора и опишем, для чего он используется:

  • Пользователь — обычные программы, которые могут получать доступ к ресурсам, на которые у них есть разрешение.
  • FIQ — процессор переходит в этот режим при обработке как быстрого прерывания. Операционная система предоставляет этот код и имеет доступ ко всем ресурсам операционной системы.
  • IRQ — в этот режим процессор переходит при обработке штатного прерывания. Операционная система предоставляет этот код и имеет доступ ко всем ресурсам операционной системы.
  • Supervisor — когда программа пользовательского режима создает инструкцию SVC Assembly, которая вызывает службы операционной системы, программа переключается в этот режим, который позволяет программе работать на привилегированном уровне в течение всего кода.
  • Monitor — если у вас есть процессор ARM с расширениями безопасности, этот режим используется для мониторинга системы.
  • Abort — если программа пользовательского режима пытается получить доступ к памяти, это не разрешено, тогда этот режим вводится, чтобы позволить операционной системе вмешаться и либо завершить программу, либо послать программе сигнал.
  • Hyp — это режим гипервизора, который является дополнительным расширением ARM. Это позволяет виртуальному гипервизору работать на более безопасном уровне, чем операционные системы, которые он виртуализирует.
  • Undefined — это программа пользовательского режима, которая пытается выполнить неопределенную или недопустимую инструкцию ассемблера, затем входит в этот режим, и операционная система может завершить программу или послать ей сигнал.
  • Система
  • — это режим, в котором работает операционная система. На этом уровне выполняются процессы, которые операционная система считает своей частью.

Биты режима в таблице — это биты, которые установлены в регистре состояния управляющей программы ( CPSR ), это биты, которые устанавливаются в битах младшего разряда.Таким образом операционная система может видеть, в каком режиме она находится, и действовать соответствующим образом, когда это необходимо.

При включении процессор ARM запускается путем инициирования прерывания reset . Это вызывает выполнение кода обработчика прерывания сброса, который обычно является ветвью кода для запуска операционной системы. На данный момент мы работаем в режиме IRQ . Мы изменим режим процессора на супервизор и инициируем процесс загрузки операционной системы.Чтобы изменить режим процессора, мы напрямую манипулируем битами в CPSR с помощью кода вроде:

 MRS R0, CPSR @ Переместите CPSR в R0
BIC R0, R0, # 0x1F @ сбросить биты режима
ORR R0, R0, # 0x13 @ Установите биты режима на 10011 (режим SVC)
MSR CPSR, R0 @ Обновить CPSR

 

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

Это было краткое введение в режимы процессора ARM. Вам не нужно знать это для программирования приложений, но если вы заинтересованы в написании операционной системы или если вас интересует, как поддержка операционной системы работает для процессора ARM, то это отправная точка.

Если вы хотите узнать больше о программировании на языке ассемблера ARM, посмотрите мою книгу, подробности доступны здесь.

Нравится:

Нравится Загрузка …

Связанные

Объясните режимы работы ARM 7, а также объясните регистры, доступные в каждом режиме.

Процессор ARM поддерживает семь рабочих режимов . Режим процессора определяет доступность регистров для программиста, а также права доступа к CPSR.

Режимы процессора классифицируются как:

  1. Привилегированный режим
  2. Непривилегированный режим.

Привилегированный режим поддерживает полный доступ для чтения и записи к CPSR. Ядро процессора поддерживает следующие привилегированные режимы:

  1. Прервать
  2. Быстрый запрос прерывания
  3. Запрос на прерывание
  4. Руководитель
  5. Неопределенный
  6. Система
  7. .

Непривилегированный режим разрешает доступ только для чтения к полю управления в CPSR.Однако он разрешает доступ для чтения и записи к флагам условий. Ядро процессора поддерживает непривилегированный режим:

  1. Пользовательский режим
    • Это непривилегированный режим. Большинство задач выполняется в пользовательском режиме.
    • Доступ к памяти ограничен в пользовательском режиме. Пользователь не может читать напрямую с аппаратного устройства.
  2. Режим быстрого прерывания (режим FIQ)
    • В этот режим входит всякий раз, когда повышается высокий приоритет прерывания
    • Режим
    • FIQ используется для обработки периферийных устройств, которые выдают быстрые прерывания.
    • Это привилегированный режим. К устройствам, вызывающим FIQ, относятся данные обработки гибких дисков, последовательный порт и т. Д.
  3. Режим прерывания (IRQ)
    • Это привилегированный режим.
    • Вводится при возникновении прерывания с низким приоритетом. например клавиатура, жесткий диск, дискета и т. д.

Разница между FIQ и IRQ

  • IRQ может быть прерван FIQ, но FIQ не может быть прерван IRQ.
  • С FIQ мы должны выполнять обработку быстро. Для этого в процессоре есть теневые регистры.
  • FIQ не могут вызывать программные прерывания (SWI).
  • Если для подпрограммы FIQ становится необходимым повторно разрешить прерывания, это займет больше времени, чем это заняло бы IRQ.
  • FIQ должен отключать прерывания.
  1. Режим супервизора (SVC)
    • Процессор ARM переходит в этот режим в состоянии покоя. В этот режим также можно войти, если выполняется инструкция программного прерывания (SWI).
    • Режим супервизора имеет дополнительные привилегии, которые позволяют лучше контролировать систему.
    • В этом режиме работает ядро ​​операционной системы.
    • Для чтения из модуля ввода / вывода программист должен войти в режим супервизора.
  2. Режим прерывания
    • Режим прерывания вводится всякий раз, когда попытка доступа к памяти не удалась.
  3. Неопределенный режим (Undef)
    • Этот режим используется для обработки неопределенных инструкций.
  4. Системный режим
    • Это привилегированный режим. Это специальная версия пользовательского режима.
    • Обеспечивает полный доступ для чтения и записи к CPSR.
    • Он присутствует в архитектуре ARM версии 4 и выше.

На рисунке выше показаны регистры, доступные в различных режимах. Заштрихованные регистры указывают на то, что они физически отличаются от регистров. другие режимы.

Режимы процессора

: Реальный режим — Обновление и ремонт ПК 21-е издание: Технические характеристики процессора

Режимы процессора: Реальный режим

Все Intel и Intel-совместимые процессоры, начиная с модели 386, могут работать в нескольких режимах.Режимы процессора относятся к различным операционным средам и влияют на инструкции и возможности микросхемы. Режим процессора определяет, как процессор видит и управляет системной памятью и задачами, которые ее используют.

В следующей таблице перечислены режимы и подрежимы процессора:

Mode Real IA-32 IA-32e
Submode N / A ProtectedVirtual Real 9019 64-битная совместимость 32-разрядный 32-разрядный 64-разрядный 64-разрядный
Программное обеспечение 16-разрядный 32-разрядный 16-разрядный 64-разрядный 32-разрядный
Размер адреса памяти 24-разрядный 32-битный 24-битный 64-битный 32-битный
Размер операнда по умолчанию 16-битный 32-битный 16-битный 32-битный 32-битный
Ширина регистра 16- бит 32/16-бит 16-бит 64-бит 32-16-бит
* IA-32e (64-битный режим расширения) также называется x64, AMD64, x86-64 или EM64T.

Реальный режим

Реальный режим иногда называют режимом 8086, поскольку он основан на процессорах 8086 и 8088. Исходный IBM PC включал в себя процессор 8088, который мог выполнять 16-битные инструкции с использованием 16-битных внутренних регистров и мог адресовать только 1 МБ памяти с использованием 20 адресных строк. Все оригинальное программное обеспечение для ПК было создано для работы с этим чипом и основано на 16-битном наборе команд и модели памяти 1 МБ. Например, DOS и все программное обеспечение DOS, Windows 1.x — 3.x, и все приложения Windows 1.x — 3.x написаны с использованием 16-битных инструкций. Эти 16-разрядные ОС и приложения предназначены для работы на оригинальном процессоре 8088.

Более поздние процессоры, такие как 286, могли выполнять те же 16-битные инструкции, что и исходный 8088, но намного быстрее. Другими словами, 286 был полностью совместим с оригинальным 8088 и мог запускать все 16-битное программное обеспечение точно так же, как 8088, но, конечно, это программное обеспечение работало быстрее. Режим 16-битных команд процессоров 8088 и 286 стал известен как , реальный режим .Все программное обеспечение, работающее в реальном режиме, должно использовать только 16-битные инструкции и находиться в поддерживаемой им 20-битной (1 МБ) архитектуре памяти. Программное обеспечение этого типа обычно является однозадачным, то есть одновременно может работать только одна программа. Не существует встроенной защиты, чтобы одна программа не перезаписывала другую программу или даже операционную систему в памяти. Следовательно, если запущено более одной программы, одна из них может привести к аварийной остановке всей системы.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *