Что такое ips процессора

Обновлено: 06.07.2024

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

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

Доступ к значениям, хранящимся в регистрах, как правило, в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объём оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1-4 Гб [4] , суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80386 и более новых 32 битов * 8 = 256 бит).

Содержание

Архитектура x86

В реальном режиме работы процессора сегментные регистры содержат адрес начала 64Kb сегмента, смещенный вправо на 4 бита.

В защищенном режиме работы процессора сегментные регистры содержат селектор сегмента памяти, выделенного ОС.

RAX RCX RDX RBX
EAX ECX EDX EBX
AX CX DX BX
AH AL CH CL DH DL BH BL

RSP RBP RSI RDI Rx
ESP EBP ESI EDI RxD
SP BP SI DI RxW
SPL BPL SIL DIL RxB

Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приёма и выдачи информации различают 2 типа регистров:

По назначению регистры различаются на:

Счётчик команд

Например, CS содержит значение 2CB5[0]H , в регистре IP хранится смещение 123H .

Адрес следующей инструкции, подлежащей исполнению, вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:

2CB50H + 123H = 2CC73H

Таким образом, адрес следующей инструкции для исполнения равен 2CC73H .

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


Младшей частью этого регистра является регистр EIP.

На основе RIP в 64-разрядных процессорах введён новый метод адресации RIP-relative. В остальном работа RIP аналогична работе регистра EIP.

См. также

Примечания

  • Технологии процессоров
  • Архитектура компьютеров
  • Программирование x86
  • Обработка команд

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое "Регистр процессора" в других словарях:

регистр процессора — Память процессора, предназначенная для хранения основных или промежуточных данных либо их частей и используемая для выполнения машинных команд [Источник] Тематики информационные технологии в целом EN processor register … Справочник технического переводчика

Регистр (цифровая техника) — У этого термина существуют и другие значения, см. Регистр. 4 х разрядный сдвиговый регистр, преобразователь последовательного кода в параллельный и обратно Регистр последовательное или параллельное … Википедия

Регистр (в вычислит. технике) — 4 х разрядный сдвиговый регистр, преобразователь последовательного кода в параллельный и обратно Регистр последовательностное логическое устройство, используемое для хранения n разрядных двоичных слов (чисел) и выполнения преобразований над ними … Википедия

Регистр процессора — сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры).

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

Доступ к значениям, хранящимся в регистрах как правило в несколько раз быстрее, чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объём оперативной памяти намного превосходит суммарный объём регистров (объём среднего модуля оперативной памяти сегодня составляет 1-4 Гб [1] , суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80x86 16 битов * 4 = 64 бита (8 байт)).

Содержание

IP (англ. Instruction Pointer ) — регистр, обозначающий смещение следующей команды относительно кодового сегмента.

IP — 16-битный (младшая часть EIP)

EIP — 32-битный аналог

Сегментные регистры — Регистры указывающие на сегменты.

CS — указатель на кодовый сегмент. Связка CS:IP указывает на адрес в памяти следующей команды.

Регистры данных — служат для хранения промежуточных вычислений.

RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 — R15 — 64-битные

EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP — 32-битные (extended AX)

AX, BX, CX, DX — 16-битные

например, AH - high AX - старшая половинка 8 бит

AL - low AX - младшая половинка 8 бит

RAX RBX RCX RDX
—— EAX —— EBX —— ECX —— EDX
—— —— AX —— —— BX —— —— CX —— —— DX
—— —— AH AL —— —— BH BL —— —— CH CL —— —— DH DL

Регистр флагов EFLAGS — содержит текущее состояние процессора.

Регистром называется функциональный узел, осуществляющий приём, хранение и передачу информации. Регистры состоят из группы триггеров, обычно D. По типу приёма и выдачи информации различают 2 типа регистров:

  • С последовательным приёмом и выдачей информации — сдвиговые регистры.
  • С параллельным приёмом и выдачей информации — параллельные регистры.

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

По назначению регистры различаются на:

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

Счётчик команд

