У вас вопросы?
У нас ответы:) SamZan.net

Команды содержащие только регистровые операнды являются наиболее компактными

Работа добавлена на сайт samzan.net: 2015-07-10

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 7.3.2025

13 Способы адресации операндов и команд.

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

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

Собственная адресация при этом отсутствует, т.к. ОП=Aк. Непосредственно адресация удобна при работе с константами. Расширение формата команд за счет указания самого операнда в адресных кодах команд.

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

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

Аи = Ак

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

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

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

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

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

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

Аи = (СК) +disp                                                       (32)

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

- базовую адресацию

- индексную адресацию

Регистры, используемые в команде, которые соответствуют этим способам адресации, называют базовыми и обозначаютВ и индексными I.

Индексная адресация

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

Аи =(I) + disp

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

Базовая адресация

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

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

Аи = (В)+disp

Базово-индексная адресация

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

Способы адресации команд.

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

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

Относительная адресация команд аналогична рассмотренной ранее.

14 Назначение программируемого контроллера прерываний

Системные устройства вычислительной техники.

Программируемый контроллер прерываний.

Задача контроллера – прием запросов прерываний от вычислительных устройств, сравнение из приоритетов и посылки запросов прерывания в ЦП вместе с информацией о местоположении соответствующих подпрограмм. В функции ПКП также входит изменение дисциплины обслуживания вычислительного устройства, т.е. установка различных режимов, присвоение приоритетов исследуемого устройства в соответствии с общими требованиями к системе. Один контроллер позволяет обслуживать 8 вычислительных устройств, число которых может быть увеличено путем каскадирования контроллеров. Если в вычислительной машине используется 2 контроллера прерывания, то соответственно число обслуживаемых аппаратных прерываний будет равно 15.

Регистр Запроса Прерываний – служит для запоминания всех запросов от вычислительного устройства по входам  IR7-IR0.

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

Схема Сравнения Приоритетов – выбирает запрос с наибольшим приоритетом среди вновь поступивших и уже обслуживаемых запросов.

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

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

Блок Каскадирования – осуществляет связь ведущего контроллера с ведомым при использовании нескольких ПКП микропроцессорной системы.

Последовательность действий при обслуживании прерываний:

1)ПКП воспринимает запрос к прерыванию по входам IR от одного или нескольких вычислительных устройств.

Записывает 1 соответственно РЗП.

Проверяет маскирование.

Проверяет запрос с наивысшим приоритетом.

Посылает сигнал прерывания intна соотв. вход ЦП.

2)Если прерывания разрешены, ЦП заканчивает выполнение текущей команды и активизирует сигнал подтверждения прерывания inta.

3) По получении импульса inta, ПКП устанавливает 1 в разряд регистра РОП соответств. запросу, подтверждающему обслуживание. Одноименный разряд регистра РЗП сбрасывается в ноль.

4) ЦП вырабатывает второй импульс inta, с получением которого контроллер посылает по шине данных в ЦП восьмиразрядный указатель (вектор), используемый для определения начального адреса подпрограммы обслуживания прерывания.

5) ЦП переходит на выполнение подпрограммы обслуживания прерывания. В режиме автоматического окончания прерывания, цикл входа в прерывание завершается по окончанию второго импульса Inta, по которому соответствующий разряд РОП сбрасывается в ноль. В режиме обычного окончания разряд регистра РОП соответствующий текущему уровню прерывания остается 1, до появления команды конца прерывания EOI. Контроллер программируется с помощью команд, которые формируются в регистре Aл ЦП и передаются в ПКП по команде Out.

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

Рабочие команды – OCW – для задания маски, задания различных режимов работы и дял обеспечения контрольного считывания содержимого регистров ПКП.

Режимы работы контроллера:

  1.  Полной вложенности
  2.  Циклического приоритета
  3.  Специального маскирования
  4.  Поллинга (последовательного опроса)

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

Режим полной вложенности устанавливается сразу после окончания инициализации. Приоритеты запросов прерываний упоряд-ся в стороны прерывания от 0 до 7.

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

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

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

Режим специального маскирования.

