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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


Лекции Процессор Intel

Информация:

Тип работы: Лекции. Добавлен: 20.10.2012. Сдан: 2011. Страниц: 22. Уникальность по antiplagiat.ru: < 30%

Описание (план):


      Процессор 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. 

      Регистры  сегментов и дескрипторов сегментов
      Архитектура микропроцессора поддерживает организацию  памяти в виде сегментов. Всего имеется 6 сегментных регистров.
      
      В реальном режиме: для хранения адресов начала соответствующих сегментов используется 16-хразрядные регистры CS, SS, DS, ES, FS, GS. Они выполняют те же функции, что и в микропроцессоре 8086. то есть, используются при вычислении физических адресов путем суммирования базового адреса, находящегося в сегментном регистре, со смещением. Такое суммирование выполняет блок сегментации, где располагаются и сами сегментные регистры. Максимальный размер сегмента в реальном режиме 64 Кбайт.
      В защищенном режиме содержимое сегментного регистра используется как селектор сегмента. С каждым из сегментных регистров связан регистр дескриптора сегмента. Обращение к дескриптору осуществляется с помощью селектора, который представляет собой 16-хразрядный указатель, имеющий 3 поля.
      
      Биты 0 и 1 – это поле RPL, которое определяет уровень привилегий запроса и используется в механизме защиты памяти.
      Бит 2 – Это поле TI, которое служит индикатором таблицы. При TI=0 используется глобальная таблица дескрипторов GDT. При TI=1 используется локальная таблица дескрипторов LDT.
      Поле  INDEX – служит индексом для выбора одного из 8192 дескрипторов (213), содержащихся в таблицах GDT или LDT. Сами 8-мибайтовые дескрипторы  хранятся в памяти в составе массивов данных, сформированных в виде таблиц. В микропроцессоре используется 3 таблицы дескрипторов:  GDT, LDT и таблица дескрипторов прерывания  IDT.
      С каждой из таблиц связан соответствующий  регистр, который находится в микропроцессоре. Это регистры: GDTR, LDTR и IDTR.
      В качестве примера приведем формат регистра GDTR. Регистр GDTR 48-разрядный. 32-разряда задают базовый адрес таблицы дескрипторов, а 16 разрядов указывают размер этой таблицы в байтах.
        

      При обращении селектора к таблице  GDT сдвинутый на 3 разряда влево (умноженный на 8) селектор служит в качестве смещения для формирования адреса дескриптора. Это смещение сравнивается с границей (с размером) таблицы дескрипторов, находящейся в разрядах с 0 по 15 регистра  GDTR. Если смещение превышает границу, то вырабатывается соответствующее прерывание. Если нарушения границы нет, то смещения суммируются с базовым адресом таблицы дескрипторов. В результате суммирования получается логический адрес младшего байта, выбираемого дескриптора.
      Дескриптор  имеет формат двойного слова, т.е. 8 байт или 64 разряда.
      
      32-хразрядный  базовый адрес сегмента (база) и  20-тиразрядный размер сегмента размещены по частям в различных байтах дескриптора. Пять байт занимает байт доступа, который определяет права доступа к выбираемому сегменту. Этот байт используется в механизме защиты. Четыре разряда 6-го байта определяют следующие атрибуты сегмента:
      G – бит дробности, который указывает, в каких единицах задан размер сегмента;
      При G = 0 – размер задан в байтах и максимальный объем сегмента в этом случае равен 220 = 1 Мб;
      При G = 1 – размер задан в страницах, объемом 4 кб каждая страница. Максимальный объем сегмента в этом случае равен 212 х 220 = 232 = 4 Гб;
      D – бит разрядности, который определяет разрядность формируемого относительного адреса или операнда.
      При D = 0 – адрес или операнд – 16-тиразрядный;
      При D = 1 – адрес или операнд – 32-хразрядный.
      53-ий  разряд – всегда = 0.
      52-ой  – имеет произвольное значение  Х.
      Дескриптор  – это совокупность разрядов, определяющая основные программные объекты. Программными объектами могут быть сегменты или шлюзы.
      Дескриптор  сегмента – дескриптор, определяющий сегмент как совокупность сменных ячеек памяти, начиная с нулевого адреса.   

      Сегментная  организация памяти
      В защищенном режиме для формирования линейного адреса используется две компоненты:
      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. 
 

      Буфер с ассоциативной трансляцией TLB
        Буфер с ассоциативной трансляцией  предназначен для повышения производительности CPU – за счет ускоренного формирования физических адресов, 
      TLB представляет собой память с ассоциативной выборкой, которая содержит 20-ти разрядные базовые адреса 32-х страниц, то есть, старшие 20 разрядов физического адреса страницы. Каждый из базовых адресов имеет свой признак (тег). В качестве тега используются старшие 20 разрядов линейного адреса, то есть поля  TABLE и PAGE. Ускорение формирования физического адреса достигается за счет того, что старшие 20 разрядов физического адреса извлекаются из TLB за одно обращение к этой памяти и сразу же пересылает в регистр физического адреса. Таким образом, если старшие 20 разрядов физического адреса находятся в TLB, то не требуется запускать сложный универсальный алгоритм формирования физического адреса и за счет этого сэкономить время.  
        Формирование физического адреса  с использованием TLB производится следующим образом:
      При поступлении в блок управления страницами линейного адреса его старшие 20 разрядов сравниваются с тегами физических адресов, хранящихся в TLB. Если обнаруживается совпадение этих разрядов с каким-либо из тегов, то из TLB выбирается соответствующий этому тегу базовый адрес. Страничный диспетчер формирует 32-хразрядный физический адрес, в котором выбранный из  TLB базовый адрес задает 20 старших разрядов, а поле  BYTE линейного адреса – 12 младших разрядов.
      
        В случае, когда базовый адрес страницы находится в TLB, называется КЭШ-попаданием. При этом не требуется обращаться к ОЗУ для выборки указателя входа в таблицу страниц и в саму страницу, т.е не требуется запускать универсальный алгоритм формирования физического адреса. В случае КЭШ попадания физический адрес формируется с помощью TLB, так как показано на рисунке.
      Если  базовый адрес нужной страницы отсутствует  в  TLB, то такое обращение называется КЭШ-промахом. При этом микропроцессор выполняет описанную выше процедуру формирования физического адреса с помощью каталога разделов и таблиц страниц. Полученный при этом из таблицы страниц 20 - разрядный базовый адрес вместе с соответствующими 20 разрядами старшей части адреса (тегом) записывается в свободную или дольше других занимаемую ячейку  TLB. Таким образом, обеспечивается непрерывное обновление содержимого TLB, т.е. в TLB находится информация о начальных адресах тех 32 страниц, которые выполняются в данный момент времени.
      Помимо  тега и начального адреса страницы в TLB хранится дополнительная информация, позволяющая в частности определить, какую строку в TLB можно заменить на новую строку, содержащую информацию о начальном адресе той страницы, к которой произошло первое обращение. Для этого каждая строка TLB дополняется бит D, который установливается в “1” при обращении к этой странице. Этот бит D проверяется и сбрасывается в “0” ОС при определении той строки TLB, которая подлежит удалению, с тем чтобы освободить место для новой строки. Т.к. TLB хранит адреса только 32 страниц объемом 4 кб каждая, то микропроцессор может непосредственно формировать физический адрес только для 128 кб памяти (4 х 32). При этом по статистике вероятность КЭШ попадания равна 0,98. Таким образом, только в 2-х случаях из 100 будут промахи, которые требуют двухступенчатого преобразования адресов с использованием универсального алгоритма, т.е. с использованием каталогов, разделов и страниц. 

      Организация виртуальной памяти
      Рассмотренный механизм страничной организация памяти может быть легко использован для организации уже виртуальной памяти. Страничную виртуальную организацию памяти поддерживает бит Р (бит присутствия) это нулевой разряд указателя.
      В системе с виртуальной памятью  бит Р должен точно отображать месторасположение виртуальной страницы, которая может находиться либо в ОЗУ, либо на диске. ОС следит за состоянием бита Р. Микропроцессор автоматически проверяет состояние бита Р в каталоге таблиц страниц и в самой таблице станиц, при каждом обращении к памяти. Если Р=1, то это значит, что та  страница к которой происходит обращение находится в ОЗУ. В этом случае производится трансляция адресов либо с универсальным алгоритмом, либо с TLB.
      Если  Р=0, то это значит, что нужной страницы в ОЗУ нет, а эта страница находится на диске, поэтому в случае Р=0 обращение к памяти не выполняется, ситуация квалифицируется как «ошибка страниц» и CPU генерирует исключительную ситуацию. В этом случае управление передается ОС, которая после анализа исключительной ситуации определяет, что произошла ошибка страниц, находит нужную страницу на диске, загружает ее в ОЗУ, устанавливает бит Р «1» и возвращает управление той программе, которая вызвала эту ситуацию.
      Таким образом, происходит непрерывное обновление содержимого ОЗУ, т.е. в ОЗУ загружаются те страницы, которые нужны в данный момент времени и удаляются те, обращение к которым долго не производилось. Для определения тех страниц, которые подлежат удалению из ОЗУ, используют биты A и D, т.е. 5 и 6 разряды указателей. 
      Таким образом, страничная организация памяти используется при организации виртуальной памяти, когда ОС вместе с CPU непрерывно обновляет содержимое ОЗУ, удаляя долго не используемые страницы для записи на освободившееся место нужной в данный момент страницы.
      Определим объем виртуальной памяти 32-х разрядного CPU, т.е. объем той памяти, который этот CPU может адресовать.
      Объем виртуальной памяти равен максимальному  объему сегмента (4 Гб), умноженному на количество этих сегментов.
      Количество  сегментов определяется объемом  глобальной и локальной  таблиц дескрипторов . В каждой из этих таблиц  создается 213 дескрипторов, что позволяет адресовать 213 сегментов. Таким образом, максимальный объем виртуальной памяти равен:
      
      Таким образом, микропроцессор имеет технические  средства, которые позволяют адресовать виртуальную память до 64 Тб, при условии  использования ОС поддерживающей виртуальную память. 