IP (англ. Instruction Pointer ) — регистр, содержащий адрес-смещение следующей команды, подлежащей исполнению, относительно кодового сегмента CS в процессорах семейства x86.

Регистр IP связан с CS в виде CS:IP, где CS является текущим кодовым сегментом, а IP — текущим смещением относительно этого сегмента.

Регистр IP является 16-разрядным регистром-указателем. Кроме него, в состав регистров этого типа входят SP (англ. Stack Pointer — указатель стека) и BP (англ. Base Pointer — базовый указатель).

Например, CS содержит значение 2CB5[0]H , в регистре IP хранится смещение 123H .

Адрес следующей инструкции, подлежащей исполнению вычисляется путем суммирования адреса в CS (сегменте кода) со смещением в регистре IP:

2CB50H + 123H = 2CC73H

Таким образом, адрес следующей инструкции для исполнения равен 2CC73H .

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

Начиная с процессора 80386 была введена 32-разрядная версия регистра-указателя — EIP. В данном случае IP является младшей частью этого регистра (первые 16 разрядов). Принцип работы EIP в целом схож с работой регистра IP. Основная разница состоит в том, что в защищённом режиме, в отличие от реального режима, регистр CS является селектором (селектор указывает не на сам сегмент в памяти, а на его дескриптор сегмента в таблице дескрипторов).

В 64-разрядных процессорах используется свой регистр-указатель инструкций — RIP.

Младшей частью этого регистра является регистр EIP.

На основе RIP в 64-разрядных процессорах введён новый метод адресации RIP-relative. В остальном работа RIP аналогична работе регистра EIP.

IPS/IDS — системы обнаружения и предотвращения вторжений

Сегодня мы расскажем про такие системы, как IPS и IDS. В сетевой инфраструктуре они исполняют роль своего рода полицейских, обнаруживая и предотвращая возможные атаки на серверы.

Что такое IPS/IDS?

IDS расшифровывается как Intrusion Detection System — система обнаружения вторжений. IPS, или Intrusion Prevention System, — система предотвращения вторжений. По сравнению с традиционными средствами защиты — антивирусами, спам-фильтрами, файерволами — IDS/IPS обеспечивают гораздо более высокий уровень защиты сети.

Антивирус анализирует файлы, спам-фильтр анализирует письма, файервол — соединения по IP. IDS/IPS анализируют данные и сетевое поведение. Продолжая аналогию с хранителями правопорядка, файервол, почтовые фильтры и антивирус — это рядовые сотрудники, работающие «в поле», а системы обнаружения и предотвращения вторжений — это старшие по рангу офицеры, которые работают в отделении. Рассмотрим эти системы подробнее.

Архитектура и технология IDS

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

Виды IDS по месту установки

Два самых распространенных вида IDS по месту установки:

  • Network Intrusion Detection System (NIDS),
  • Host-based Intrusion Detection System (HIDS).

Первая работает на уровне сети, а вторая — только на уровне отдельно взятого хоста.

Сетевые системы обнаружения вторжения (NIDS)

Технология NIDS дает возможность установить систему в стратегически важных местах сети и анализировать входящий/исходящий трафик всех устройств сети. NIDS анализируют трафик на глубоком уровне, «заглядывая» в каждый пакет с канального уровня до уровня приложений.

NIDS отличается от межсетевого экрана, или файервола. Файервол фиксирует только атаки, поступающие снаружи сети, в то время как NIDS способна обнаружить и внутреннюю угрозу.

Сетевые системы обнаружения вторжений контролируют всю сеть, что позволяет не тратиться на дополнительные решения. Но есть недостаток: NIDS отслеживают весь сетевой трафик, потребляя большое количество ресурсов. Чем больше объем трафика, тем выше потребность в ресурсах CPU и RAM. Это приводит к заметным задержкам обмена данными и снижению скорости работы сети. Большой объем информации также может «ошеломить» NIDS, вынудив систему пропускать некоторые пакеты, что делает сеть уязвимой.

Хостовая система обнаружения вторжений (HIDS)

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

Другие разновидности IDS по месту установки