Он применяется для того, чтобы программы обслуживания прерываний могли динамически изменять структуру системы с приоритетом в процессе работы. Например, при выполнении какой-либо части подпрограммы обслуживания, необходимо запретить запросы более низких уровней, а при выполнении другой части – разрешить их. Трудность реализации таких действий состоит в том, что пока выполняется подпрограмма и соответствующий разряд в регистре РОП не сброшен, контроллер не реагирует на запросы с более низким приоритетом. Для разрешения прерываний со всех уровней, в т.ч. и с более низких, устанавливается режим специального маскирования (или затенения), при котором запрещается прерывание только на данном уровне. Он устанавливается командойOCW3.

Режим поллинга(опроса).

Применяется для организации обслуживания запросов прерываний по инициативе программы, выполняемой микропроцессором. При этом прерывания процессора запрещаются путем сброса флага IF и используется команда POLL, которая задается с помощью OCW3. Тогда контроллер воспринимает следующий импульс по входу RD как подтверждение прерывания и выдает на шину данных байт, в котором D7=1, если на вход данного контроллера поступил запрос, соответственно разряды D2- D0 задают двоичный код входа высшего уровня среди тех, по которым поступили запросы. С помощью команды POLL последовательно опрашиваются все контроллеры прерывания в системе, что позволяет легко наращивать число уровней приоритетов. В этом режиме таблица адресов подпрограмм обслуживания не используется и он полезен в тех случаях, когда одна подпрограмма применяется для обслуживания нескольких уровней прерывания.

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

15 Назначение контроллера прямого доступа к памяти

Программируемый контроллер прямого доступа к памяти (ПДП).

Контроллер ПДП предназначен для обмена данными между устройствами ввода-вывода и ОЗУ без использования ЦП. Это позволяет освободить процессор для выполнения вычислений параллельно с обменом и независимо от него. Наиболее часто возможности ПДП используются при работе с дисковыми накопителями. Ощутимые преимущества дает использование ПДП в процессе обмена с устройствами, принимающими или передающими данные достаточно большими порциями с высокой скоростью. Функции контроллера ПДП выполняет микросхема Intel8537А. Контроллер имеет 4 независимых канала, каждый из которых может обслуживать одно устройство ввода-вывода.

В работе ПДП различают 2 основных цикла:1) Цикл ожидания IDLECycle 2) Активный цикл ActiveCycle

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

В процессе программирования контроллеры задаются 3 параметра:

1)Начальный адрес памяти для обмена

2)Уменьшенное на 1 число передаваемых байт

3)Направление обмена

Передача данных может осуществляться в одном из 4 режимов:

1)Режим одиночной передачи SingleTransferMode

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

2)Режим блочной передачи BlockTransferMode

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

3)Режим передачи по требованию DemandTransferMode

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

4)Каскадный режим CascadeMode

Позволяет включить в подсистему ПДП более одного контроллера. В этом режиме один из каналов ведущего контроллера используется для каскадирования с контроллером второго уровня.

Типы передач контроллера ПДП

1.Передача Память-Память.

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

2.Автоинициализация

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

3.Режим с фиксированным приоритетом

В этом режиме канал 0 имеет максимальный приоритет, а канал 3 – минимальный. Это означает, что любая передача по каналу с более высоким приоритетом будет выполняться раньше, чем по каналу с более низким.

4.Циклический сдвиг приоритетов

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

5.Сжатие времени передачи

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

Внутренние регистры программируемого контроллера ПДП

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

Регистр начального адреса.

В этом регистре задается стартовый адрес ОЗУ, с которого начинается передача. Регистр содержит 16 разрядов и определяет адрес внутри заданной страницы памяти размером 64Кб.

Регистр начального счетчика циклов.

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

Регистр текущего адреса.

Начальное значение заносится в этот регистр одновременно с регистром начального адреса, в дальнейшем, в ходе передачи, значение текущего адреса автоматически увеличивается или уменьшается. Если разрешенаавтоинициализация, то после окончания передачи в регистр автоматически устанавливается  значение из регистра начального адреса.

Регистр текущего счетчика циклов.

Регистр содержит число оставшихся циклов передач, отображаемое в нем число циклов всегда на 1 меньше числа еще не переданных элементов данных, так изменение значений регистра происходит после фактической передачи элемента данных. Конец передачи фиксируется  в момент переполнения счетчика, то есть смены состояния с 0h на FFFFh.

Регистр режима.

Данный регистр задает режимы работы своего канала контроллера.

Следующий набор регистров является общим для всех каналов:

Регистр команд.

8-битный регистр, управляющий работой контроллера.

Регистр состояния.

Отражает текущее состояние запросов и передач по всем четырем каналам. Биты с 0 по 3 устанавливаются в единицу, после завершения передачи по соответствующим каналам. Эти биты очищаются после команды сброса контроллера и после каждой операции считывания состояния из регистра состояния. Биты с 4 по 7 указывают по какому из каналов активен в текущий момент сигнал запроса на ПДП.

Регистр масок.

Каждый бит этого 4-битного регистра маскирует и демаскирует свой канал ПДП, при этом значение 1 маскирует канал, значение 0 – демаскирует и соответственно разрешает прием сигнала запроса по данному каналу.

Регистр запросов.

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

Рабочий регистр.

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

16 Назначение системного таймера

Системный таймер

В вычислительных машинах используют программируемый системный таймер (ПСТ).

Его функции:

- Генерация прерываний от системных часов, вызывающая инкремент счетчика системного времени в ячейку с адресом 0000:046Ch (счетчик тиков таймера).

- Генерация запросов на генерацию памяти

- Генерация звуковых сигналов

При инициализации BIOS устанавливает свой обработчик для прерывания таймера. Этот обработчик каждый раз увеличивает на единицу текущее значение 4-байтовой переменной – счетчика тиков таймера. Если этот счетчик переполняется, то есть прошло более 24 часов с момента запуска таймера, то в ячейку с адресом 0000:0470h заносится единица. Другое действие, выполняемое  стандартным обработчиком прерываний таймера – это контроль за работой двигателей НГМД (аналог флопа). Если после последнего обращения к НГМД прошло более 2 секунд, обработчик прерывания выключает двигатель, ячейка с адресом 0000:0440h содержит время, оставшееся до выключения двигателя. Еще одно действие, которое выполняет обработчик прерывания таймера – это вызов прерывания INT1Ch. По умолчанию по этому  прерыванию ничего не выполняется, однако программа может установить собственный обработчик этого прерывания для выполнения каких-либо периодических действий. В качестве ПСТ ранее применялась микросхема Intel8254 роль которой на современных системных платах выполняет чипсет, сохраняя полную программную совместимость. ПСТ представляет собой 3-канальные программируемые счетчики таймера с независимыми входами: CLK – вход счетных импульсов, GATE – вход разрешения счета и выхода OUT, изменяющего состояние по окончанию счета.

Каждый канал (0,1,2) содержит регистры:

-состояния канала (8 разрядов)

- управляющего слова RSW (8 разрядов)

- буферный регистр OL(16 разрядов)

- регистр счетчика CE (16 разрядов)

- регистр констант пересчета CR (16 разрядов)

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

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

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

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

Возможны шесть режимов работы таймера:

- Режимы 0,4 однократное выполнение функций

- Режимы 1,5 работа с перезапуском

- Режимы 2,3 работа с автозагрузкой

В режиме однократного выполнения функций перед началом счета содержимое регистра констант пересчета CR переписывается в регистр счетчика CE по сигналу CLK если GATE=1. В дальнейшем содержимое регистра CE уменьшается по мере прихода импульса CLK. Процесс счета можно приостановить, если  подать на вход GATE уровень логического нуля. Если затем на вход GATE подать единицу, то счет будет продолжен дальше. Для повторения выполнения функции необходима новая загрузка в регистр CR, то есть – повторное программирование таймера.

При работе с перезапуском не требуется повторного программирования таймера для выполнения той же функции, по фронту сигнала GATE значение константы из регистра CL вновь переписывается в регистр СЕ даже если текущая операция не была завершена.

В режиме автозагрузки регистр CL автоматически переписывается в регистр СЕ после завершения счета. Сигнал на выходе OUT появляется только при наличии на входе GATE уровня логической единицы. Этот режим используется для создания программируемых импульсных генераторов.

17 Назначение системных регистров и глобальной дескрипторной таблицы.

Системные регистры.

Системные регистры предназначены для обслуживания ЦП при многозадачной обработке. Для этого ЦП переводится в защищенный режим, однако, прежде чем процессор перейдет в защищенный режим, должна быть определена глобальная дескрипторная таблица GDT (GlobalDescriptorTable), так как все сегменты и прочие системные объекты должны быть описаны в дескрипторной таблице. GDT - это область памяти, в которой находятся дескрипторы.GDT должна располагаться в пределах первого мегабайта адресного пространства, так как перевести процессор в защищенный режим можно только из режима реальных адресов. Подразумевается , что GDT будет выровнена на границу 8 байт, т.к. дескрипторы, из которых она состоит, имеют восьмибайтный размер. Такое выравнивание позволит процессору максимально быстро обращаться к дескрипторам, а следовательно – увеличивает производительность. Число дескрипторов, определенных в GDT может быть любым в пределах от 0 до 8192. Нулевой дескриптор, то есть, определенный в самом начале  GDT, процессор не использует. Если все же в программе встречается обращение к нулевому дескриптору, то процессор генерирует исключение и не позволяет доступ к этому дескриптору. В связи с этим, рекомендуется использовать нулевой дескриптор как шаблон, на основе которого программа может создавать новые дескрипторы. GDT используется процессором все время пока он находится в защищенном режиме. Параметры GDT хранятся в специальном 48 разрядном регистре GDTR.

Адреса GDT – адрес по которому размещена таблица.

Предел GDT – максимальное смещение относительно ее начала.

Для загрузки значений в регистр GDTR используется команда LGDT , операндом этой команды является 48-разрядное значение адреса памяти, где размещается адрес и предел GDT. Следует отметить, что размер GDT желательно не менять в процессе выполнения программы в защищенном режиме. Если программа будет динамически создавать новые дескрипторы, то размер GDT лучше всего заранее задать достаточно большим, например – 64 Кб (это максимальный размер). При этом следует учитывать, что при обращении процессора к несуществующим дескрипторам его поведение непредсказуемо, скорее всего, он зависнет.

Все 32-разрядные процессоры, начиная с Intel80386, имеют набор системных регистров, предназначенных для использования в защищенном режиме, среди них есть регистр управления CR0-CR4 (ControlRegister). Регистры управления состоят, в основном, из вкладок. Рассмотрим, например, бит PE (ProtectionEnable) регистра CR0, отвечающий за переход процессора в защищенный режим и обратно. Регистры управления предназначены для записи и считывания информации. Они имеют размер 32 бита и оперировать ими можно только целиком, то есть считывается значение целого регистра, изменяются нужные биты и записываются обратно. Единственная команда, которая позволяет доступ к этим регистрам – MOV, в качестве операнда которой, используется 32-разрядный регистр общего назначения. Если установить бит PE=1, то процессор перейдет в защищенный режим, если PE=0 – то в режим реальных адресов.

Пример:

1.Перевод процессоров в защищенный режим.

moveax, cr0   ;Копируем в eax содержимое cr0

oral, 1            ;Устанавливаем в копии 0 бит, которые соотв. 0 биту в CR0, то есть PE

movcr0, eax  ; Записываем в cr0 обновленное значение, проц. Перешел в защищенный   

                        режим.

                      ; 1 команда программы, которая выполнится в защищенном режиме

2.Перевод процессора в режим реальных адресов.

move ax, cr0

and al, 0feh    ; Сбрасываембит PE.

movcr0, eax  ; Процессор перешел в режим реальных адресов.

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

18 Защищенный режим работы ЦП.

Защищенный режим работы вычислительных машин.

Максимальный режим работы ЦП.

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

- уровень 0 ядро ОС

- уровень 1 драйверы ОС

- уровень 2 интерфейс ОС

- уровень 3прикладные программы

Сам по себе уровень привилегий еще ничего не значит, его нельзя установить в процессоре. Уровень привилегий применяется как одно из свойств, при описании различных объектов, например, программного сегмента, и действует только при работе с этим объектом. Первое, с чем сталкивается программа при переходе в защищенный режим – это другая система адресации памяти. Если в режиме реальных адресов для обращения к памяти используется пара 16-разрядных объектов, то есть сегментный регистр при смещении, то адресация памяти в запрещенном режиме также производится через сегмент и смещение в сегменте для чего используется пара регистров, но для описания сегмента используется больше информации, а именно:

- 32-разрядный адрес

- 20-разрядный предел сегмента(предел на единицу ниже разряда)

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

- тип сегмента (программный, стек, данные и т.п.)

- системный объект

Кроме того могут присутствовать дополнительные свойства.

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

