Главная Случайная страница


Категории:

ДомЗдоровьеЗоологияИнформатикаИскусствоИскусствоКомпьютерыКулинарияМаркетингМатематикаМедицинаМенеджментОбразованиеПедагогикаПитомцыПрограммированиеПроизводствоПромышленностьПсихологияРазноеРелигияСоциологияСпортСтатистикаТранспортФизикаФилософияФинансыХимияХоббиЭкологияЭкономикаЭлектроника






Структурная схема микропроцессора

Архитектура ЭВМ

 

Оглавление

 

1. Концептуальная модель 3

2. Формализация концептуальной модели.

2.1. Построение формальной схемы функционирования системы 4

2.2. Определение параметров и переменных модели, единицы

модельного времени 4

2.3. Определение закона функционирования системы 5

3. Алгоритмизация модели и её машинная реализация.

3.1. Выбор технических и программных средств моделирования 8

3.2. Составление алгоритма моделирующей программы 8

3.3. Описание моделирующей программы для детерминированного

варианта модели 9

3.4. Верификация (тестирование) программы 9

3.5. Моделирование случайных воздействий 9

3.5.1. Моделирование случайных воздействий, имеющих

равномерное распределение.

3.5.1.1. Аппаратный способ 9

3.5.1.2. Программный способ 11

3.5.1.3Статистическое оценивание равномерно распределенных

ПСЧ 12

3.5.1.4. Выбор генератора равномерно распределённых ПСЧ 12

3.5.2. Моделирование случайных воздействий, имеющих

неравномерное распределение 13

3.5.2.1. Оценка качества чисел, имеющих Гамма закон

распределения 13

3.5.2.2. Обработка файла чисел, имеющих показательно степенной

закон распределения 15

3.6. Описание моделирующей программы для стохастической

модели 16

4. Получение и интерпретация результатов моделирования

4.1. Планирование машинного эксперимента 17

4.2. Проведение прогонов модели 17

4.3. Анализ результатов моделирования 18

4.4. Оптимизация модели 18

4.5. Анализ результатов оптимизации 20

Приложения 21

Список использованной литературы 37

Процессор Intel

Архитектура микропроцессора

Высокопроизводительный 32-х разрядный микропроцессор 80i86 ориентирован на эффективное выполнение программ в среде многозадачных ОС (типа Windows). Микропроцессор имеет 32-разрядные регистры и 32-х разрядные раздельные шины адреса и данных.

Физическое адресное пространство равно 4 Гб (232)

Виртуальное адресное пространство равно 64Тб (246).

Эти микропроцессоры имеют полную совместимость с выпускающимися ранее 16-ти разрядными СРU фирмы Intel.

 

Структурная схема микропроцессора

 

В состав микропроцессора входят:

-операционный блок;

-блок выборки команд;

-диспетчер памяти;

-устройство управления;

-интерфейс магистрали.

Операционный блок вместе с устройством управления составляют центральный процессор микропроцессора, который предназначен для выполнения всех логических и математических операций. Операционный блок включает в свой состав АЛУ и восемь 32-хразрядных регистров (РОНов). Подсистема выборки команд реализует двухступенчатый алгоритм конвейеризации и состоит из блоков предвыборки команд и дешифрации команд. Блок предвыборки команд принимает команды из интерфейса магистрали, выстраивая их в очередь кодов.

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

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

Имеется два режима работы микропроцессора:

а)режим реальных адресов (реальный режим);

б)режим защищенных виртуальных адресов (виртуальный режим).

В реальном режиме микропроцессор 80i86 работает как быстрый микропроцессор 8086. В реальном режиме страничная организация памяти не используется.

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

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

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

Интерфейс магистрали позволяет осуществить обмен микропроцессора информацией с ОЗУ и ПУ с помощью 32-хразрядной двунаправленной ШД, 34-хразрядной ША и 16-разрядной ШУ. Особенностью ШД является возможность динамического изменения ее разрядности. За один цикл шины может быть переданы 1,2 или 4 байта. По ША передаются 32-х адреса. ША состоит из 30 адресных линий, обозначенных как А31-А2 и 4-х линий выбора байт, обозначенных как ВЕ3-ВЕ0. Сигналы выбора байт определяют, какие байты 32-хразрядной шины данных участвуют в текущем цикле обмена. Это позволяет легко согласовать ШД с байтной организацией памяти:

При ВЕ0=0 – адресуется младший байт ШД, т.е. разряды D0 – D7;

ВЕ1=0 – адресуется следующий байт ШД, т.е. D8 – D15;

