Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основной текст лекций.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆
      1. Регистры процессора

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

Регистры уровня команд можно разделить на две категории: специальные регистры и регистры общего назначения. Специальные регистры включают счётчик команд и указатель стека, а также другие регистры с особой функцией. Регистры общего назначения содержат ключевые локальные переменные и промежуточные результаты вычислений. Их основной функцией является обеспечение быстрого доступа к часто используемым данным (обычно избегая обращений к памяти). Машины RISC с высокоскоростными процессорами и относительно медленной памятью обычно содержат как минимум 32 регистра общего назначения, а в новых процессорах их количество постоянно растёт. Регистры общего назначения могут быть симметричны и взаимозаменяемы, либо специализированы.

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

Есть один регистр управления, который представляет собой привилегированно – пользовательский гибрид. Это флаговый регистр, или PSW (Program State Word) – слово состояния программы. Этот регистр содержит различные биты, которые нужны ЦП. Самые важные биты – это коды условия. Они устанавливаются в каждом цикле АЛУ и отражают состояние результата предыдущей операции. Биты кода условия включают:

  • N – устанавливается, если результат был отрицательным ( Negative);

  • Z – устанавливается, если результат был равен 0 (Zero);

  • V – устанавливается, если результат вызвал переполнение (oVerflow);

  • C – устанавливается, если результат вызвал выход переноса самого левого бита (Carry out);

  • A – устанавливается, если произошёл выход переноса бита 3 (Auxiliary carry – служебный перенос);

  • P – устанавливается, если результат чётный (Parity).

Коды условия используются при сравнении и в условных переходах.

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

      1. Регистры процессора семейства 80х86.

Условно микропроцессор можно разделить на две части: исполнительный блок (Execution Unit - EU) и устройство сопряжения с системной магистралью (Bus Interface Unit - ВIU).

В исполнительном блоке находятся: арифметический блок и регистры общего назначения (РОН). Арифметический блок включает арифметико-логическое устройство, вспомогательные регистры для хранения операндов и регистр флагов.

Восемь регистров исполнительного блока МП (EАХ, EВХ, EСХ, EDX, ESP, EВР, ESI, EDI), имеющих длину, равную машинному слову (32 разряда), делятся на две группы. Первую группу составляют регистры общего назначения: EАХ, EВХ, EСХ и EDX (формат регистров представлен на рис. 2.26)12. Каждый из регистров данной группы можно рассматривать как 32-х битный регистр с приставкой E (Extended – расширенный) или 16–ти битный регистр, представляющий собой регистровую пару, составленную из двух регистров длиной в 0,25 машинного слова (8 битов). Аккумулятор, основной арифметический регистр или регистр EАХ состоит из регистров AX, АН и AL. Регистр базы (Base Register) EBX предназначен для хранения указателей (адресов памяти) состоит из регистров ВХ, ВН и BL. Счетчик (Count Register) связан с организацией циклов ECX включает регистры СХ, СН и CL. Регистр данных (Data Register) EDX используется для умножения и деления, вместе с EAX содержит 64 – битные произведения и делимые, содержит регистры DX, DH и DL. Каждый из коротких регистров может использоваться самостоятельно или в составе регистровой пары. Условные названия (аккумулятор, регистр базы, счетчик, регистр данных) не ограничивают применения этих регистров - эти названия говорят о наиболее частом использовании их или об особенности использования того или иного регистра в той иди иной команде.

Вторую группу составляют адресные регистры ESP, EBP, ESI и EDI. Эти регистры активно используются по функциональному назначению и в других целях их применятъ не рекомендуется. В качестве адресного регистра часто используется РОН EВХ. Программно допускается использование регистров EBP, EDI и ESI в качестве регистров для хранения операндов, но отдельные байты в этих регистрах недоступны. Основное их назначение - хранить числовые значения, реализуемые при формировании адресов операндов.

Устройство сопряжения с системной магистралью содержит управляющие регистры, конвейер команд, АЛУ команд, устройство управления исполнительным блоком МП и интерфейс памяти (соединяющий внутреннюю магистраль МП с системной магистралью ВМ).

