Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Микропроцессоры

.pdf
Скачиваний:
83
Добавлен:
21.05.2015
Размер:
5.46 Mб
Скачать

1. ХАРАК-КА МИКРОПРОЦЕССОРА. ОСНОВНЫЕ БЛОКИ.

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

Характеристики

а) Тактовая частота (Характеризует быстродействие ПК. Режим работы процессора задается микросхемой, называемой генератором тактовых импульсов. На выполнение операции отводится опред. число тактов, сколько операций в секунду может выполнить микропроцессора. Измеряется в МГц)

б) Разрядность (Максимальное количество разрядов двоичного числа, над которыми одновременно может выполняться машинная операция)

Функции

а) чтение и дешифрование команд из основной памяти б) чтение данных из основной памяти и регистров адаптеров внешних устройств

в) прием и обработка запросов и команд от адаптеров на обслуживание внешних устройств г) выработка сигналов для всех прочих узлов и блоков

Состав

а) Арифметико-логическое устр.(для выполнения ариф. и лог операций над числами и символами) б) Устр.управления(координирует взаимодействие различных частей ПК)

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

г) Интерфейсная система(предназначена для связи с другими устройствами ПК)

состоит: Внутр.интерфейс, буферные запоминающие регистры, схемы управления портами ввода-вывода и системной шины.

МАТЕМАТИЧЕСКИЙ сопроцессор используется для ускорения выполнения операций над двоичными числами с плавающей запятой, тригонометрии КОНТРОЛЕР доступа к памяти освобождает микропроцессор от прямого управления накопителями на

магнитных дисках, что существенно повышает эффективное быстродействие ПК.

СОПРОЦЕССОР ввода-вывода за счет параллельной работы с микропроцессором значительно ускоряет выполнение процедур ввода-вывода.

2.ОСОБЕННОСТИ РЕАЛИЗАЦИИ МИКРОПРОЦЕССОРОВ INTEL И AMD

Идея многоядерного процессора выглядит на первый взгляд совершенно тривиальной: просто упаковываем два-три (ну или сколько поместится) процессора в один корпус - и компьютер получает возможность исполнять несколько программных потоков одновременно. Вроде бы бесхитростная стратегия, но конкретные её реализации в недавно вышедших настольных процессорах AMD и Intel заметно различаются. Различаются настолько, что сугубо «количественные» мелочи в конечном итоге переходят в качественные различия между процессорами этих двух компаний.

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

SMP(SMP-системы (Symmetrical Multi Processor systems). В подобной системе все процессоры имеют совершенно равноправный доступ к общей оперативной памяти (см. рисунок). Работать с такими системами программистам – сущее удовольствие (если, конечно, создание многопоточного кода можно назвать «удовольствием»), поскольку не возникает никаких специфичных «особенностей», связанных с архитектурой компьютера. )-систем с общей шиной. Выглядит подобная MP-система чрезвычайно просто: один чипсет, к которому подключается вся оперативная память, и одна процессорная шина, к которой подключены все процессоры:Архитектура AMD K8 не просто отличается от «интеловской»: она концептуально иная, поскольку в ней нет какого-то выделенного центра. Каждый из процессоров архитектуры AMD64 является независимой и «самодостаточной» единицей, объединяющей в себе почти всю функциональность северного моста традиционных наборов системной логики. Это началось с одноядерных процессоров, а с появлением двухъядерников «обросло» новыми отличиями. Взглянем на блок-схему двухпроцессорной системы на двухъядерных AMD Opteron.

Если смотреть на этот вопрос с чисто технической стороны, то AMD попросту интегрировала практически всю функциональность северного моста в центральный процессор. На блок-схемах в «даташитах» так и обозначается: процессорное ядро, HT-интерфейс и Northbridge. Но «небольшая» технологическая уловка приводит к совсем иной архитектуре компьютера – SUMA, в отличие от традиционной SMP.