ВЕ2=0 – адресуется следующий байт ШД, т.е. D16 – D23;

ВЕ3=0 – адресуется старший байт ШД, т.е. D24 – D31.

Регистры

Набор регистров микропроцессора включает:

-РОНы;

-сегментные регистры;

-указатели команд и регистр флагов;

-регистры управления;

-регистры адреса системы;

-регистры отладки;

-регистры тестирования.

Всего микропроцессор содержит 32 регистра, из которых 15 регистров могут адресоваться пользователем, кроме этого имеется указатель команд и 16 системных регистров недоступных пользователю. Все 16-тиразрядные регистры микропроцессоров 8086, 80186, 80286 содержатся в 32-разрядных регистрах микропроцессора 80i386.

 

РОНы

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

Младшие разряды РОНов (с 0 по 15) доступны отдельно при использовании имен AX, BX, CX, DX, SI, DI, BP, SP. При операциях с байтами для 4-х верхних регистров можно отдельно обращаться к младшему байту по, именам AL, BL, CL, DL и к старшим байтам по именам АН, ВН, СН, DH.

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

Регистр ESP используется как указатель вершины стека.

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

А регистры EDI и ESI используются как индексные регистры (для хранения индексов). В качестве базового и индексного регистров в некоторых случаях может использоваться и регистр данных EBX.

Сегментная организация памяти

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

1)16-тиразрядный селектор для определения базового адреса сегмента, который содержится в дескрипторе.

2)16 или 32-хразрядный эффективный адрес, который зависит от режима работы и способа адресации.

Проиллюстрируем процесс вычисления линейного адреса с помощью следующей схемы:

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

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

 

Страничная организация памяти

Страничный диспетчер памяти, имеющийся в микропроцессоре, обеспечивает следующую возможность: 1)представляет пользователю возможность работать с большим адресным пространством;

2)обеспечивает защиту ОС и программное обеспечение пользователя;

3)реализует быструю трансляцию адресов.

Линейное адресное пространство памяти объемом 4 Гб при страничной организации разбито на 220 страниц объемом по 4 кб каждая страница. Фиксированный размер всех страниц позволяет загружать любую требуемую виртуальную страницу в нужную физическую страницу.

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

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

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

 
 

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

 

TABLE – указывает относительный адрес таблицы страниц выбираемого раздела в каталоге.

PAGE – задает относительный адрес требуемой страницы данного раздела.

BYTE – содержит относительный адрес выбираемого на странице байта.

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

Указатели входа в раздел и в страницу имеют одинаковый формат:

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

Р – бит присутствия. Если Р=1, то разрешается использование таблицы страниц, если Р=0, то такое использование запрещается. При Р=0 попытка обращения к соответствующему разделу или странице вызывает прерывание из-за отсутствия нужной страницы в оперативной памяти. После загрузки нужной страницы в память, бит Р устанавливается в «1» и в этом случае обращение к данной странице становится возможной. Это нужно для того, чтобы ОС знала, где находится страница.

R/W - бит чтения/записи.

U/S - бит пользователь/супервизор.

Эти два бита определяют право доступа к соответствующей странице или разделу для программ пользователя. Программа пользователя обычно имеет самый низкий уровень привилегий равный 3. Если осуществляется запрос с уровнем привилегий равным 3, то при значении U/S = 0 программе пользователя запрещается доступ к разделу или странице.

При U/S = 1 обращение разрешается, но при этом учитывается значение бита R/W.

Если R/W = 0, то программе пользователя разрешается только чтение раздела или страницы.

Если R/W = 1, то разрешается как чтение, так и запись. Если осуществляются запросы с большим уровнем привилегий (0, 1 и 2), то допускается запись и чтение разделов и страниц при любых значениях ‘1’ и ‘2’ разрядов.

Такие уровни привилегий имеет ОС.

А - бит доступа. Этот бит автоматически устанавливается в «1» микропроцессором при обращении к данному разделу или странице для записи или чтения.

D – бит «мусора». В указателе кадра страницы этот бит устанавливают в «1» при записи на данную страницу. Для указателей таблиц страниц значение бита D является неопределенной.

Биты D и A используются ОС, поддерживающей виртуальную память, для определения в ОЗУ тех разделов и страниц, которые подлежат удалению из ОЗУ, поскольку к ним долгое время не было обращения. Проверку и сброс этих разрядов выполняет ОС.

Алгоритм формирования физического адреса:


 

