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



Под организацией процессора понимают совокупность его узлов (устройств, блоков, модулей), связи между узлами и их функциональные характе­ристики. Организация определяет аппаратную организацию процессора, т. е. состав и взаимодействие его аппаратных средств.

Выделяют два уровня организации:

● физическую организацию в виде принципиальной схемы;

● логическую организацию в виде структурно–функциональной схемы.

 

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

Микроархитектура процессора - это аппаратная организация и логическая структура микропроцессора, регистры, управляющие схемы, арифметико-логические устройства, запоминающие устройства и связывающие их информационные магистрали.

Макроархитектура процессора - это система команд, типы обрабатываемых данных, режимы адресации и принципы работы микропроцессора.

По форматам используемых команд существуют несколько видов архитектур процессоров:

● CISC–архитектура относится к процессорам (компьютерам) с полным набором команд. Она реализова­на во многих типах микропроцессоров (напримерPentium), выполняющих большой набор разноформатных команд с использованием многочисленных способов адресации.

Система команд процессоров с CISC–архитектурой может содержать не­сколько сотен команд разного формата (от 1 до 15 байт), или степени слож­ности, и использовать более 10 различных способов адресации, что позволя­ет программисту реализовать наиболее эффективные алгоритмы решения различных задач.

Развитие традиционных CISC–архитектур микропроцессоров по пути рас­ширения функциональных возможностей и снижения затрат на программиро­вание привело к увеличению числа команд в наборе и числа микрокоманд в команде. Следствием этого явилось усложнение интегральных схем и сни­жение быстродействия выполнения программ. Один из возможных путей уст­ранения указанных недостатков состоит в использовании сокращенного набо­ра команд, организация которого подчинена увеличению скоростей их выпол­нения;

 

● RISC–архитектура относится к процессорам (компьютерам) с сокра­щенным набором команд (ReducedinstructionSetComputer — RISC). Появле­ние RISC–архитектуры продиктовано тем, что многие CISC–команды и спо­собы адресации используются достаточно редко. Основная особенность RISC–архитектуры проявляется в том, что система команд состоит из неболь­шого количества часто используемых команд одинакового формата, которые могут быть выполнены за один командный цикл (такт) центрального процес­сора. Более сложные, редко используемые команды реализуются на про­граммном уровне. Однако за счет значительного повышения скорости испол­нения команд средняя производительность RISC–процессоров может оказать­ся выше, чем у процессоров с CISC–архитектурой.

Большинство команд RISC–процессоров связано с операцией регистр–регистр. Для обращения к памяти оставлены наиболее простые с точки зре­ния временных затрат операции загрузки в регистры и записи в память.

Современные RISC–процессоры реализуют около 100 команд, имеющих фиксированный формат длиной 4 байта, и используют небольшое число наи­более простых способов адресации (регистровую, индексную и некоторые другие).

Для сокращения количества обращений к внешней оперативной памяти RISC–процессоры содержат десятки–сотни регистров общего назначения (РОН), тогда как в CISC –процессорах всего 8–16 регистров. Обращение к внешней памяти в RISC–процессорах используется только в операциях за­грузки данных в РОН или пересылки результатов из РОН в память. За счет со­кращения аппаратных средств, необходимых для декодирования и выполне­ния сложных команд, достигается существенное упрощение интегральных схем RISC–процессоров и снижение их стоимости. Кроме того, значительно повышается производительность. Благодаря указанным достоинствам во многих современных CISC–процессорах (последние модели Pentium и К7) ис­пользуется RISC–ядро. При этом сложные CISC–команды предварительно преобразуются в последовательность простых RISC–операций и быстро вы­полняются RISC–ядром;

● VLIW–архитектура относится к микропроцессорам с использованием очень длинных команд (VeryLargeInstructionWord — VLIW). Отдельные поля команды содержат коды, обеспечивающие выполнение различных операций. Одна VLIW–команда может выполнить сразу несколько операций одновремен­но в различных узлах микропроцессора. Формирование «длинных» VLIW–ko­манд производит соответствующий компилятор при трансляции программ, написанных на языке высокого уровня. VLIW –архитектура реализована в неко­торых типах современных микропроцессоров и является весьма перспектив­ной для создания нового поколения сверхвысокопроизводительных процес­соров.

 

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