В каждый процессор интегрируется контроллер «локальной» оперативной памяти (собственно, по сравнению с одноядерными процессорами AMD64 контроллер памяти почти не изменился). На сегодняшний момент в зависимости от процессора это может быть одноили двухканальный (у двухъядерников – пока только двухканальный) контроллер памяти DDR 200/266/333/400 (небуферизованной или регистровой). Обращения к памяти «чужих» процессоров происходят по шине HyperTransport, причем делается эта «переадресация» запросов абсолютно прозрачно для собственно вычислительного ядра процессора – ее осуществляет встроенный в Northbridge коммутатор (CrossBar), работающий на полной частоте процессора. Этот же самый CrossBar обеспечивает «автоматическую» маршрутизацию проходящих через процессор сообщений от периферийных устройств и других процессоров, включая обслуживание «чужих» запросов к оперативной памяти.

Шина HT специально оптимизировалась для подобного режима работы со множеством «служебных» сообщений (которые возникают при использовании MOESI, о котором мы расскажем чуть позже) и обеспечивает крайне низкую латентность обращения в «чужую» память и высокую (до 4 Гбайт/с) пропускную способность при обращении к памяти «соседей». Шина является полнодуплексной, т.е. шина позволяет одновременно передавать данные на этой скорости в «обе стороны» (до 8 Гбайт/с суммарно). Модель памяти получается неоднородной (NUMA), но различия в скорости «своих» и «чужих» участков оперативной памяти получаются относительно небольшими.

Чипсет сильно упрощается: всё, что от него требуется – это просто обеспечивать «мосты» (туннели) между HT и другими типами шин. Ну и, возможно, заодно обеспечивать какое-то количество интегрированных контроллеров. Особенно ярко этот принцип проявляется в серверном чипсете AMD 81xx, поскольку это просто набор из двух чипов – « переходников» на шины AGP и PCI-X и чипа, интегрирующего туннель на «обычную» PCI и стандартный набор периферийных контроллеров (IDE, USB, LPC). Здесь всё совместимо со всем: любые современные чипсеты для микроархитектуры AMD64, теоретически, должны работать и с любыми процессорами AMD и любыми «правильно» сделанными «напарниками». И, в частности, все двухъядерные процессоры AMD должны работать со всеми ранее выпущенными чипсетами для процессоров архитектуры K8

AMD сейчас подчеркивает, что её процессоры «специально проектировались в расчёте на двухядерность», но правильнее было бы говорить, что двухядерность очень удачно ложится на её архитектуру. Каждый процессор K8 является «системой в миниатюре», со своим «процессором» и Northbridge; а двухядерный K8 – «двухпроцессорная SMP-система в миниатюре».

Решение «проблемы общей памяти» - не единственное преимущество подхода AMD.

Intel нашла достаточно успешный способ отчасти обойти эту проблему, используя в новейших многопроцессорных системах сразу две независимых процессорных шины. Но в неоднородной AMD-шной SUMA-архитектуре этой проблемы-то вообще нет. И хотя два ядра в двухядерниках AMD разделяют общую шину SRI, работает эта шина все же, как и кросс-бар, на полной частоте процессора, как и вообще все его «внутренние» шины. То есть ничем не отличается, скажем, от шины, соединяющий между собой его кэшпамять различных уровней. В итоге эта «общая» шина у AMD получается настолько быстродействующая, что ядра друг другу практически не мешают – их ограничивает только пропускная способность оперативной памяти, да ведущих во «внешний мир» линков HyperTransport.

Процессор Intel Smithfield

При создании многоядерных микропроцессоров для настольных ПК, Интел предпочел пойти на первых порах по пути «наименьшего сопротивления», продолжив традиции создания привычных SMP-систем с общей шиной. Состоит это все одного чипсета, к которому подключена оперативная память. У каждого ядра свой APIC, вычислительное ядро, кэш-память, свой интерфейс процессорной шины. Ядра Smithfield является монолитными(два ядра образуют единый кристалл) Организация «системы в целом» у Интел традиционна, как и устройство двухъядерного процессора. В ней есть несколько центральных процессоров, оперативная память и разной степени быстродействия периферия. Все это объединяется в единое целое специальным коммуникационным процессором Northbridge

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

Их 3: Защищенный (Protected Mode), Реальный (Real Mode) и Режим Сис.Управления

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

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

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

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

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

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