Встроенные  средства защиты информации в МП фирмы Intel
Концепции и компоненты защищенного режима
   Защищенный  режим работы в МП Intel предусматривает аппаратную поддержку различных вариантов защиты информации от помех. Предусмотренные возможности и глубина защиты определяется использованными ОС. Необходимость в защите информации возникла при переходе на многопрограммный режим работы. ЭВМ, допускающие многопрограммный режим работы должны обеспечивать следующие требования:
    независимость подготовки пользовательских программ и защита от взаимных помех.
    защиту программ ОС от помех при сбое программ пользователей.
    защиту программ  ОС верхнего уровня от помех при сбоях программ ОС нижнего уровня.
    защита программ от отрицательных последствий при программных сбоях.
    Защита целостности системы.
   Рассмотрим, как обеспечиваются перечисленные требования в МП Intel:
      независимость подготовки пользовательских программ и защита от взаимных помех.
      При разработке  своей программы пользователь  не должен учитывать взаимное расположение своей и других программ в оперативной памяти и могут рассчитывать на любое место в памяти. МП при этом предусматривает возможность локализации негативных последствий программных ошибок в пределах адресных пространств соответствующих программ. Это решается механизмом управления виртуальной памятью. Виртуальная память предусматривает гибкое программное распределение ресурсов в памяти, динамическую переадресацию и разделение адресных пространств совместно выполняемых программ. Виртуальная память допускает многопрограммное выполнение прикладных программ, но при этом программы изолируются друг от друга таким образом, что ошибки в одной из них не влияют на корректное выполнение других программ. Когда программа осуществляет некорректное обращение к памяти, то механизм виртуальной памяти блокирует это обращение и сообщает ОС о попытке нарушения защиты. В МП Intel реализованы два уровня виртуальной памяти: верхний и нижний.
       Верхний уровень реализован механизмом трансляции сегментов, а нижний уровень – механизмом трансляции страниц. На уровне трансляции сегментов разделение адресных пространств пользовательских программ осуществляется при помощи локальных таблиц дескрипторов (ЛДТ). Доступ к сегментам осуществляется только через таблицы дескрипторов, загрузка сегмента в память производится в любую ее свободную область, при этом в дескрипторе сегмента фиксируется базовый (начальный) адрес сегмента. Таким образом, таблица дескрипторов определяет не только общий объем адресного пространства программы, но и конкретное размещение сегментов программы в физической памяти, за счет указания базовых адресов и размеров сегмента. Это является основой разделения адресных пространств программ пользователя, поскольку у каждой пользовательской программы есть своя ЛДТ, недоступная программам других пользователей. Эта таблица определяет доступ к физическим адресам соответствующих сегментов, следовательно, пользователь программы может видеть только свое адресное пространство.
    Формат дескриптора:
                               
       

    Многопользовательские режимы должны не только разделять  программы пользователей. В некоторых случаях  требуется совместная работа нескольких пользовательских программ. Для этого требуется не локальная , а разделяемая память. Разделяемая между несколькими программами память легко организуется при  помещении дескрипторов  соответствующих сегментов в общую глобальную  таблицу дескрипторов  (GDT) или дублированием дескрипторов разделяемых сегментов в локальных таблицах  дескрипторов (LDT).
    На  уровне трансляции страниц разделение адресных пространств  пользователей проводится при разделении таблиц  страниц. Каждая программа использует свою таблицу страниц, которая определяет доступ только к своим страницам.
    Таким образом, используя механизм виртуальной  памяти удается эффективно разделить программы так, что они не влияют друг на друга и взаимно защищены друг от друга. 

      Защита  программ операционной системы от помех  при сбоях в  программах пользователей.
 
    Операционная  система служит не только для организации определенного режима работы ЭВМ и обеспечения «дружелюбного» экранного интерфейса . Одной из важнейших функций ОС является предоставление сервисных процедур  пользовательским программам. Поэтому нельзя полностью изолировать программы пользователей от операционной системы и глобальная таблица дескрипторов (GDT), определяющая сегменты ОС,  должна быть доступна пользовательским программам, естественно не во вред защите программ самой ОС. Для разрешения это проблемы используется механизм зашиты,  по режимам работы или уровням привилегий PL  (PL от английских слов – Privilege Level). Этот механизм  разрешает программам пользователей доступ только  к определенным программам ОС  и обеспечивает достаточно корректное использование этих программ.
    Практически во всех компьютерах для целей защиты предусматривается как минимум два режима работы – системный режим, называемый также режимом супервизор (от англ. Supervisor), и пользовательский режим или user. Основное различие между ними состоит в том, что программам, работающим в режиме супервизора, доступны все ресурсы системы, у программ, работающих в пользовательском режиме, возможности доступа к ресурсам системы ограничены.  

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

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

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

    2. Информационная основа работы механизма защиты 

      Информационной  основой механизма защиты является дескриптор. По области использования  дескрипторы делятся  на системные  и пользовательские. По структуре и типу описываемых объектов различают следующие дескрипторы:
    дескрипторы – описатели сегментов;
    дескрипторы – описатели точек входа в программы, т.е.  дескрипторы шлюзов.
    К описателям сегментов относятся:
1. дескрипторы  сегментов (программных, стековых, данных)
2. системные  дескрипторы: дескрипторы сегментов состояния задач и дескрипторы сегментов различных таблиц.
      Все дескрипторы шлюзов являются системными. К ним относятся:
1. дескрипторы  шлюзов вызовов;
2. дескрипторы  шлюзов прерываний;
3. дескрипторы  шлюзов ловушек;
4. дескрипторы шлюзов задач.
      Дескрипторы сегментов имеют формат 64 разряда (8 байт), из которых механизм защиты использует 20-ти разрядное поле размера сегмента, 8-ми разрядный байт доступа (AR) и бит G – дробности (гранулярности).
Байт  прав доступа содержит следующие поля:

P (Present) - бит присутствия сегмента в оперативной памяти. Используется механизмом виртуальной памяти для организации загрузки (подкачки – свопинга) нужного сегмента с диска в оперативную память. Если сегмент в оперативной памяти отсутствует, то Р=0. Бит Р устанавливается в единицу при загрузке сегмента в ОЗУ. Механизмом защиты бит Р используется в проверках при загрузке стекового сегмента.
DPL (Descriptor Privilege Level) – двухразрядное поле, определяющее уровень привилегий сегмента. Механизмом защиты применяется в проверках корректности использования сегмента.
S – тип дескриптора сегмента. При S=0 дескриптор является сегментным, т.е. определяет сегменты программ, данных и стеков. При S=1 дескриптор используется как системный дескриптор.
TIPE – четырехразрядное поле, интерпретируемое по разному, в зависимости от типа дескрипторов.
      В системных дескрипторах, т.е. при  S=1, разряды поля TIPE кодируют подтипы системных дескрипторов. Коды подтипов системных дескрипторов используются механизмом защиты при проверках корректности обращений к программам.
      В дескрипторах сегментов программ и  данных, т.е. при S=0, поле TIPE содержит следующие признаки:

E – бит исполняемости, который уточняет тип сегмента. При E=0  сегменты определяются как сегменты данных, а при Е=1 – как кодовые сегменты. Механизмом  защиты используются при проверках корректности обращений к программам и данным.
ED/C – для сегментов данных этот бит определяет направление расширения (ED – расширение). Используется механизмом защиты при проверках соответствия адреса обращения границам сегмента. Для программных сегментов этот бит определяет подчиненность сегмента (с – conforming). Механизмом защиты используется при проверках корректности межсегментных передач управления.
W/R – определяет права использования.  Для программных сегментов, т.е. при  E=1, признак W/R определяет доступность сегментов по чтению (R от слова Read). Изменение, т.е. модификация, программных сегментов, запрещена, безусловно. При этом при R=1 разрешается производить чтение содержимого сегментов программ. При R=0 попытка чтения сегмента программ  вызывает прерывание, что делает невозможным копирование программ, т.е. чтение сегмента с целью его копирования. Следует отметить, что при R=0 программа из этого сегмента выполняться будет без всяких  ограничений, т.е.  допускается чтение команд из сегмента только для их исполнения, а не для копирования. Для сегментов данных, т.е. при Е=0, признак W/R  определяет доступность сегментов по записи (W от слова Write). Процедура чтения сегментов данных разрешена, безусловно, а запись может быть либо разрешена при W=1 , либо запрещена при W=0.  Механизмом защиты используется при проверках корректности использования  сегмента.
А – бит обращения (доступа) к сегменту. Бит А устанавливается в единицу при обращении к сегменту, т.е. при загрузке соответствующего селектора в сегментный регистр. Этот бит периодически проверяется ОС, которая выявляет невостребованные сегменты, имеющие А=0. Сегменты с А=0 выводятся из ОЗУ на диск, освобождая место для других сегментов. Этот бит механизмом защиты непосредственно не используется, а используется в механизме виртуальной памяти. 

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

      Концепция уровней привилегий.
 
     Термин  “привилегия” подразумевает права или возможности, которые обычно не разрешаются, а разрешаются только в порядке исключения из общих правил. Введение неравноправия программ в виде уровней привилегий (уровней 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 служит для защиты программ и данных операционной системы от ошибок программ, изменивших уровень привилегий при межуровневых передачах управления. 
 

    Работа  механизма защиты
      Проверка корректности использования отдельных команд.
 
   К привилегированным командам относятся  те, на выполнение которых влияет уровень привилегий программы или привилегии устройств ввода/вывода. Микропроцессор имеет три группы привилегированных команд, степени привилегий которых различны. Это: PLO – команды; IOPL – чувствительные команды; команды,  модифицируемые в соответствии с текущим уровнем привилегий.
   PLO – команды – это команды, выполнение которых разрешено только на уровне привилегий 0. При попытке выполнить их на другом уровне привилегий генерирует сигнал нарушения общей защиты и вызывает прерывание программы, в которой эта команда встретилась (прерывание 13). В эту группу команд входят команды останова процессора и команды загрузки системных объектов, в которых источником или получателем данных выступают системные регистры управления CRn, отладки DRn  и проверки TPn.
     IOPL – чувствительные команды (Input – Output PL команды). Это команды, которые изменяют состояние флажка прерываний IF, выполняют захват шины или операцию ввода/вывода. В микропроцессоре есть специальный регистр флагов EFLAGS, в котором есть двухразрядное поле IOPL , определяющее уровень привилегий операций ввода/вывода. Для выполнения этих команд программа необязательно должна иметь уровень привилегий CPL равный нулю. Достаточно, чтобы уровень привилегий программы CPL был выше уровня, определяемого полем IOPL в регистре EFLAGES, т.е. необходимо выполнение условия CPL< IOPL. При попытке выполнения этих команд при CPL> IOPL  генерируется нарушение общей защиты и происходит прерывание текущей программы  (прерывание 13).
   Команды, модифицируемые в соответствии с  текущим уровнем привилегий. Это всего две команды:
      POPFD – загрузка 4-хбайтного регистра флагов EFLAGS из стека;
      POPF – загрузка 2-х байтного регистра флагов EFLAGS из стека.
   Команды POPFD и POPF сами по себе не являются привилегированными и любая программа их может содержать. Эти команды могут изменять любые биты в регистрах флагов, кроме битов IOPL и флага IF. Двухразрядное поле IOPL в регистрах флагов может быть изменено (модифицировано), если эти команды встретятся в программах ОС нулевого уровня. Флаг IF модифицируется только при выполнении условия CPL< IOPL. При нарушении указанных условий прерывание не производится, т.к. процессор просто не модифицирует биты IOPL и флаг IF, если это не разрешено. 

      Защита  данных
 
     Все прикладные программы в многопрограммном режиме выполняются на одном третьем уровне привилегий. Механизм виртуальной памяти обеспечивает их защиту от взаимных помех. Всем программам разрешено обращаться к любым данным на  своем уровне привилегий. Логика сервисных функций современных ОС предусматривает работу с данными программ менее защищенных режимов. Поэтому программам разрешено обращаться  к данным и на менее привилегированных уровнях. Однако программам не разрешается чтение/запись элементов данных, которые имеют более высокий уровень привилегий, т.е. движение к данным внутрь колец защиты запрещается. Любая такая попытка приводит к фиксации нарушения общей защиты. Это общее правило доступа к данным можно  записать в виде следующего условия: 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. 

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

      Стратегии защиты программ и защиты данных имеют много общего , но имеются и различия. При этом защита, как программ, так и данных на одном уровне привилегий производится на основе разделения адресных пространств  механизмом виртуальной памяти при помощи локальных таблиц дескрипторов, каталогов и страниц. При обращении к программам также производятся проверки на выход за пределы сегмента и таблиц, проверки соответствия типа сегмента и проверки прав использования содержимого сегмента или страницы. Различия в защите программ и данных проявляются при межсегментных передачах управления.
      Рассмотрим  работу механизма защиты программ на примере межсегментных передач управления без изменения уровня привилегий. Существуют две разновидности таких передач управления. Это – переходы на программы сегмента того же уровня привилегий и переходы на программы подчиненных сегментов.
      Среди сервисных программ операционной системы  имеется ряд программ, которые используют другие программы на каждом уровне привилегий. Обычно такие программы просты по конструкции, требуют обращения только к своему параметру и возвращают результат вызывающей программе. Для упрощения обращения к таким программам можно было бы разместить их на уровне пользовательских программ. Но их используют на всех уровнях. Следовательно, такие программы нужны либо дублировать для каждого уровня привилегий, либо использовать более сложные межсегментные переходы с увеличением уровня привилегий. Для таких ситуаций в процессоре 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:
      Выборка команды (ВК). На этом этапе проводится чтение очередной команды программы из памяти и запись ее в регистр команд процессора.
      Декодирование команды (ДК). На втором этапе проводится определение кода операции команды и способы адресации операндов.
      Вычисление адресов операндов (ВА). Вычисляются физические адреса каждого из операндов в соответствии со способом его адресации.
      Выборка операндов (ВО). Чтение операндов из памяти и запись их в регистры процессора (РОНы).
      Исполнение команды (ИК). Выполнение самой команды. Большинство арифметических и логических команд выполняется в АЛУ.
      Запись результата (ЗР). Запись результата выполнения операции в память.
  Некоторые команды могут выполняться за меньшее количество этапов. Например, для команд типа “регистр-регистр” не требуется 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 вместо ее старого значения. Таким образом, возникает конфликт, нарушающий правило “Запись после чтения”.

   Если  команды на конвейере следуют  в порядке, определенном программой, то конфликты такого типа не возможны, поскольку запись результата всегда идет после чтения операнда. Однако конфликты такого типа возникают в случае, если команды на конвейере выполняются не в том порядке, как это определено программой. Например, выполнение команды i приостановлено из-за какого-то конфликта, и в результате команда j будет выполнена раньше, чем команда i. Тогда и возможен конфликт типа ЗПЧ
     с) Запись после записи (ЗПЗ). Конфликт такого типа возникает в том случае, если команда j записывает новое значение переменной x прежде, чем команда i         успела записать свое значение x. Тогда в памяти ЭВМ будет ошибочно содержаться старое значение переменной x вместо нового, поскольку команда i на место нового значения x записало старое значение.

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