Содержимое CR3 (регистр управления) задает старшие 20 разрядов базового адреса для входа в каталог раздела. Для получения физического адреса строки каталога разделов к этим 20 разрядам добавляется 10-тиразрядное поле TABLE линейного адреса и 2 нулевых младших разрядов. По полученному таким образом адресу обращаются к каталогу разделов, откуда выбирают указатели входа в таблицу страниц. Этот указатель содержит 20-разрядный базовый адрес таблицы страниц. К этим 20 разрядам добавляется поле PAGE и 2 нулевых младших разряда. В результате получается адрес строки таблицы страниц. В этой строке находится указатель входа в страницу, содержащий 20-разрядный базовый адрес страницы. Добавление к этому базовому адресу 12-тиразрядного поля BYTE дает физический адрес байта.

Существенное сокращение времени преобразования адресов в микропроцессоре достигается путем внутренней ассоциативной памяти, которая называется «буфером ассоциативной трансляции» и обозначается TLB.

 

 

Организация виртуальной памяти

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

В системе с виртуальной памятью бит Р должен точно отображать месторасположение виртуальной страницы, которая может находиться либо в ОЗУ, либо на диске. ОС следит за состоянием бита Р. Микропроцессор автоматически проверяет состояние бита Р в каталоге таблиц страниц и в самой таблице станиц, при каждом обращении к памяти. Если Р=1, то это значит, что та страница к которой происходит обращение находится в ОЗУ. В этом случае производится трансляция адресов либо с универсальным алгоритмом, либо с TLB.

Если Р=0, то это значит, что нужной страницы в ОЗУ нет, а эта страница находится на диске, поэтому в случае Р=0 обращение к памяти не выполняется, ситуация квалифицируется как «ошибка страниц» и CPU генерирует исключительную ситуацию. В этом случае управление передается ОС, которая после анализа исключительной ситуации определяет, что произошла ошибка страниц, находит нужную страницу на диске, загружает ее в ОЗУ, устанавливает бит Р «1» и возвращает управление той программе, которая вызвала эту ситуацию.

Таким образом, происходит непрерывное обновление содержимого ОЗУ, т.е. в ОЗУ загружаются те страницы, которые нужны в данный момент времени и удаляются те, обращение к которым долго не производилось. Для определения тех страниц, которые подлежат удалению из ОЗУ, используют биты A и D, т.е. 5 и 6 разряды указателей.

Таким образом, страничная организация памяти используется при организации виртуальной памяти, когда ОС вместе с CPU непрерывно обновляет содержимое ОЗУ, удаляя долго не используемые страницы для записи на освободившееся место нужной в данный момент страницы.

Определим объем виртуальной памяти 32-х разрядного CPU, т.е. объем той памяти, который этот CPU может адресовать.

Объем виртуальной памяти равен максимальному объему сегмента (4 Гб), умноженному на количество этих сегментов.

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

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

Уровни привилегий

Концепция уровней привилегий.

 

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

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

В микропроцессоре установлено 4 уровня привилегий (PL) , которые задаются номерами от 0 до 3.

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

3 – программы пользователя

2 – служебные программы

1 – драйверы устройств и улиты ОС

0 – ядро ОС

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

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

На втором и третьем уровнях располагаются программы разработчиков комплексных систем, например СУБД, и программы пользователей соответственно.

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

Операционная система необязательно должна поддерживать все четыре уровня привилегий. Например, система UNIX имеет всего 2 уровня: операционной системе присвоен номер 0, а программам пользователей – уровень 3. Система OS/2 поддерживает три уровня: программы ОС работают на 0 уровне, специальные процедуры для обращения к устройствам ввода/вывода действуют на уровне 2, а прикладные программы пользователей выполняются на уровне 3.

 

 

Задание уровней привилегий

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

Уровень привилегий сегмента или шлюза определяет поле DPL , которое находится в байте прав доступа AR соответствующего дескриптора. Таким образом, каждый сегмент или шлюз имеет свой персональный уровень привилегий DPL.

Кроме уровня привилегий сегмента DPL существует понятие текущего уровня привилегий CPL (от англ. Current Privilege Level или Code Privilege Level). Текущий уровень привилегий CPL определяется полем DPL дескриптора текущего программного сегмента. После загрузки программного сегмента в ОЗУ и передачи на него управления значение DPL копируется в поле CPL регистра программного сегмента CS. После этого уровень привилегий программного сегмента DPL становится текущим уровнем привилегий CPL. Таким образом, текущий уровень привилегий является уровнем привилегий исполняемого программного сегмента.

Кроме уровней привилегий DPL и CPL , механизм защиты использует понятие уровня привилегий запроса RPL (Requested Privilege Level). Этот уровень привилегий задается двумя младшими разрядами селектора.