Вотличие от 8086 микропроцессоры 286+ в определенных ситуациях генерируют исключения, например, при превышении предела сегмента, который для всех сегментов в реальном режиме - 0FFFFh. Ячейки от 00000h до 003FFH резервируются для векторов прерываний. Каждое из 256 возможных прерываний имеет зарезервированный 4-байтовый адрес перехода. Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы

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

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

4.ЧИПСЕТЫ ДЛЯ МИКРОПРОЦЕССОРОВ INTEL И AMD. СТРУКТУРА ЧИПСЕТА

В буквальном переводе чипсет (chipset) означает «набор микросхем». Чипсет, который также называют набором системной логики, — это одна или чаще две микросхемы (чипы), предназначенные для организации взаимодействия между процессором, памятью, портами ввода-вывода и остальными компонентами компьютера. На заре развития компьютерной техники для организации взаимодействия между отдельными элементами ПК использовались десятки отдельных микросхем, что, конечно же, было крайне неудобно. И только с появлением процессора i486 отдельные микросхемы стали объединять в одну-две большие микросхемы, которые и получили наименование чипсета.

Чипсеты Intel 9-серии мая этого года. Эти чипсеты мало чем отличаются от чипсетов 8-серии, но все же имеют некоторые новшества. Чипсеты новой серии стали поддерживать PCI Express M.2, а также существующие процессоры Haswell и Haswell Refresh, а также будущие 14-нанометровые процессоры Broadwell (процессоры Intel Core 5-го поколения), которые, как ожидается, появятся в первом квартале следующего года.

Процессоры имеют несколько портов PEG (суммарно 16 линий PCI Express 3.0), Для связи процессора с чипсетом Intel 9-й серии используется все та же полнодуплексная шина DMI (Direct Media Interface) с пропускной способностью 20 Гбит/с в каждом направлении. Чипсеты 9-й серии поддерживают возможность одновременного подключения до трех мониторов к процессорному графическому ядру.

Для этого используется шина Intel FDI (Flexible Display Interface), по которой процессорное графическое ядро соединяется с блоком дисплейного вывода в чипсете. Как и прежде, шина FDI использует две линии с пропускной способностью 2,7 Гбит/с каждая. Для реализации аналогового интерфейса VGA в чипсете есть интегрированный RAMDAC (180 МГц), поддерживается подключение мониторов с разрешением 1920×1080 пикселей (при 24-битной глубине цвета и частоте кадровой развертки 60 Гц). Чипсеты Intel 9-й серии поддерживают до 8 портов PCI Express 2.0 (с пропускной способностью 5,0 Гбит/с).

Опять же, как и в чипсетах 8-й серии, в чипсетах 9-й серии реализована поддержка технологии Flexible IO, которая позволяет конфигурировать высокоскоростные порты ввода/вывода (PCIe, SATA, USB 3.0), убирая одни порты и добавляя другие.

Чипсет AMD A85x

Этот чипсет является одним из новых чипсетов, представленных компанией AMD. Новый чипсет имеет шину с пропускной способностью 5ГТ/с, поддерживает PCI Express 2.0 (чем и уступает новым чипсетам Интел). Максимальное кол-во слотов PCI – 3, а PCI Express 4 слота с использованием до 4 линий. Также чипсет поддерживает технологию Crossfire и не поддерживает AGP. Имеется поддержка 12 USB-портов, 4 порта для USB 3.0, 10 для USB 2.0, 8 каналов SATA 6Gb/s с поддержкой разветвителей. В серии этого чипсета не предусмотрена поддержка PCl64/PCl-X слотов.

Структура чипсета

Чипсет состоит из северного моста (North Bridge) и южного моста (South Bridge). Иногда северный и южный мосты объединяют в одну микросхему, такое решение называют одночиповым, классическая структура с двумя микросхемами, носит название двухмостовой схемы.

Северный мост (North Bridge) содержит контролер памяти, контролер графической шины, интерфейс взаимодействия с южным мостом и процессором. То есть северный мост является центральным узлом материнской платы, который связывает между собой видеоадаптер, память, процессор и элементы, управление которыми совершает южный мост.