Методы  устранения негативных влияний конфликтов
    Для устранения негативных последствий конфликтов применяются как программные, так и аппаратные методы.
    Программные методы нацелены на устранение самой возможности конфликтов еще на стадии компиляции программ. Оптимизирующий компилятор пытается создать такой объектный код, чтобы между конфликтующими командами находилось достаточное количество нейтральных в плане конфликтов команд. Если также не удается, то между конфликтующими командами компилятор вставляет необходимое количество пустых команд типа “Нет операции”, что ведет, естественно, к замедлению работы процессора. Поэтому наряду с программными используют также и аппаратные методы устранения конфликтов. Естественным методом устранения конфликтов является приостановка выполнения команды j на несколько тактов для того, чтобы предшествующая команда i успела миновать этап конвейера, вызвавший конфликт. Очевидно такая приостановка ведет к задержке выполнения команд, следующих в конвейере за j-ой командой. Такую ситуацию называют “пузырьком” в конвейере. За счет усложнения конвейера можно сделать так, чтобы задержать выполнение только j-ой команды, не задерживая остальных, следующих за ней. Это более эффективное решение проблемы устранения конфликтов, которое достигается ценой определенных аппаратных затрат. Например, для борьбы с ЧПЗ наибольшее распространение получил прием ускоренного продвижения информации (forwarding). Обычно между двумя соседними ступенями конвейера располагается буферный регистр, через который предшествующая ступень передает результат своей работы на последующую ступень, то есть передача информации возможна лишь между соседними ступенями конвейера. При ускоренном продвижении, когда для выполнения команды требуется операнд, уже вычисленный предыдущей командой, этот операнд может быть получен непосредственно из соответствующего буферного регистра, минуя все промежуточные ступени конвейера. С данной целью в конвейере предусматриваются дополнительные тракты пересылки информации, такие как тракты опережения, тракты обхода, снабженные средствами мультиплексирования:

 ИК – этап  исполнения команды.
    Таким  образом, при forwarding операнд читается не из ячейки памяти, а выбирается из буферного регистра АЛУ при выполнении команды j 
 