Управляющие регистры BIU (рис.2.27): CS (указатель командного сегмента), DS (указатель сегмента данных), SS (указатель сегмента стека), ES (указатель дополнительного сегмента) и др. служат для определения физических адресов ОП - операндов и команд. Регистры от CS до GS – сегментные регистры, оставшиеся от процессора 8088, который обращался к 220 байтам памяти, используя 16 – битные адреса, используются в реальном режиме.

Регистр EIP (Instruction Pointer) является указателем адреса команды, которая будет выбираться в конвейер команд в качестве очередной команды (в отечественной литературе такое устройство называется счетчик команд). Конвейер команд МП хранит несколько команд, что позволяет при выполнении линейных программ совместить подготовку очередной команды с выполнением текущей.

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

Все флаги младшего байта регистра устанавливаются арифметическими или логическими операциями МП. Все флаги старших байтов, за исключением флага переполнения, устанавливаются программным путем, для этого в МП имеются команды установки флагов (STC, STD, STI), сброса (CLC CLD, CLI), инвертирования (CMC).

      1. Режимы процессора.

Расширение системы команд продолжается во всех новых моделях, в каждой новой модели вводятся дополнительные архитектурные решения такие как:

  • встроенный блок управления ОП, работающий в виртуальном режиме (что позволило увеличить предельно допустимый объем виртуальной памяти до 4 Гбайт при 16 Мбайт физической);

  • блоки, позволяющие реализовать мультизадачность;

  • блок защиты ОП;

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

  • конвейер команд;

  • встроенный блок управления ОП;

  • микропрограммное управление операциями;

  • прогнозирование переходов по командам условной передачи управления;

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

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

Все 32-разрядные процессоры Intel (и совместимые с ними), начиная с 80386-го, могут выполнять программы в нескольких режимах. В зависимости от режима процессора изменяется схема управления памятью системы и задачами. Процессоры могут работать в трёх режимах:

  • реальном;

  • виртуальном;

  • защищённом.

Реальный режим. В первых IBM PC использовался процессор i8086, который мог использовать 16-разрядные внутренние регистры, выполнять 16-разрядные команды и адресовать 1 Мбайт (220 байт) памяти, используя 20 разрядов для адреса. Всё программное обеспечение разрабатывалось с учётом этих аппаратных особенностей. Последующие процессоры, начиная с i80286, имеют увеличенную ширину адресной шины (24, 32 и 64 разряда) и 32-х (64) - разрядные внутренние регистры, но все они обязаны поддерживать данный режим, т.е. использовать только 16-разрядные команды и 20 разрядные адреса.

В реальном режиме все особенности, которые были добавлены к процессорам со времён системы 8088, отключаются и PentiumII работает как простой компьютер 8088. Для программного обеспечения этого типа обычно используется однозадачный режим (одновременно может выполняться только одна задача), нет встроенной защиты памяти (при выполнении нескольких задач одна программа может испортить код или данные другой программы). Если программа совершает ошибку, то происходит полный отказ системы. В реальном режиме вся основная память (ОП) делится на сегменты (длина сегмента - 64 Кбайта). Адрес ОП разделяется на две части: номер сегмента в ОП (база сегмента) и номер ячейки внутри данного сегмента (смещение относительно начала сегмента). Базовый адрес сегмента образуется добавлением к номеру сегмента справа четырех нулей. Поскольку последние четыре разряда абсолютного (физического) адреса сегмента всегда нулевые, то они отбрасываются, при этом сегмент может начинаться не с любой ячейки ОП, а только с «параграфа» - начала 16-байтного блока ОП.

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

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

Виртуальный режим. На следующей ступени находится виртуальный режим 8086, который делает возможным выполнение старых программ, написанных для 8088, с защитой. Чтобы запустить старую программу 8088, операционная система создаёт специальную изолированную среду, которая работает как процессор 8088, за исключением того, что если программа даёт сбой, операционной системе передается соответствующая информация и полного отказа системы не происходит. Когда пользователь WINDOWS начинает работу с MS-DOS, то программа, которая действует там, запускает в виртуальном режиме 8086, чтобы программа WINDOWS не могла вмешаться в программы MS-DOS.

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

Защищённый режим. Начиная с процессора 80286, появляется возможность работать в защищённом режиме, имеется аппаратная поддержка многозадачных операционных систем, значительно ускоряющая и упрощающая процесс переключения задач. Это поддержка активно используется всеми мультизадачными операционными системами и оболочками, разработанными для компьютера IBM PC.

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

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