Кроме NIDS и HIDS, доступны также PIDS (Perimeter Intrusion Detection Systems), которые охраняют не всю сеть, а только границы и сигнализируют об их нарушении. Как забор с сигнализацией или «стена Трампа».

Еще одна разновидность — VMIDS (Virtual Machine-based Intrusion Detection Systems). Это разновидность систем обнаружения угрозы на основе технологий виртуализации. Такая IDS позволяет обойтись без развертывания системы обнаружения на отдельном устройстве. Достаточно развернуть защиту на виртуальной машине, которая будет отслеживать любую подозрительную активность.

Виды IDS по принципу действия

Все системы обнаружения атак IDS работают по одному принципу — поиск угрозы путем анализа трафика. Отличия кроются в самом процессе анализа. Существует три основных вида: сигнатурные, основанные на аномалиях и основанные на правилах.

Сигнатурные IDS

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

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

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

Как можно понять из описания выше, NIDS чаще отслеживают шаблоны, а HIDS — в основном состояния.

IDS, основанные на аномалиях

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

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

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

  • статистические;
  • аномалии протоколов;
  • аномалии трафика.

Статистические аномалии выявляются, когда система IDS составляет профиль штатной активности (объем входящего/исходящего трафика, запускаемые приложения и т.д.) и сравнивает его с текущим профилем. Например, для компании характерен рост трафика по будним дням на 90%. Если трафик вдруг возрастет не на 90%, а на 900%, то система оповестит об угрозе.

Также IDS способны выявлять аномалии, любую небезопасную или даже угрожающую активность в сетевом трафике. Рассмотрим, к примеру, случай DoS-атаки. Если попытаться провести такую атаку «в лоб», ее распознает и остановит даже файервол. Креативные злоумышленники могут рассылать пакеты с разных адресов (DDoS), что уже сложнее выявить. Технологии IDS позволяют анализируют сетевой трафик и заблаговременно предотвращают подобные атаки.

Open Source проекты и некоторые вендоры на рынке IDS

Snort


Классическая NIDS — Snort. Это система с открытым кодом, созданная еще в 1998 году. Система Snort разрабатывалась как независимое ПО, а в 2008 году ее приобрела компания Cisco, которая теперь является партнером и разработчиком. Snort лучше подходит маленьким и средним компаниям. Утилита включает в себя сниффер пакетов, поддерживает настройку правил и многое другое. Snort — инструмент для тех, кто ищет понятную и функциональную систему предотвращения вторжений.

Suricata


Конкурент Snort на рынке среднего бизнеса — система с открытым исходным кодом Suricata, впервые представлена в 2010 году. Suricata — довольно молодая система, и это ее преимущество. В Suricata нет большого количества legacy-кода,также система использует более новые разработки, чем у конкурентов. Благодаря этому Suricata работает быстрее. Кроме того, разработчики позаботились о совместимости со стандартными утилитами анализа результатов. Это значит, что Suricata поддерживает те же модули, что и Snort. Она способна выявлять угрозы по сигнатурам и подходит для средних и больших компаний.

McAfee Network Security Platform


Если вы — большая компания, располагающая значительным бюджетом, можете рассмотреть McAfee Network Security Platform со стартовой ценой около $10 000. IDS блокирует огромное количество угроз, доступ к вредоносным сайтам, предотвращает DDoS-атаки и т.д. В силу монументальности McAfee Network Security Platform может замедлять работу сети, поэтому тут требуется решить, что более значимо — интеграция с другими сервисами или максимальная безопасность.

Zeek (Bro)


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

Дальнейшее развитие IDS

IPS и IDPS

IPS, или система предотвращения вторжения, — следующий шаг в развитии систем сетевой защиты. IPS сообщает об угрозе, а также предпринимает самостоятельные действия. Сегодня практически не осталось чистых IPS, рынок предлагает большой выбор IDPS (Intrusion Detection and Prevention Systems). IDPS выявляют атаки и принимают запрограммированные действия: Pass, Alert, Drop, Reject.

Правила IDPS