Формат селектора:

Уровень привилегий запроса RPL селекторов сегментов данных сохраняется в соответствующих сегментных регистрах SS, DS, ES, FS, GS. Понятие уровня привилегий запроса RPL служит для защиты программ и данных операционной системы от ошибок программ, изменивших уровень привилегий при межуровневых передачах управления.

 

 

4. Работа механизма защиты

Защита данных

 

Все прикладные программы в многопрограммном режиме выполняются на одном третьем уровне привилегий. Механизм виртуальной памяти обеспечивает их защиту от взаимных помех. Всем программам разрешено обращаться к любым данным на своем уровне привилегий. Логика сервисных функций современных ОС предусматривает работу с данными программ менее защищенных режимов. Поэтому программам разрешено обращаться к данным и на менее привилегированных уровнях. Однако программам не разрешается чтение/запись элементов данных, которые имеют более высокий уровень привилегий, т.е. движение к данным внутрь колец защиты запрещается. Любая такая попытка приводит к фиксации нарушения общей защиты. Это общее правило доступа к данным можно записать в виде следующего условия: CPL<DPL (1), т.е. PL текущей программы должен быть меньше или равен PL данных. Условие допустимых схем обращения графически можно представить в следующем виде:

∆ - сегмент программы (CPL)

□ – сегменты данных (DPL)

Здесь стрелками без перекрещивания указаны разрешенные схемы доступа. В приведенном примере запрещено обращение к сегменту данных находящему на 1 уровне привилегии, а остальные обращения разрешены. Однако, программы менее защищенных уровней, используя сервисные программы более защищенных уровней, могут выполнять разные процедуры на уровне этих сервисных программ, в том числе процедуры изменения данных. Поэтому возникает опасность несанкционированного нарушения данных на более защищенном уровне привилегий PL. Для блокирования этой опасности механизм защиты использует более сложную схему проверки условий доступа. В условие проверки вводится параметр – эффективный уровень привилегий (Effective Privilege Level – EPL) как функция уровня привилегий запросчика RPL:

EPL=max(CPL,RPL)

Параметр EPL используется в условии проверки разрешения доступа к сегментам данных вместо параметра CPL. С учетом RPL условие проверки доступа к данным имеет следующий вид:

EPL<DPL или max(CPL,RPL)<DPL или (CPL<DPL)&(RPL<DPL)

Из приведенных выражений для условий доступа видно, что значение RPL может только усилить неравенство (1), т.е. уменьшить возможности обращения текущей программы к сегментам данных. Например, пусть CPL=RPL=2. Тогда EPL=2 и текущей программе с CPL=2 разрешено обращение к сегментам данных, расположенным на втором и третьем уровнях привилегий. Если RPL=3, а CPL=2, то EPL=3 и текущая программа, имеющая CPL=2, уже не сможет обратиться к сегментам данных второго уровня привилегий, и ей доступны сегменты только третьего уровня привилегий. Таким образом, за счет RPL можно настраивать механизм защиты на нужный режим работы. Это основное назначение параметра RPL.

 

Защита программ.

 

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

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

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

Программный сегмент определяется, как подчиненный установкой бита C – conforming в байте прав доступа AR дескриптора программного сегмента. Обычные правила защиты по значениям CPL и DPL не действуют, если бит подчиненности С установлен в единицу (С=1). В этом случае используются другие правила.

С подчиненными программными сегментами, у которых С=1, не ассоциируется конкретный уровень привилегий, так как эти программы подчиняются уровню привилегий той программы, которая передает им управление. Например, если программа, у которой PL=3, передает управление подчиненному программному сегменту, то такая подчиненная программа будет работать с CPL=3, если же этот сегмент вызывает программа с PL=0, то подчиненная программа из этого сегмента будет выполняться, имея CPL=0. Когда управление передается подчиненному программному сегменту, то биты поля CPL регистра кодов CS не принимает значение поля DPL дескриптора нового программного сегмента, а сохраняют значение DPL последнего выполнявшегося неподчиненного программного сегмента. Таким образом, переход на подчиненные программные сегменты являются переходом без изменения текущего уровня привилегий PL.

Но даже для подчиненных программных сегментов имеются ограничения по их использованию. Передавать управление подчиненному сегменту может только та программа, уровень привилегий которой CPL не выше уровня привилегий DPL подчиненного программного сегмента, т.е. проверяется условие CPL>DPL. Чтобы программа подчиненного сегмента была доступна на всех уровнях привилегий, она должна иметь наивысший уровень привилегий, т.е. DPL=0. Такое условие соответствует общему правилу использования сервисных программ: любая программа может быть сервисом только для программ более низкого уровня иерархии.

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

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

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