В качестве смещения используется 16 или 32-разрядный регистр. При обращении к памяти процессор проверяет возможность доступа к сегменту по уровню привилегий. Проверяет не превысил ли адрес предел сегмента и можно ли обращаться к этому сегменту в данном случае. Например, может быть запрещена передача управления в сегмент, описывающий данные или стек. Если в результате проверки будет обнаружено нарушение какого-либо условия, то процессор сгенерирует исключение и тем самым обеспечит защиту. Предел сегмента – это максимально допустимое смещение внутри него. Предел сегмента определяет его размеры. Поскольку значение предела – 20-разрядная величина, то это означает, что максимальное значение предела равно 2^20-1. Процессор измеряет размер сегмента либо байтами либо страницами. Страница – это блок памяти размером 4Кб. В описании сегмента можно показать в каких единицах измеряется сегмент и соответственно можно получить два типа сегментов с максимальными размерами – 1Мб (2^20 байт) или 4Гб (2^20 страниц). Эта способность измерять сегмент либо байтами либо страницами называется гранулярность . Значение предела сегмента может быть любым от нуля до 2^20-1. Гранулярность устанавливается по усмотрению программиста и может быть либо байтная либо страничная. Все это позволяет определять сегменты любого размера от 0 байт до 4 гигабайт.

Сегмент определяется в виде структуры данных, которая называется дескриптор. Размер дескриптора 8 байт. Все дескрипторы хранятся последовательно в специально отведенной области памяти в Глобальной Дескрипторной Таблице.

Значения предела и адреса сегмента разбросаны по все структуре дескриптора по причине того, что впервые защищенный режим появился в 16-разрядном процессоре Intel80286. Для совместимости с ним дескрипторы не переделали, а расширили дополнительными полями, то есть биты 68-43. В программах дескриптор удобнее использовать в следующем виде:

Descriotor:

dwlimit_lowмладшеесловопредела

dwaddress_lowмладшеесловоадреса

dbaddressht                           3-йбитадреса

dbaddressrightsправодоступа

dblimit_hi_and_flags             старшая часть предела

dbaddress_hi                          4-йбитадреса

Байт прав доступа 40-47 имеет следующий формат:

40:А – бит доступа Accesseed

41-43 тип сегмента

44:S бит системного сегмента

45-46: DPL –уровень привилегий

47:P бит присутствия смещения

Тетрада флагов (52-55 G, D, X, C) имеет формат:

52 бит U - пользователь User

53 бит X - зарегистрирован

54 бит D – размерность операндов (DefaultSize)

55 бит G – бит гранулярности (Granularity)

При адресации памяти в защищенном режиме команды ссылаются на сегменты, указывая не их адреса, а описания сегментов, то есть дескрипторы.  Адресация производится через пару регистров – сегментов смещения. В качестве системных регистров используются: CS, DS, ES, SS но у них указывается не адрес сегмента, а селектор дескриптора. Селекторы нужны по крайней мере по 3 причинам:

- описание сегмента занимает 8 байт, а использовать 8-байтные сегментные регистры не эффективно.

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

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

Адрес можно указывать не только через пару регистров, но и в переменную через пару значений селектор-смещение.

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

TI (TableIndicator) – определяет таблицу, из которой выбирается нужный дескриптор, если TI=0 то обращение производится к GDT. Если TI=1 – то к текущей локальной дескрипторной таблице LDT.

Index – номер дескриптора. Соответственно от 0 до 8191.

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

При загрузке недопустимого значения в селектор, процессор будет генерировать исключения, даже если нет обращения через него к памяти. В защищенном режиме работа прерываний происходит следующим образом. Во-первых, вводится новый класс прерываний генерируемых самим процессором при нарушениях условий защиты, так называемые исключения. Число возможных векторов прерываний по-прежнему равно 256, 32 из них от 00h до 1Fh используются исключениями. Во-вторых, вместо дальних адресов в таблице прерываний используются дескрипторы специальных системных объектов, так называемых шлюзов. В-третьих, сама таблица прерываний, которая называется IDT (InterruptDescriptorsTable), может находиться по любому адресу памяти. Все эти особенности появились в процессоре Intel80386 и с небольшими дополнениями используются во всех 32-разрядных процессорах. Исключения – основа защищенного режима. Благодаря исключениям процессор автоматически реагирует на любые попытки нарушить защиту системы и позволяет их корректно обработать. Благодаря разделению кода и данных по уровням привилегий, обработчики прерываний можно надежно изолировать от других программ.

19 Назначение дескрипторов и шлюзов

Дескрипторы и шлюзы.

Таблица дескрипторов прерываний в любой системе одна. IDT на нулевом уровне привилегий , следовательно непосредственно к ней обращаться могут только программы работающие на том  же уровне. Для того, чтобы в программы других уровней могли пользоваться прерываниями, предусмотрены специальные системные объекты, так называемые шлюзы (gates). При вызове прерывания процессор прежде чем передать управление обработчику опускается через шлюз на его уровень привилегий, а после завершения обработки, поднимается обратно. IDT может содержать 3 типа дескрипторов шлюза: шлюз задачи, шлюз прерывания и шлюз ловушки. Шлюзы содержат указатели на обработчики прерываний и права доступа к ним. При переходе через шлюз задач, процессор производит автоматическое переключение задач. А при переходе через шлюз прерывания или ловушки, передает управление процедуре в контексте текущей программы. Единственное отличие прерывания от ловушки в том, что при переходе через шлюз прерывания, процессор автоматически сбрасывает флаг IF в EFLAGS и не допускает генерации других прерываний и исключений на время работы обработчика. Для шлюза ловушки состояние флага не меняется. Ловушки используются для отладки программ, поэтому обработка ловушки должна быть прозрачна для внешних прерываний. Исключения и прерывания работают в основном через 2 типа шлюзов: задач и прерываний. Шлюз прерываний запускает обработчик в контексте текущей программы, то есть просто передает управление по адрес, указанному в дескрипторе, такой подход хорош в простых операционных системах, когда работают заранее определенные программы, от которых не нужно защищать ядро ОС. Шлюз задачи является более удобным и универсальным, так как позволяет изолировать обработчик от других программ и его рекомендуется применять в системах, где программы потенциально могут нарушать целостность ОС. Шлюз задачи заставляет процессор автоматически переключаться на новую задачу при генерации исключения.

Исключения делятся на 3 типа в зависимости от условий их возникновения:

- ошибка

- ловушка

- авария

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

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

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

Все дескрипторы прерываний исключений объединяются в одну таблицу IDT. Сама IDT может располагаться в памяти по любому адресу и состоять из любого числа дескрипторов в пределах от 0 до 256. В отличие от GDT,  IDT пользуется нулевым вектором. Для неиспользуемых векторов бит P дескриптора должен быть равен нулю. Тогда при попытке обращения к нему, процессор будет генерировать исключение неприсутствующего сегмента и ОС сможет корректно обработать неиспользуемое прерывание, в противном случае, скорее всего, возникнет другое исключение, тип которого заранее предусмотреть невозможно. Если произойдет обращение к вектору прерывания дескриптор которого должен находиться за пределами IDT, то процессор сгенерирует исключение общей защиты. Параметры IDT, то есть адрес и предел процессор хранит в специальном 48-разрядном регистре IDTR.

Адрес – это тот адрес, по которому размещенаIDT.

Предел – максимальное смещение относительно начала IDT.

Подготовка и запись значения IDTR аналогична действиям для GDTR.

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

20 Организация памяти вычислительных машин. Кэш-память

Организация памяти вычислительных машин.

Кэш-память.

Основным архитектурным способом согласования скоростных характеристик процессора и оперативной памяти является кэширование оперативной памяти. Под кэшированием понимается использование быстродействующей буферной памяти относительно малого размера, выполненного на элементах памяти статического типа, которые имеют более высокое быстродействие по сравнению с динамическими элементами оперативной памяти. В эту буферную память из оперативной памяти помещаются копии команд и данных относящихся  к обрабатываемому в данный момент фрагменту программы. Работа буферной памяти прозрачна для программ и скрыта для пользователей, поэтому ее называют кэш-памятью (англ. cache - тайник). Кэш-память размещается в непосредственной близости от процессорного ядра, при этом ее работа наиболее эффективна, если она встроена в кристалл процессора. Это кэш первого уровня L1. В большинстве современных компьютеров 2-3 уровня кэш памяти. Раздельно кэш команд и кэш данных 1 уровня размещаются внутри кристалла процессора. Кэш-память 2 уровня L2 чаще всего располагается в одном корпуса с процессором и соединяется с ним с помощью специальной локальной шины, работающей на основной или половинной частоте процессора. Кэш-память 3 уровня L3 размещается на системной плате. Обычно все содержимое L1 находится в L2, а все содержимое L2 является частью L3. Принципы построения кэш-памяти всех уровней одинаковые. В целом, оперативная память вместе с кэш всех уровней представляет собой единую систему памяти, непосредственно доступную процессору для чтения и записи данных, а также считывания команд программ.