Южный мост (South Brige) организует взаимодействие между устройствами ввода вывода (клавиатура, мышь, принтер и т.д.). Он содержит контролеры жёстких дисков (SATA / PATA), USB – контролер (для управления устройствами ввода-вывода, которые подключаются через порт USB), сетевой контролер, звуковой контролер. Также южный мост соединяется с микросхемой BIOS, и микросхемой Super I/O отвечающей за последовательные и паралелльные порты. Для соединения северного и южного моста, используется специальная шина, разные производители чипсетов, используют разные шины: Intel (шина

QPI,DMI), AMD (Hyper Transport, PCI Express), Nvidia (Hyper Transport).

5.ПРОГРАММНАЯ МОДЕЛЬ МИКРОПРОЦЕССОРА

Программная модель процессора состоит из 32 регистров: 16 пользовательских и 16 системных.

К пользовательским относятся те, которые программист может непосредственно использовать: 8 32-битных регистров для хранения данных и адресов

eax/ax/ah/al

ebx/bx/bh/bl

edx/dx/dh/dl

ecx/cx/ch/cl

ebp/bp

esi/si

edi/di

esp/sp

Шесть регистров сегментов: cs, ds, ss, es, fs, gs Регистры состояния и управления: eflags/flags, eip/ip

6.РЕГИСТРЫ ОБЩЕГО НАЗНАЧЕНИЯ. СЕГМЕНТНЫЕ РЕГИСТРЫ eax/ax/ah/al – применяются для хранения промежуточных данных

ebx/bx/bh/bl – применяются для хранения базового адреса некоторого объекта в памяти

ecx/cx/ch/cl – применяется в командах, производящих некоторые повторяющиеся действия(цикл Loop) edx/dx/dh/dl – тоже хранят промежуточные данные.

esi/si – регистр содержит текущий адрес элемента в цепочке-источнике edi/di – тоже самое

esp/sp – содержит указатель вершины стэка в текущем сегменте стэка. СЕГМЕНТЫЕ РЕГИСТРЫ

Сегмент кода: cs – сегментный регистр кода. Содержит адрес сегмента с машинными командами к которому имеет доступ микропроцессор

Сегмент данных: ds – хранит адрес сегмента данных текущей программы. Сегмент стэка: ss – содержит адрес сегмента стэка.

Доп сегменты: es, gs, fs

7.РЕГИСТРЫ СОСТОЯНИЯ И УПРАВЛЕНИЯ

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

регистр флагов eflags/flags;

регистр указателя команды eip/ip

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

eflags/flags (flag register) — регистр флагов. Разрядность eflags/flags — 32/16 бит. Отдельные биты данного регистра имеют определенное функциональное назначение и называются флагами. Младшая часть этого регистра полностью аналогична регистру flags для i8086.

8 флагов состояния. Эти флаги могут изменяться после выполнения машинных команд.

Флаги состояния регистра eflags отражают особенности результата исполнения арифметических или логических операций. Это дает возможность анализировать состояние вычислительного процесса и реагировать на него с помощью команд условных переходов и вызовов подпрограмм. В табл. 1 приведены флаги состояния и указано их назначение;

1 флаг управления. Обозначается df (Directory Flag).

Он находится в 10-м бите регистра eflags и используется цепочечными командами. Значение

флага df определяет направление поэлементной обработки в этих операциях: от начала строки к концу (df = 0) либо наоборот, от конца строки к ее началу (df = 1).

Для работы с флагом df существуют специальные команды: cld (снять флаг df) и std (установить флаг df). Применение этих команд позволяет привести флаг df в соответствие с алгоритмом и обеспечить автоматическое увеличение или уменьшение счетчиков при выполнении операций со строками; 5 системных флагов, управляющих вводом/выводом, маскируемыми прерываниями, отладкой, переключением между задачами и виртуальным режимом 8086.

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

eip/ip (Instraction Pointer register) — регистр-указатель команд.

Регистр eip/ip имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра eip/ip. Используя эти регистры, можно получать информацию о результатах выполнения команд и влиять на состояние самого микропроцессора. Рассмотрим подробнее назначение и содержимое этих регистров:

Таблица 1. Флаги состояния

 

 

 

 

 

 

 

 

 

 

Мнемоника

 

 

Номер

 

 

 

 

 

 

Флаг

бита

 

Содержание и назначение

 

флага

 

 

вeflags

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

арифметическая операция произвела перенос из старшего

 

cf

 

Флаг переноса

0

 

бита результата. Старшим является 7, 15 или 31-й бит в

 

 

(Carry Flag)

 

зависимости от размерности операнда;

 

 

 

 

 

 

 

 

 

 

 

0

переноса не было

 

 

 

 

 

 

1

8 младших разрядов (этот флаг — только для 8 младших

 

 

 

Флаг паритета

 

 

разрядов операнда любого размера) результата содержат

 

pf

 

2

 

четное число единиц;

 

 

(Parity Flag)

 

 

 

 

 

 

0

8 младших разрядов результата содержат нечетное число

 

 

 

 

 

 

 

 

 

 

 

 

единиц

 

 

 

 

 

 

Только для команд работающих с BCD-числами. Фиксирует

 

 

 

 

 

 

факт заема из младшей тетрады результата:

 

 

 

Вспомогательный

 

 

1

в результате операции сложения был произведен перенос

 

af

 

флаг переноса

4

 

из разряда 3 в старший разряд или при вычитании был заем в

 

 

 

(Auxiliary carry Flag)

 

 

разряд 3 младшей тетрады из значения в старшей тетраде;

 

 

 

 

 

 

0

переносов и заемов в(из) 3 разряд(а) младшей тетрады

 

 

 

 

 

 

результата не было

 

zf

 

Флаг нуля (Zero Flag)

6

 

1

результат нулевой;

 

 

 

0

результат ненулевой

 

 

 

 

 

 

 

 

 

 

 

 

Отражает состояние старшего бита результата (биты 7, 15 или

 

sf

 

Флаг знака

7

 

31

для 8, 16 или 32-разрядных операндов соответственно):

 

 

(Sign Flag)

 

1

старший бит результата равен 1;

 

 

 

 

 

 

 

 

 

 

 

0

старший бит результата равен 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Флаг of используется для фиксирования факта потери

 

 

 

 

 

 

 

 

 

 

значащего бита при арифметических операциях:

 

 

 

 

Флаг переполнения

 

 

 

 

1 — в результате операции происходит перенос (заем) в(из)

 

 

of

 

11

 

 

 

старшего, знакового бита результата (биты 7, 15 или 31 для 8,

 

 

 

(Overflow Flag)

 

 

 

 

 

 

 

 

 

 

 

 

 

16 или 32-разрядных операндов соответственно);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 — в результате операции не происходит переноса (заема)

 

 

 

 

 

 

 

 

 

 

в(из) старшего, знакового бита результата

 

 

 

 

Уровень Привилегий

 

 

 

 

Используется в защищенном режиме работы

 

 

 

 

ввода-вывода

 

 

 

 

 

 

 

iopl

 

 

12, 13

 

 

микропроцессора для контроля доступа к командам ввода-

 

 

 

(Input/Output Privilege

 

 

 

 

 

 

 

 

 

 

вывода в зависимости от привилегированности задачи

 

 

 

 

Level)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

флажок вложенности

 

 

 

 

Используется в защищенном режиме работы

 

 

nt

 

задачи

 

14

 

 

 

микропроцессора для фиксации того факта, что одна задача

 

 

 

 

(Nested Task)

 

 

 

 

 

вложена в другую

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2. Системные флаги

 

 

 

 

 

 

 

 

Мнемоника

 

 

Номер

 

 

 

 

 

 

 

 

 

 

 

 

 

Флаг

бита

 

Содержание и назначение

 

 

флага

 

 

вeflags

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Предназначен для организации пошаговой работы микропроцессора.

 

 

 

Флаг

 

 

1 — микропроцессор генерирует прерывание с номером 1 после

 

 

tf

трассировки

8

 

выполнения каждой машинной команды. Может использоваться при

 

 

 

(Trace Flag)

 

 

отладке программ, в частности отладчиками;

 

 

 

 

 

 

 

0 —

обычная работа

 

 

 

 

 

 

 

 

 

 

 

 

if

rf

 

Флаг

 

Предназначен для разрешения или запрещения (маскирования)

 

 

прерывания

9

аппаратных прерываний (прерываний по входу INTR).

 

 

(Interrupt enable

1 — аппаратные прерывания разрешены;

 

 

 

 

 

Flag)

 

0 — аппаратные прерывания запрещены

 

 

 

 

 

 

 

Флаг

 

 

 

 

возобновления

16

Используется при обработке прерываний от регистров отладки.

 

 

(Resume Flag)

 

 

 

 

 

 

 

 

 

 

 

Флаг

 

 

 

 

Признак работы микропроцессора в режиме виртуального 8086.

 

 

 

 

виртуального

 

 

 

 

 

 

vm

 

 

17

 

 

1 —

процессор работает в режиме виртуального 8086;

 

 

 

(Virtual 8086

 

 

 

 

 

 

 

 

 

 

 

0 —

процессор работает в реальном или защищенном режиме

 

 

 

 

Mode)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Предназначен для разрешения контроля выравнивания при

 

 

 

 

Флаг контроля

 

 

 

 

обращениях к памяти. Используется совместно с битом am в

 

 

 

 

 

 

 

 

системном регистре cr0. К примеру, Pentium разрешает размещать

 

 

 

 

выравнивания

 

 

 

 

 

 

ac

 

 

18

 

 

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

 

 

 

(Alignment

 

 

 

 

 

 

 

 

 

 

 

выравнивание данных и команд по адресам кратным 2 или 4, то

 

 

 

 

Check)

 

 

 

 

 

 

 

 

 

 

 

 

установка данных битов приведет к тому, что все обращения по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

некратным адресам будут возбуждать исключительную ситуацию

 

 

 

 

 

 

eip/ip (Instraction Pointer register) —

регистр-указатель команд.

 

Регистр eip/ip имеет разрядность 32/16 бит и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд. Этот регистр непосредственно недоступен программисту, но загрузка и изменение его значения производятся различными командами управления, к которым относятся команды условных и безусловных переходов, вызова процедур и возврата из процедур. Возникновение прерываний также приводит к модификации регистра eip/ip.

8.ОРГАНИЗАЦИЯ ПАМЯТИ И РЕЖИМЫ РАБОТЫ ПРОЦЕССОРА. ПОНЯТИЕ СЕГМЕНТАЦИИ. СЕГМЕНТИРОВАННАЯ МОДЕЛЬ ПАМЯТИ.

Организация памяти

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

ОП организована как последовательность байтов.

Каждому байту соответствует уникальный адрес (его номер), который называется физическим адресом.

Физический диапазон значений адресов зависит от разрядности шины адреса микропроцессора. Для i486 и Pentium он находится в диапазоне от 0 до 2**32-1 --- 4 Гбайт (32-разрядная шина адреса). Механизм управления памятью полностью аппаратный, т.е. программа сама не может сформировать физический адрес памяти на адресной шине.

Их 3: Защищенный (Protected Mode), Реальный (Real Mode) и Режим Сис.Управления

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

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

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

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

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

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

Вотличие от 8086 микропроцессоры 286+ в определенных ситуациях генерируют исключения, например, при превышении предела сегмента, который для всех сегментов в реальном режиме - 0FFFFh. Ячейки от 00000h до 003FFH резервируются для векторов прерываний. Каждое из 256 возможных прерываний имеет зарезервированный 4-байтовый адрес перехода. Ячейки от FFFFFFF0H до FFFFFFFFH резервируются для инициализации системы

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

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

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

Понятие о сегментированной модели памяти

Память для программы делится на непрерывные области памяти, называемые сегментами. Сегменты - это логические элементы программы.

Сама программа может обращаться только к данным, которые находятся в этих сегментах. Операционная система (! а не сама программа) размещает сегменты программы в ОП по определенным физическим адресам, а значения этих адресов записывает в определенные места, в зависимости от режима работы микропроцессора:

в реальном режиме адреса помещаются непосредственно в сегментные регистры (cs, ds, ss, es, gs, fs);

в защищенном режиме - в специальную системную дескрипторную таблицу (Элементом дескрипторной таблицы является дескриптор сегмента. Каждый сегмент имеет дескриптор сегмента - 8 байт. Существует три дескрипторные таблицы. Адрес каждой таблицы записывается в специальный системный регистр).

Для доступа к данным внутри сегмента обращение производится относительно начала сегмента линейно, т.е. начиная с 0 и заканчивая адресом, равным размеру сегмента. Этот адрес называется смещением (offset). Таким образом, для обращения к конкретному физическому адресу ОП необходимо определить адрес начала сегмента и смещение внутри сегмента.

9.ФОРМИРОВАНИЕ ФИЗИЧЕСКОГО АДРЕСА В РЕАЛЬНОМ РЕЖИМЕ

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

Диапазон изменения физического адреса — от 0 до 1 Мбайт. Эта величина определяется тем, что шина адреса i8086 имела 20 линий.

Максимальный размер сегмента— 64 Кбайт. Это объясняется 16-разрядной архитектурой 18086. Нетрудно подсчитать, что максимальное значение, которое могут содержать 16-разрядные регистры, составляет 216 - 1, что применительно к памяти и определяет величину 64 Кбайт.

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

Понятие адреса начала сегмента ввиду принципиальной важности требует дополнительного пояснения. Исходя из разрядности сегментных регистров, можно утверждать, что сегментная составляющая адреса (или база сегмента) представляет собой всего лишь 16-разрядное значение, помещенное в один из сегментных регистров. Максимальное значение, которое при этом получается, соответствует 216 - 1. Если так рассуждать, то получается, что адрес начала сегмента может быть только в диапазоне 0-64 Кбайт от начала оперативной памяти. Возникает вопрос, как адресовать остальную часть оперативной памяти вплоть до 1 Мбайт с учетом того, что размер самого сегмента не превышает 64 Кбайт. Дело в том, что в сегментном регистре содержатся только старшие 16 битов физического адреса начала сегмента. Недостающие младшие четыре бита 20разрядного адреса получаются сдвигом значения в сегментном регистре влево на 4 разряда. Эта операция сдвига выполняется аппаратно и для программного обеспечения абсолютно прозрачна.

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

10.ЖИЗНЕННЫЙ ЦИКЛ ПРОГРАММЫ НА АССЕМБЛЕРЕ

-Этап постановки задачи -Этап проектирования -Этап кодирования

-Этап отладки и тестирования -Этап эксплуатации и сопровождения 1. Постановка и формулировка задачи:

изучение предметной области и сбор материала в проблемно-ориентированном контексте;

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

определение структур входных и выходных данных;

формирование ограничений и допущений на исходные и выходные данные.

2. Этап проектирования:

формирование «ассемблерной» модели задачи;

выбор метода реализации задачи;

разработка алгоритма реализации задачи;

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

3. Этап кодирования:

уточнение структуры входных и выходных данных и определение ассемблерного формата их представления; программирование задачи;

комментирование текста и составление предварительного описания программы.

4. Этап отладки и тестирования:

составление тестов для проверки работоспособности программы;

обнаружение, локализация и устранение в программе ошибок, выявленных в тестах;

корректировка кода программы и ее описания.

5. Этап эксплуатации и сопровождения:

настройка программы на конкретные условия использования;

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

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

функциональных возможностей.

11. ТРАНСЛЯЦИЯ ПРОГРАММЫ. КОМПОНОВКА. ОТЛАДКА

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

Если программа содержит ошибки, то на экране появится соответствующее уведомление об ошибке или предупреждение.

Компановка программы - создание исполняемого загрузочного модуля. Цель этого шага - преобразовать код и данные в объектных файлах в их перемещаемое выполняемое отображение.

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

Результатом работы компоновщика является исполняемый файл.

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

Стандартные возможности отладчика:

1)выполнение трассировки программы в прямом направлении, то есть последовательное выполнение программы, при котором за один шаг выполняется одна машинная инструкция;

2)выполнение трассировки программы в обратном направлении;

3)просмотр и изменение состояния аппаратных ресурсов микропроцессора во время покомандного выполнения программы.

12.СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА.

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

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

1)поле префикса - элемент команды, который уточняет или модифицирует действия команды в следующих аспектах: 1) замена сегмента, если не удовлетворяет сегмент по умолчанию; 2) изменение размерности адреса;

3)указание на необходимость повторения команды.

2)поле кода операции - определяет действия команды. Одной и той же команде могут соответствовать несколько кодов операций в зависимости от ее операнда.