● принстонская архитектура, или архитектура фон–Неймана, особенностью которой является (рис. 2.1.1) использование:

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

• общей шины, по которой в процессор поступают команды и данные, а в опе­ративную память записываются результаты, что значительно упрощает отладку, тестирование и текущий контроль функционирования системы, повышает ее надежность. Чтобы отделить команду от данных, первым из памяти всегда поступает код выполняемой операции, а затем следуют данные. По умолчанию код операции загружается в регистр команд, а дан­ные — в блок регистров. Из–за ограниченного числа внешних выводов противоположные направления обмена данными между микропроцессором, памятью или другими внешними устройствами по общей шине разде­лены во времени.

Недостаток принстонской архитектуры — использование общей шины для пе­редачи команд и данных ограничивает производительность цифровой системы;

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

 

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

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

1. Вызывает очередную команду из памяти и заносит ее в регистр команд.

2. Меняет содержимое счетчика команд, который после этого указывает на следующую команду.

3. Определяет тип вызванной команды.

4. Если команда использует данные из памяти, определяет, где находятся эти данные.

5. При необходимости переносит данные в регистр процессора.

6. Выполняет команду.

7. Переходит к шагу 1, чтобы начать выполнение следующей команды.

 

Такая последовательность является основой работы всех компьютеров.

Физическая память, к которой процессор имеет доступ по шине адреса, называется оперативной памятью (или оперативным запоминающим устройством — ОЗУ). ОЗУ организовано как последовательность байтов. Каждому байту соответствует свой уникальный физический адрес (его номер).

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

Страничную модель можно рассматривать как надстройку над сегментированной моделью. В случае ее использования оперативная память рассматривается как совокупность блоков фиксированного размера.

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

Основные сегменты:

· Сегмент кодов– содержит машинные команды для выполнения. Обычно первая выполняемая команда находится в начале этого сегмента, и операционная система передает управление по адресу данного сегмента для начала выполнения программы. Регистр сегмента кода CS и указатель IP определяют адрес памяти, откуда надо прочитать следующую команду.

· Сегмент данных– содержит определенные данные, константы и рабочие области, необходимые программе. Сегментные регистры DS, ES, GS и FS используются для адресации данных в памяти, индексный регистр SI служит для указания смещения.

· Сегмент стека. Стек содержит адреса возврата для программы для возврата в операционную систему и для вызовов подпрограмм для возврата в главную программу. Регистр сегмента стека SS и указатель SP указывают на вершину стека.

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

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

 

Формирование физического адреса в реальном режиме


Для хранения адресов памяти используются не отдельные регистры, а пары регистров:

· сегментный регистр определяет адрес начала сегмента (то есть положение сегмента в памяти);

· регистр указателя (регистр смещения) определяет положение рабочего адреса внутри сегмента.

При этом физический 20-разрядный адрес памяти образуется путем сложения смещения и адреса сегмента со сдвигом на 4 бита. Положение этого адреса в памяти показано на рисунке.

   

Например, сегмент в шестнадцатеричном виде равен 1200, а смещение — 3CDЕ.

 

Сегмент (1200) 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0

 

Смещение (3CDЕ)

 

0 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0
Адрес (15CDЕ) 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0

 

   

Защищённый режим – это режим, при котором обращение к памяти происходит по виртуальным адресам с использованием механизмов защиты памяти. Набор доступных операций определяется уровнем привилегий.

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

Формирование физического адреса в защищенном режиме


Любой сегмент памяти в защищенном режиме имеет следующие атрибуты:
-расположение сегмента в памяти;
-размер сегмента;

-уровень привилегий (определяет права данного сегмента относительно других сегментов);
-тип доступа (определяет назначение сегмента).

 

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

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

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

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

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

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

Коэффициент мультипрограммирования (КМ) - это количество программ, обрабатываемых одновременно в мультипрограммном режиме.

 

Регистры микропроцессора

