Процессор Intel

Автор работы: Пользователь скрыл имя, 23 Октября 2011 в 17:51, лекция

Краткое описание

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

Содержимое работы - 1 файл

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

— 1.20 Мб (Скачать файл)

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

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

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

Информация о работе Процессор Intel