3)поле операндов - содержит от нуля до 2 элементов.

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

Префиксы - необязательные элементы машинной команды. Назначение префиксов: модификация операций выполняемой команды.

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

Префикс Разрядности адреса - уточняет Разрядность адреса: 16 или 32.

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

На микропрограммном уровне операнд задается неявно. В результате команда явно не содержит операндов, а алгоритм выполнения команды использует некоторые объекты по умолчанию, например, регистры или флаги. Непосредственный операнд задается в самой команде. Операнд находится в коде команды, то есть является ее частью. Для хранения такого операнда в команде выделяется поле длиной до 32 бит. Операнд может находиться в одном из регистров, регистровые операнды указываются именами регистров.

32 разрядные регистры: EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP. 16 разрядные регистры: AX, BX, CX, DX, SI, DI, SP, BP

8 разрядные регистры: AH, AL, BH, BL, CH, CL, DH, DL

Сегментные регистры: CS, DS, SS, ES, FS, GS

Операнд располагается в памяти. Это позволяет организовать два основных вида адресации: прямую и косвенную. Операндом может являться код ввода-вывода. Микропроцессор поддерживает адресное пространство ввода-вывода, которое используется для доступа к устройствам.

13. СТРУКТУРА МАШИННОЙ КОМАНДЫ. СПОСОБЫ ЗАДАНИЯ ОПЕРАНДОВ

Машинная команда представляет собой закодированное по определенным правилам указание микропроцессору на выполнение некоторой операции или действия 1. Префиксы.

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

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

а) 2eh – замена сегмента cs;

б) 36h – замена сегмента ss;

в) 3eh – замена сегмента ds;

г) 26h – замена сегмента es;

д) 64h – замена сегмента fs;

е) 65h – замена сегмента gs;

2)префикс разрядности адреса уточняет разрядность адреса (32– или 16-разрядный). Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда. Этот адрес может иметь разрядность 16 или 32 бит. Если разрядность адреса для данной команды 16 бит, это означает, что команда содержит 16-разрядное смещение (рис. 20), оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента. В контексте рисунка 21 это смещение называется эффективный адрес. Если разрядность адреса 32 бит, это означает, что команда содержит 32-разрядное смещение (рис. 20), оно соответствует 32-разрядному смещению адресного операнда относительно начала сегмента, и по его значению формируется 32-битное смещение в сегменте. С помощью префикса разрядности адреса можно изменить действующее по умолчанию значение разрядности адреса. Это изменение будет касаться только той команды, которой предшествует префикс;

3)префикс разрядности операнда аналогичен префиксу разрядности адреса, но указывает на разрядность операндов (32– или 16-разрядные), с которыми работает команда. В соответствии с какими правилами устанавливаются значения атрибутов разрядности адреса и операндов по умолчанию?

В реальном режиме и режиме виртуального 18086 значения этих атрибутов – 16 бит. В защищенном режиме значения атрибутов зависят от состояния бита D в дескрипторах исполняемых сегментов. Если D = 0, то значения атрибутов, действующие по умолчанию, равны 16 бит; если D = 1, то 32 бит.

Значения префиксов разрядности операнда 66h и разрядности адреса 67h. С помощью префикса разрядности адреса в реальном режиме можно использовать 32-разрядную адресацию, но при этом необходимо помнить об ограниченности размера сегмента величиной 64 Кбайт. Аналогично префиксу разрядности адреса вы можете использовать префикс разрядности операнда в реальном режиме для работы с 32-разрядными операндами (к примеру, в арифметических командах);

4)префикс повторения используется с цепочечными командами (командами обработки строк). Этот префикс «зацикливает» команду для обработки всех элементов цепочки. Система команд поддерживает два типа префиксов:

а) безусловные (rep – OOh), заставляющие повторяться цепочечную команду некоторое количество раз;

б) условные (repe/repz – OOh, repne/repnz – 0f2h), которые при зацикливании проверяют некоторые флаги, и в результате проверки возможен досрочный выход из цикла.

14.ФУНКЦИОНАЛЬНАЯ КЛАССИФИКАЦИЯ МАШИННЫХ КОМАНД.