Виды кэш памяти.

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

Полностью ассоциативная кэш память

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

Кэш память с прямым отображением.

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

Частично ассоциативная кэш память.

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

Целостность данных в системах кэш памяти.

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

1)Сквозная запись

2)Буферированная сквозная запись

3)Обратная запись

При сквозной записи при любой операции записи всегда обновляются и ОП и кэш память.

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

M (Modified)

E (Exclusive)

S (Shared)

I (Invalid)

При изменении данных в памяти действия кэш контроллера зависят от состояния строки кэш памяти.

21 Понятие CISCи RISCархитектур процессоров

Понятие CISCи RISCархитектур

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

Микропроцессоры с расширенным списком команд относят к CISC архитектуре. Важным достоинством CISC архитектуры является меньшая длина программ.

Основные принципы RISC архитектуры:

1. Одинаковая длина команд – это облегчает их выборку из памяти. В отличии от CISC процессоров RISC процессоры не требуют выборки дополнительных слов команды. Все команды считываются за 1 такт. В современных RISC процессорах длина команды равна 32 бита.

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

3. Все вычислительные операции выполняются над данными, находящимися только в РОН. Т.к. регистров много, то все скалярные переменные и даже небольшие массивы чаще всего размещаются в регистрах. Арифметические и логические команды являются трехадресными. Формат этих команд включает подоперации и адреса регистров, источников и приемников. Использование простых команд упрощает реализацию их конвейерной обработки. В среднем, команда RISC выполняется за 1 такт.

4. Относительно простые схемы управления. Уменьшение списка команд. Использование команд, реализующих только простые операции. Исключение в командах обработки данных обращений к памяти позволили уменьшить расход ресурсов кристалла на управление. Благодаря этому, большая площадь кристалла выделяется для размещения устройств, обеспечивающих повышение общей производительности процессора, то есть дополнительных конвейеров выполнения команд, большего числа РОН и увеличенный кэш-памяти 1 уровня. Важным достоинством RISC процессора является то, что при одинаковой технологии производства они имеют более высокие частоты работы, чем CISC.  Это объясняется тем, что RISC процессоры для реализации своих простых команд требуют меньше аппаратной логики, что, в свою очередь, уменьшает задержки распространения сигналов внутри схем, и, благодаря этому, становится возможным повышение частоты работы.

22 Конвейеризация

Конвейеризация.

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

Конвейерная обработка: а) – структурная схема пятиступенчатого конвейера; б) – конвейерная обработка команд.

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

  •  IF (Instruction Fetch) – выборкакоманды;
  •  ID (Instruction Decode) – дешифрирование команды;
  •  RD (Read Data(Memory)) – чтениеоперандов;
  •  EX (Execute) – исполнение заданной в команде операции;
  •  WB (WriteBack) – запись результата.

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

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

Асинхронный конвейер  реализован в старших моделях Pentium.




1. 85 всего чугунаЖелезные руды ~ основной исходный материал для выплавки чугуна
2. Лошадки хлопок 100 КПБ в детскую кроватку пл
3. Отчет по лабораторной работе ’ 3 Исследование источника тока Работу.html
4. Электродинамика содержащий информацию об использовании различных электрических устройств
5. Физической основой восприятия цвета является длина волны светового излучения
6. Философические произведения и обладавший поистине энциклопедическими познаниями
7. 711 ВОЛОЩУК АНАТОЛІЙ МИКОЛАЙОВИЧ ТЕОРЕТИКОПРАВОВІ АСПЕКТИ РЕАЛІЗАЦІЇ ДЕРЖАВНОГ
8. РЕФЕРАТ диссертации на соискание ученой степени доктора экономических наук Санк
9. Чемашинская средняя общеобразовательная школа Программа кружка дополнительного о
10. а клиентцентрированная терапия б гештальттерапия в экзистенциальная психотерапия Психологическое