Начиная с модели 80386 процессоры Intel предоставляют 16 основных регистров для пользовательских программ и ещё 11 регистров для работы с мультимедийными приложениями (MMX) и числами с плавающей точкой (FPU/NPX). Все команды так или иначе изменяют содержимое регистров. Как уже говорилось, обращаться к регистрам быстрее и удобнее, чем к памяти. Поэтому при программировании на языке Ассемблера регистры используются очень широко.

В этом разделе мы рассмотрим основные регистры процессоров Intel. Названия и состав/количество регистров для других процессоров могут отличаться.

Название Разрядность Основное назначение
EAX 32 Аккумулятор
EBX 32 База
ECX 32 Счётчик
EDX 32 Регистр данных
EBP 32 Указатель базы
ESP 32 Указатель стека
ESI 32 Индекс источника
EDI 32 Индекс приёмника
EFLAGS 32 Регистр флагов
EIP 32 Указатель инструкции (команды)
CS 16 Сегментный регистр
DS 16 Сегментный регистр
ES 16 Сегментный регистр
FS 16 Сегментный регистр
GS 16 Сегментный регистр
SS 16 Сегментный регистр

Регистры EAX, EBX, ECX, EDX – это регистры общего назначения. Они имеют определённое назначение (так уж сложилось исторически), однако в них можно хранить любую информацию.

Регистры EBP, ESP, ESI, EDI – это также регистры общего назначения. Они имеют уже более конкретное назначение. В них также можно хранить пользовательские данные, но делать это нужно уже более осторожно, чтобы не получить «неожиданный» результат.

Регистр флагов и сегментные регистры требуют отдельного описания и будут более подробно рассмотрены далее.

Когда-то процессоры были 16-разрядными, и, соответственно, все их регистры были также 16-разрядными. Для совместимости со старыми программами, а также для удобства программирования некоторые регистры разделены на 2 или 4 «маленьких» регистра, у каждого из которых есть свои имена. В таблице 2.2 перечислены такие регистры.

Вот пример такого регистра.

Из этого следует, что вы можете написать в своей программе, например, такие команды:

MOV AX, 1

MOV EAX, 1

Обе команды поместят в регистр AX число 1. Разница будет заключаться только в том, что вторая команда обнулит старшие разряды регистра EAX, то есть после выполнения второй команды в регистре EAX будет число 1. А первая команда оставит в старших разрядах регистра EAX старые данные. И если там были данные, отличные от нуля, то после выполнения первой команды в регистре EAX будет какое-то число, но не 1. А вот в регистре AX будет число 1.

Нулевой разряд (бит) – это младший бит. Он крайний справа. Старший бит – крайний слева. Номер старшего бита зависит от разрядности числа/регистра. Например, в 32-разрядном регистре старшим битом является 31-й бит (потому что отсчёт начинается с 0, а не с 1).

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

Регистр

Старшие разряды

Имена 16-ти и 8-ми битных регистров

31…16 15…8 7…0

EAX

...

AX

AH AL

EBX

...

BX

BH BL

ECX

...

CX

CH CL

EDX

...

DX

DH DL
ESI ...

SI

EDI ...

DI

EBP ...

BP

ESP ...

SP

EIP ...

IP

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

Ещё можно использовать регистры в качестве базы, т.е. хранилища адреса оперативной памяти. В качестве регистров базы можно использовать любые регистры, но желательно использовать регистры EBX, ESI, EDI или EBP. В этом случае размер машинной команды обычно бывает меньше.

Регистр EIP (указатель команд) содержит смещение следующей подлежащей выполнению команды. Этот регистр непосредственно недоступен программисту.

Флаг – это бит, принимающий значение 1 («флаг установлен»), если выполнено некоторое условие, и значение 0 («флаг сброшен») в противном случае. Процессор имеет регистр флагов, содержащий набор флагов, отражающий текущее состояние процессора.

· ZF - признак нуля результата ( ZF = 1, если все разряды результата равны 0);

· SF - знак результата ( SF = 1, если результат отрицательный);

· OF - признак переполнения ( OF = 1, если при выполнении арифметических операций над числами со знаком происходит переполнение разрядной сетки);

· CF - флаг переноса ( CF = 1, если выполнение операции сложения приводит к переносу за пределы разрядной сетки), устанавливается также в некоторых других операциях;

 


Дата добавления: 2019-02-22; просмотров: 874; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!