Процессоры 80386 и выше имеют 32- разрядные регистры, число адресных линий увеличено до 32(4 Гбайт), в них реализована концепция страничной виртуальной памяти, возможной только в защищённом режиме.

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

Pentium II имеет огромное адресное пространство. Память разделена на 16384 сегмента, каждый из которых идёт от адреса 0 до адреса 232-1. Однако большинство операционных систем (включая UNIX и все версии WINDOWS) поддерживают только один сегмент, поэтому большинство прикладных программ видят линейное адресное пространство в 232 байтов, а иногда часть этого пространства занимает сама операционная система. Каждый байт в адресном пространстве имеет свой адрес. Слова состоят из 32 битов. Байты нумеруются справа налево, то есть самый первый адрес соответствует младшему байту. В защищенном режиме базовые адреса сегментов хранятся в дескрипторных таблицах и имеют длину 24 или 32 бита (в зависимости от типа МП). В сегментных же регистрах хранится селектор, содержащий номер дескрипторной таблицы и дескрипторное смещение, т.е. порядковый номер дескриптора (в котором и хранится базовый адрес сегмента) в данной дескрипторной таблице.

      1. Компьютерные шины. Характеристики шин.

  • Шина – набор параллельно соединенных проводов для связи компонентов компьютера, по которым передаются адреса, данные и сигналы.

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

  • внутренние - используются для передачи данных в АЛУ и из АЛУ;

  • внешние - связывают процессор с памятью и УВВы.

Первые ПК имели одну внешнюю шину, которая называлась системной шиной. Она состояла из нескольких медных проводов (от 50 до 100), которые встраивались в материнскую плату. На материнской плате находились разъемы на одинаковом расстоянии друг от друга для микросхем памяти и УВВы. Современные ПК обычно содержат специальную шину между центральным процессором и памятью и, по крайней мере, ещё одну шину для УВВы (рис. 2.28). Часть шин скрыта внутри интегральной схемы или доступна только в пределах печатной платы. Некоторые шины имеют выходы, доступные для подключения дополнительных устройств (гнезда подключения соответствуют определенным стандартам для возможности подсоединения к шине устройств различных производителей). На схемах шины изображают в виде широких стрелок, указывая тем самым, что информация передается одновременно по параллельным проводам.

Английский эквивалент термина «шина» - «bus» восходит к латинскому слову omnibus, означающему «для всего»13. Этим стремятся подчеркнуть, что шина является магистралью, способной обеспечить всевозможные виды трафика.

Упрощенно шину можно представить как совокупность сигнальных линий, объединенных по их назначению (данные, адреса, управление). Каждая линия способна передавать сигналы, представляющие двоичные цифры 1 и 0. При совместном использовании несколько линий могут обеспечить одновременную (параллельную) передачу двоичных чисел. Физически линии шины реализуются в виде отдельных проводников, как полоски проводящего материала на монтажной плате либо как алюминиевые или медные проводящие дорожки на кристалле микросхемы.

Операции на шине называются транзакциями. Шинная транзакция состоит из двух частей: посылку адреса и прием (или посылку) данных. Устройство, инициировавшее обмен и управляющее им, называют ведущим (bus master). Устройство, необладающее свойством инициирования транзакции, называется ведомым.

Шины характеризуются следующими основными параметрами:

  1. Ширина шины - количество адресных и управляющих линий в шине. Ширина шины адреса определяет максимально возможный размер адресного пространства. Чем больше адресных линий, тем к большему объёму памяти может обращаться процессор. Если шина содержит n адресных линий, тогда процессор может использовать её для обращения к 2n различным ячейкам памяти. Для памяти большой ёмкости необходимо много адресных линий. Чем больше ширина шины, тем больше требуется проводов и физического пространства (разъёмы большего размера). Ширина шины данных определяет количество битов информации, которое может быть передано по шине за одну транзакцию (цикл шины). Типовая ширина шины данных 32, 64 или 128 бит, т.е. кратная целому числу байтов.

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

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

  1. Арбитраж шин – определение порядка обработки прерываний от микросхем ввода/вывода, центрального процессора.

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

Существуют чёткие правила работы шины – протокол шины, а также технические требования на платы, выпускаемые различными производителями