Но передача управления на программы ОС необходима. Для решения этой проблемы в микропроцессоре предусмотрены особые системные объекты – шлюзы. Шлюзы являются ключевыми объектами для организации межсегментных переходов с увеличением уровня привилегий, т.е. на программы ОС. Любые переходы с увеличением уровня привилегий производятся только с использованием шлюза. Дескриптор шлюза вызова действует как посредник между программными сегментами, находящимися на различных уровнях привилегии.

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

Доступность шлюза аналогично доступности данных. Шлюз доступен, если его уровень привилегий DPL шл не выше текущего уровня привилегий CPL вызывающей программы и уровня привилегий RPL запроса. Таким образом, механизм защиты проверяет условие: (CPL<DPLшл)&(RPL<DPLшл) (2)

В результате получается следующий алгоритм проверок при использовании шлюзов. На первом этапе вызывающая программа производит чтение дескриптора шлюза вызова и проверяется условие его доступа (2). Уровень привилегий шлюза DPLшл выбирается из дескриптора шлюза. Если условие (2) выполняется, то на втором этапе производится чтение дескриптора программного сегмента из локальной LDT или глобальной GDT таблиц дескрипторов. Обращение к этим таблицам производится с помощью селектора, заданного в дескрипторе шлюза вызова. После этого проверяется условие доступности программного сегмента. Межсегментная передача управления допустима только на программы своего или более высоких уровней привилегий DPL. Таким образом, на втором этапе проверяется условие (CPL>DPL) (3). Если условие (3) выполняется, то значение DPL из дескриптора вызываемого программного сегмента заносится в поле уровня привилегий CPL сегментного регистра CS. После сохранения в стеке параметров вызывающей программы, таких как точки возврата, и проведения необходимых проверок управление передается вызываемой программе.

 

Конвейер команд

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

 

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

Рассмотрим синхронный конвейер команд, который обычно применяется в большинстве современных микропроцессорах.

Пусть рабочий цикл выполнения команды состоит из шести этапов, т.е. К=6:

1) Выборка команды (ВК). На этом этапе проводится чтение очередной команды программы из памяти и запись ее в регистр команд процессора.

2) Декодирование команды (ДК). На втором этапе проводится определение кода операции команды и способы адресации операндов.

3) Вычисление адресов операндов (ВА). Вычисляются физические адреса каждого из операндов в соответствии со способом его адресации.

4) Выборка операндов (ВО). Чтение операндов из памяти и запись их в регистры процессора (РОНы).

5) Исполнение команды (ИК). Выполнение самой команды. Большинство арифметических и логических команд выполняется в АЛУ.

6) Запись результата (ЗР). Запись результата выполнения операции в память.

Некоторые команды могут выполняться за меньшее количество этапов. Например, для команд типа “регистр-регистр” не требуется 4-ый и 6-ой этапы.

Временная диаграмма выполнения девяти команд на конвейере (N=9):

Рис.1

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

При отсутствии конвейера выполнение 9 команд заняло бы 9*6=54 такта. Использование конвейера позволяет сократить время обработки до 14 тактов.

 

 

Конфликты в конвейере команд

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

1) попыткой нескольких команд одновременно обратиться к одному и тому же ресурсу (структурный риск);

2) взаимосвязью команд по данным (риск по данным);

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

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

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

Пусть две команды на конвейере i-ая и j-ая предусматривают обращение к одной и той же переменной x, а команда i предшествует команде j. Тогда между этими командами возможны три типа конфликта по данным.

а) Чтение после записи (ЧПЗ). Для правильного выполнения программы команд j-ая должно прочитать переменную x после ее изменения предшествующей командой i. Если же команда j читает x до того, как команда i успела записать новое значение x, т.е. команда j ошибочно читает старое значение x вместо нового, то возникает конфликт, нарушающий правило: “Чтение после записи”.

Это наиболее частый тип конфликта по данным, поскольку операция чтения (этап ВО) предшествует операции записи (этап ЗР).

в) Запись после чтения (ЗПЧ). Конфликт такого типа возникает в том случае, если команда j записывает новое значение x раньше, чем предшествующая команда i успела прочитать старое значение x, т.е. команда i ошибочно получает новое значение переменной x вместо ее старого значения. Таким образом, возникает конфликт, нарушающий правило “Запись после чтения”.

Последнее изменение этой страницы: 2016-07-23

lectmania.ru. Все права принадлежат авторам данных материалов. В случае нарушения авторского права напишите нам сюда...