Риск  по управлению
    Простейший конвейер ориентирован на линейные программы. Однако реальные программы практически никогда не бывают линейными, поскольку в них обязательно присутствуют команды перехода, изменяющие естественный порядок вычислений. Это команды условного и безусловного перехода, вызова процедур, возврата из процедур и т.д. доля подобных команд в программе не ниже 10-20%. Выполнение команд перехода может приводить к приостановке конвейера на несколько тактов, из-за чего производительность процессора снижается. Существует два фактора ведущих к приостановке конвейера.
    Первый фактор характерен для любой команды перехода и связан с выборкой команды из точки перехода по адресу, указанному в команде. То, что текущая команда является командой перехода, становится известным лишь на второй ступени, т.е. на стадии декодирования команды DK спустя два такта с момента поступления команды на конвейер. За это время на первые ступени конвейера уже поступят новые команды, извлеченные из памяти в предположении, что естественный порядок вычислений не будет нарушен. В случае перехода эти ступени нужно очистить и загрузить в конвейер команду, расположенную по адресу перехода. Исполнительный адрес перехода вычисляется только на третьем этапе. Таким образом, реализация перехода в конвейере требует определенных затрат времени, что равносильно остановке конвейера на два-три такта.
      Второй фактор нарушения ритмичности работы конвейера имеет отношение только к командам условного перехода. До завершения команды перехода невозможно определить, какая из команд  i-ая или j-ая должна выполняться следующей.   

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

Методы  ускорения выборки  команд при условном переходе
    Для ускорения процесса выборки команд применяются следующие методы:
    вычисление исполнительного адреса перехода на этапе декодирования команды;
    использование буфера адресов перехода;
    использование кэш-памяти для хранения команд, расположенных в точке перехода;
    использование буфера циклов.
  На этапе  декодирования команды выясняются ее принадлежность к команде перехода, а также способ адресации и адресный код точки перехода. Это позволяет сразу на втором этапе приступить к вычислению исполнительного адреса, не дожидаясь передачи команды на третью ступень, где обычно происходит вычисление адресов. Для этого в состав ступени декодирования вводят дополнительные сумматоры, с помощью которых и вычисляется исполнительный адрес точки перехода, т.е. адрес j-ой команды на правой ветке. Этот метод позволяет незначительно сократить потери времени всего на один такт.
   Более  существенно сократить потери времени на вычисление исполнительного адреса команды перехода можно за счет использования буфера адресов перехода ВТВ. ВТВ от слов Branch Target Buffer.
  ВТВ представляет собой кэш-память небольшой емкости, в которой хранятся исполнительные адреса точек перехода нескольких последних команд, для которых переход состоялся. В роли признаков (тегов) выступают адреса соответствующих команд. Перед выборкой очередной команды ее адрес, т.е. содержимое счетчика команд, сравнивается с адресами команд в ВТВ. Для команды, найденной в ВТВ, исполнительный адрес точки перехода не вычисляется, а выбирается из ВТВ (кэш-попадание). Это позволяет начать выборку команды из точки перехода на один такт раньше. В случае кэш-промаха команда обрабатывается стандартным образом. Если кэш-промах произошел для команды перехода, то полученный при ее выполнении исполнительный адрес точки перехода записывается в ВТВ, если переход состоялся. При замещении информации в ВТВ обычно применяется алгоритм LRU. Применение ВТВ дает максимальный эффект в циклических программах, когда отдельные команды перехода выполняются многократно.
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.