IDPS-системы допускают некоторый процент ложных отрицательных (false negative) и ложных положительных (false positive) реакций. Чтобы минимизировать ложные срабатывания, IDPS позволяют задать пороговые значения для реакций — например, установить значение допустимого увеличения трафика в будние дни. Администратор, ответственный за IDS, задает его в консоли управления.

К примеру, если текущий сетевой трафик ниже заданного порога, то он будет пропускаться (pass). Если трафик превышает порог, то на консоль поступит уведомление или тревога (alert). Пакеты, соответствующие заданным условиям (содержат вредоносный скрипт), будут отброшены (drop). Также консоль позволяет задать уровень угрозы— указать, насколько опасна та или иная угроза. Пакет может быть не только отброшен, но и отклонен (reject) с уведомлением адресата и отправителя. Кроме того, IDPS умеют отправлять письма ответственному лицу в случае угрозы.

Вместе с каждым правилом прописывается и дальнейшее действие. Например, не только прекратить дальнейший анализ пакета или отбросить его, но также сделать об этом запись в лог.

UTM — Unified Threat Management

UTM — это универсальный пакет утилит, сочетающий в себе множество мелких модулей защиты, своеобразный полицейский участок внутри сети. UTM бывают программными или аппаратными и, как правило, включают в себя сразу IDS, IPS, файервол, а зачастую и антивирус, прокси-сервер, почтовые фильтры, VPN и т.д. Объединенный контроль угроз — это единая система, поэтому не нужно платить за каждый модуль в отдельности. Вы экономите не только деньги, но и время на установку и настройку ПО — ключевое преимущество UTM.

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

DPI и NGFW

Файервол нового поколения — это следующий виток развития систем сетевой защиты. Если UTM набирали популярность с 2009, то файервол нового поколения — наши дни. Несмотря на то, что появление NGFW датируется тем же 2009 годом, распространялись они медленно. Главные отличия NGFW в том, что они открывают возможность DPI (Deep Packet Inspection) и позволяют выбирать только те функции защиты, которые нужны сейчас.

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

Где развернуть защиту?


Если вы решаете установить в сеть защиту, будь то IDS/IPS, UTM или NGFW, встает вопрос, в каком месте ее ставить. В первую очередь это зависит от типа выбранной системы. Так, PIDS не имеет смысла ставить перед файерволом, внутри сети, а NGFW включает сразу все элементы, поэтому ее можно ставить куда угодно.

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


IDS ставят также и на внешней границе сети, после файервола. В таком случае она фильтрует лишний шум глобальной сети, а также защищает от возможности картирования сети извне. При таком расположении система контролирует уровни сети с 4 по 7 и относится к сигнатурному типу. Такое развертывание сокращает число ложноположительных срабатываний.

Другая частая практика — установка нескольких копий системы обнаружения вторжений в критичных местах для защиты сети по приоритету важности. Также допускается установка IDS внутри сети для обнаружения подозрительной активности.

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

Как настроить комплексную защиту?

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

Один из таких — аппаратный межсетевой экран Fortinet FG-100E, использование которого предлагается для повышения сетевой безопасности выделенных серверов и виртуальных машин в публичном облаке. Межсетевые экраны уже смонтированы в наших дата-центрах соответствующих уровню Tier III, подключены к локальной сети и интернету, Selectel обеспечивает их электропитание и обслуживание. Все, что требуется, — в простом интерфейсе настроить межсетевой экран в несколько кликов. Подробнее — в базе знаний.

Базовые функции Fortinet FG-100E включают Firewall и VPN. Пропускная способность которых ограничена только производительностью оборудования. Кроме того, клиенты Selectel могут «прокачать» функции межсетевого экрана за счет дополнительных подписок. Они позволяют противодействовать актуальным угрозам и оптимизировать траты на инфраструктуру для системы защиты.

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

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. Регистры общего назначения.

Остальные четыре регистра – 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. Например, после сложения слова 0 FFFFh и 1, если регистр, в который надо поместить результат, – слово, в него будет записано 0000 h и флаг 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.

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

Читайте также: