Адресная структура команд микропроцессора
⇐ ПредыдущаяСтр 4 из 4 и планирование ресурсов При больших размерах реализуемых программ возникают некоторые противоречия при организации мультипрограммного режима работы, трудности динамического распределения ресурсов. В настоящее время разработано несколько способов решения этих противоречий. Например, для борьбы с фрагментацией основной памяти адресное пространство программы может быть разбито на отдельные сегменты, слабо связанные между собой. Тогда программа D общей длиной 50 Кбайт может быть представлена в виде ряда сегментов, загружаемых в различные области ОП (рис. 4.6). Это позволяет использовать реальную память, теряемую из-за фрагментации. Адреса в каждом сегменте начинаются с 0. При статическом перемещении программы в процессе загрузки ее в основную память адреса должны быть привязаны к конкретному месту в памяти, на что уходит много времени и отвлекаются вычислительные ресурсы. Более эффективной является динамическая трансляция адресов (ДТА), которая заключается в том, что сегменты загружаются в основную память без трансляции адресного пространства (т.е. без изменения адресов в программе с учетом физического размещения в памяти команд и данных), а трансляция адресов каждой команды производится в процессе ее выполнения. Этот тип трансляции называется динамическим перемещением и осуществляется специальными аппаратными средствами ДТА. Каждый сегмент программы должен иметь свое имя. Форма имени сегмента может быть любой, например номер (рис. 4.7, а,б). Рис. 4.6. Фрагментация ОП. Загрузка сегментированной программы Рис. 4.7. Форма имени сегмента: а - при выделении номеру сегмента 8 разрядов; б - при выделении номеру сегмента 16 разрядов
При таком представлении адрес будет состоять из двух частей: s, i, где s — имя сегмента, / — адрес внутри сегмента. Если ЭВМ имеет 32-битовую адресную структуру, максимальная длина адреса в единственном сегменте будет 32 разряда. Если 16 разрядов из 32 отвести под номер сегмента (а 16 — под смещение), то в этом случае все адресное пространство программы может состоять из 216 = 64 К сегментов. Сегмент может содержать 216 = 64 Кбайта (т.е. иметь адреса от 0 до 65535). При другой структуре адреса изменяется количество сегментов и их длина. Структура адресов накладывает два важных ограничения: • ограничивается максимальное число сегментов, которое может существовать в адресном пространстве программы; • ограничивается максимальное смещение любого адреса в сегменте. При загрузке в основную память сегментированной программы каждый сегмент перемещается в реальную память отдельно, причем участки основной памяти могут быть или не быть смежными. Трансляция адресов не происходит — сегменты по-прежнему содержат свои относительные адреса. Процессор может обращаться к основной памяти, используя только абсолютные адреса. Для динамической трансляции адресов (т.е. при определении абсолютных адресов по известным относительным, содержащим номер сегмента и смещение) операционная система строит специальные таблицы, устанавливающие соответствие между сегментируемым адресным пространством программы и действительными адресами сегментов в реальной памяти (рис. 4.8). -Рис. 4.8. Динамическая трансляция адресов при сегментной организации программы Каждая строка таблицы сегментов содержит адрес начала сегмента в реальной памяти. Для каждого сегмента имеется одна строка таблицы. Таблицу сегментов содержит каждая выполняемая программа. В дополнение к таблице сегментов для динамической трансляции адреса используется специальный управляющий регистр, называемый регистром начала таблицы сегментов (РНТС или STOR — segment table origin register). В этот регистр занесен адрес таблицы сегментов выполняемой в данный момент программы.
На рис. 4.9 изображено выполнение программы D. В РНТС находится адрес таблицы сегментов этой программы. Если программа В прервет выполнение программы D, то в РНТС будет занесен начальный адрес таблицы сегментов программы В.
Рис.4.9 Технология динамической трансляции адресов Допустим, для выполняемой программы D начальный адрес таблицы сегментов — 68000. В реальной вычислительной машине все действия выполняются в шестнадцатеричной системе счисления, мы же проведем вычисления для простоты в десятичной системе счисления. Для обращения к адресу 15000 сегмента 1 производятся следующие действия: • РНТС указывает на начало таблицы сегментов программы D — 68000; • номер сегмента в относительном адресе используется как индекс при обращении к таблице сегментов. В данном примере обращение производится к 1-й строке; • адрес, хранимый в выбранной строке таблицы сегментов, есть адрес начала сегмента в реальной памяти. Смещение в относительном адресе добавляется к начальному адресу, и результат является адресом в реальной памяти: 15000+75000=90000. Для относительного адреса (сегмент 3, смещение 13000) будет получен абсолютный адрес 218000. При ДТА такое определение адресов ведется в процессе выполнения каждой команды. Если операционной системе понадобится переместить исполняемую программу в другую часть памяти (например, чтобы исключить фрагментацию), сначала надо будет переслать команды и данные сегмента. Затем строку таблицы сегментов для данного сегмента нужно изменить так, чтобы она содержала новый адрес, и выполнение программы может быть продолжено. Это дает возможность динамического управления реальной памятью в процессе выполнения программы. Использованием сегментации программ достигается уменьшение фрагментации основной памяти, но полностью фрагментация не устраняется — остаются фрагменты, длина которых меньше длины сегментов программы. Если сегменты разделить на одну или несколько единиц, называемых страницами, которые имеют фиксированный размер, то, поскольку размер страницы достаточно мал по сравнению с обычным размером сегментов, неиспользуемые фрагменты ОП значительно сокращаются в объеме — будет иметь место так называемая фрагментация внутри страниц. Следовательно, потери все-таки останутся, но они будут существенно меньше.
Сегментно-страничная организация добавляет еще один уровень в структуре адресного пространства программы. Теперь адресное пространство программы дробится на сегменты, внутри сегментов — на страницы, а внутри страниц — на адреса байтов. Структура адреса: ( S, Р, i) — рис. 4.10, где S — имя сегмента внутри адресного пространства программы; Р — имя внутри страницы; i — адрес внутри страницы. Рис. 4.10. Адресная структура при сегментно-страничной организации памяти Формирование сегментно-страничной структуры выполняется автоматически с помощью операционной системы. Для динамической трансляции адресов каждому сегменту необходима одна таблица сегментов и несколько таблиц страниц (рис. 4.11). Динамическая трансляция адресов будет выполняться следующим образом: • регистр начала таблицы сегментов содержит начальный адрес таблицы сегментов выполняемой программы 28000; • номер сегмента в относительном адресе используется как индекс для обращения к записи таблицы сегментов. Эта запись идентифицирует начало таблицы страницы (реальный адрес) 30000; • номер страницы в относительном адресе используется как индекс для обращения к записи таблицы страниц. Эта запись идентифицирует начало страничного блока, содержащего эту страницу — 128000; • смещение в относительном адресе и местоположение страничного блока объединяются вместе, формируя абсолютный адрес 129564. В реальной системе адрес страничного блока и смещение связываются, т.е. соединяются вместе для образования абсолютного адреса. Все преимущества динамического перемещения с использованием сегментации и страничной организации достигаются благодаря аппаратуре и программному обеспечению, а не пользователям системы. Специальные программы во время загрузки разбивают адресное пространство программы на сегменты и страницы, строят таблицы сегментов и страниц. Средства ДТА автоматически транслируют адрес в процессе выполнения программы.
* Рис. 4.11. Структурная схема формирования абсолютного адреса при сегментно-страничной организации ОП
Виртуальная память Имея иерархическую структуру запоминающих устройств, на реальном объеме памяти, значительно меньшем максимального, можно имитировать работу с максимальной памятью. В этом случае программист работает так, как будто ему предоставлена реальная память максимально допустимого для данной ЭВМ объема, хотя имеющаяся реальная память значительно меньше по объему. Такой режим работы называется режимом виртуальной памяти. Теоретически доступная пользователю основная память, объем которой определяется только разрядностью адресной части команды и которая не существует в действительности, называется виртуальной памятью. Виртуальная память имеет сегментно-страничную или страничную организацию и реализована в иерархической системе памяти ЭВМ. Часть ее размещается в страничных блоках основной памяти (page frames), а часть — в ячейках внешней страничной памяти (slot). Внешняя страничная память является частью внешней памяти. Ячейка (слот) — это записываемая область во внешней страничной памяти (например, на жестком магнитном диске). Она того же размера, что и страница. Все программные страницы физически располагаются в ячейках внешней страничной памяти. Виртуальная же память существует только как продукт деятельности операционной системы (функционирующей на основе совместного использования внешней и страничной памяти). Загрузить программу в виртуальную память — значит переписать несколько программных страниц из внешней страничной памяти в основную память. Если в процессе выполнения программы А система обнаружит, что требуемой страницы нет в реальной памяти, она должна переслать копию этой страницы из внешней страничной памяти в реальную память. Этот механизм называется принудительным страничным обменом. Максимальный размер виртуальной памяти определяется только длиной физического адреса (32 бита): 232 = 4 Гбайта. Размер страницы в IBM PC фиксирован — 4 Кбайта. При таком объеме страниц для адресации байтов внутри страницы необходимо 12 бит. Поэтому адрес виртуальной памяти состоит из двух частей: номера страницы (20 бит) и смещения (12 бит). Сегмент в виртуальной памяти не влияет на ее размер. Он имеет логический характер, позволяющий специализировать соответствующую часть памяти, определять допустимый характер ее использования. Например, с помощью сегментации можно выделить часть памяти для размещения в ней программ, часть — для размещения данных, часть — для размещения стека. Можно выделить часть памяти только для чтения или для полного доступа и т.д.
Учитывая, что при виртуальной организации в основной памяти хранится только часть страниц, а основным хранилищем информации являются слоты на жестком диске, номера виртуальных страниц необходимо преобразовывать в номера физических страниц (слотов), в которых должны содержаться такие данные, как имя накопителя, номер цилиндра, номер головки, номер трека, номер сектора и т.д. Это преобразование осуществляется при помощи таблицы страниц. Если производить такое преобразование за один этап, потребуется линейная таблица, содержащая 1М элементов. При размере элемента таблицы 4 байта для хранения таблицы страниц необходим блок памяти 4 Мбайта, причем в мультизадачной среде такая таблица может потребоваться для каждой задачи. Содержать эти страницы в ОП практически невозможно. Поэтому в современных системах реализовано более гибкое двухуровневое преобразование, при котором линейный адрес делится не на две части (номер виртуальной страницы — 20 бит, смещение — 12 бит), а на три: каталог — 10 бит, таблица — 10 бит, смещение — 12 бит. В основной памяти при таком подходе постоянно должны храниться только каталог и активные таблицы страниц. В каждой записи каталога страниц один из служебных битов (бит присутствия) указывает, является ли данная таблица активной (т.е. присутствует ли она в основной памяти). В записях каждой активной таблицы страниц аналогичный бит присутствия отмечает страницы, которые в настоящий момент находятся в основной памяти. Благодаря такой организации сокращается количество обращений к внешней памяти, что сказывается на производительности ЭВМ. Система прерываний ЭВМ Современная ЭВМ представляет собой комплекс автономных устройств, каждое из которых выполняет свои функции под управлением местного устройства управления независимо oi других устройств машины. Устройство включается в работу центральным процессором (ЦП). Он передает устройству команду и все необходимые для ее исполнения параметры. После начала работы устройства центральный процессор отключается от него и переходит к обслуживанию других устройств или к выполнению других функций. Можно считать, что центральный процессор переключает свое внимание с устройства на устройство и с функции на функцию. На что именно обращено внимание ЦП в каждый данный момент, определяется выполняемой им программой. Во время работы в ЦП поступает (и вырабатывается в нем самом) большое количество различных сигналов. Сигналы, которые выполняемая в ЦП программа способна воспринять, обработать и учесть, составляют поле зрения ЦП или, другими словами, входят в зону его внимания. Например, если процессором исполняется программа сложения двух двойных слов, которая анализирует регистр флагов ЦП, то в ее «поле зрения» находятся флаги микропроцессора, определяющие знаки исходных данных и результата, наличие переноса из тетрады или байта, переполнения разрядной сетки и др. Такая программа готова реагировать на любой из сигналов, находящихся в ее зоне внимания (а поскольку именно программа управляет работой ЦП, то она определяет и «зону внимания» центрального процессора). Но если во время выполнения такой программы нажать какую-либо клавишу, то эта программа «не заметит» сигнала от этой клавиши, так как он не входит в ее «поле зрения». Для того чтобы ЦП, выполняя свою работу, имел возможность реагировать на события, происходящие вне его зоны внимания, и наступления которых он «не ожидает», существует система прерываний ЭВМ. При отсутствии системы прерываний все заслуживающие внимания события должны находиться в поле зрения процессора, что сильно усложняет программы и требует большой их избыточности. Кроме того, поскольку момент наступления события заранее неизвестен, процессор в ожидании какого-либо события может находиться длительное время, и, чтобы не пропустить его появления, ЦП не может «отвлекаться» на выполнение другой работы. Такой режим работы (режим сканирования ожидаемого события) связан с большими потерями времени ЦП на ожидание. Кроме сокращения потерь на ожидание, режим прерываний позволяет организовать выполнение такой работы, которую без него реализовать просто невозможно. Например, при появлении неисправностей, нештатных ситуаций режим прерываний позволяет организовать, работу по диагностике и автоматическому восстановлению в момент возникновения нештатной ситуации, прервав выполнение основной работы таким образом, чтобы сохранить полученные к этому времени правильные результаты. Тогда как без режима прерываний обратить внимание на наличие неисправности система могла только после окончания выполняемой работы (или ее этапа) и получения неправильного результата. Таким образом, система прерываний позволяет микропроцессору выполнять основную работу, не отвлекаясь на проверку состояния сложных систем при отсутствии такой необходимости, или прервать выполняемую работу и переключиться на анализ возникшей ситуации сразу после ее появления. Помимо требующих внимания нештатных ситуаций, которые могут возникнуть при работе микропроцессорной системы, процессору полезно уметь «переключать внимание» и на различные виды работ, одновременно выполняемые в системе. Поскольку управление работой системы осуществляется программой, этот вид прерываний должен формироваться программным путем. В зависимости от места нахождения источника прерываний они могут быть разделены на: внутренние (программные и аппаратные) и внешние прерывания (поступающие в ЭВМ от внешних источников, например от клавиатуры или модема). Принцип действия системы прерываний заключается в следующем: при выполнении программы после каждого рабочего такта микропроцессора изменяется содержимое регистров, счетчиков, состояние отдельных управляющих триггеров, т.е. изменяется состояние процессора. Информация о состоянии процессора лежит в основе многих процедур управления вычислительным процессом. Не вся информация одинаково актуальна, есть существенные элементы, без которых невозможно продолжение работы. Эта информация должна сохраняться при каждом «переключении внимания процессора». Совокупность значений наиболее существенных информационных элементов называется вектором состояния или словом состояния процессора (в некоторых случаях оно называется словом состояния программы), Вектор состояния в каждый момент времени должен содержать информацию, достаточную для продолжения выполнения программы или повторного пуска ее с точки, соответствующей моменту формирования данного вектора. Вектор состояния формируется в соответствующем регистре процессора или в группе регистров, которые могут использоваться и для других целей. Наборы информационных элементов, образующих векторы состояния, отличаются у ЭВМ разных типов. В IBM PC вектор состояния включает содержимое счетчика команд, сегментных регистров, регистра флагов и аккумулятора (регистра АХ). При возникновении события, требующего немедленной реакции со стороны машины, ЦП прекращает обработку текущей программы и переходит к выполнению другой программы, специально предназначенной для данного события, по завершении которой возвращается к выполнению отложенной программы. Такой режим работы называется прерыванием. Каждое событие, требующее прерывания, сопровождается специальным сигналом, который называется запросом прерывания. Программа, затребованная запросом прерывания, называется обработчиком прерывания. Запросы на прерывание могут возникать из-за сбоев в аппаратуре (зафиксированных схемами контроля), переполнения разрядной сетки, деления на нуль, выхода за установленные для данной программы области памяти, затребования периферийным устройством операции ввода-вывода, завершения операции ввода-вывода или возникновения при этой операции особых условий и т.д. Некоторые из этих запросов порождаются самой программой, но время их возникновения невозможно предсказать заранее. При наличии нескольких источников запросов прерывания часть из них может поступать одновременно. Поэтому в ЭВМ устанавливается определенный порядок (дисциплина) обслуживания поступающих запросов. Кроме того, в ЭВМ предусматривается возможность разрешать или запрещать прерывания определенных видов. ПЭВМ IBM PC может выполнять 256 различных прерываний, каждое из которых имеет свой номер (двухразрядное шестнадцатеричное число). Все прерывания делятся на две группы: прерывания с номера OOh по номер IFh называются прерываниями базовой системы ввода-вывода (BIOS — Basic Input-Output System); прерывания с номера 20h no номер FFh называются прерываниями DOS. Прерывания DOS имеют более высокий уровень организации, чем прерывания BIOS, они строятся на использовании модулей BIOS в качестве элементов. Прерывания делятся на три типа: аппаратные, логические и программные. Аппаратные прерывания вырабатываются устройствами, требующими внимания микропроцессора: прерывание № 2 — отказ питания; № 8 — от таймера; № 9 — от клавиатуры; № 12 — от адаптера связи; № 14 — от НГМД; № 15 — от устройства печати и др. Запросы на логические прерывания вырабатываются внутри микропроцессора при появлении «нештатных» ситуаций: прерывание № 0 — при попытке деления на 0; № 4 — при переполнении разрядной сетки арифметико-логического устройства; № 1 — при переводе микропроцессора в пошаговый режим работы; № 3 — при достижении программой одной из контрольных точек. Последние два прерывания используются отладчиками программ для организации пошагового режима выполнения программ (трассировка) и для остановки программы в заранее намеченных контрольных точках. Запрос на программное прерывание формируется по команде «INT п», где п — номер вызываемого прерывания. Запрос на аппаратное или логическое прерывание вырабатывается в виде специального электрического сигнала. Контрольные вопросы 1. Что относится к факторам, определяющим функциональную организацию ЭВМ? 2. Как взаимодействуют устройства ЭВМ при выполнении процессорных операций? 3. Какие архитектурные решения необходимы для организации многопрограммного режима работы ЭВМ? 4. Какие черты характеризуют стандартный интерфейс ЭВМ? 5. Какими этапами характеризуется организация обработки программы, написанной на алгоритмическом языке? 6. Чем отличается интерпретатор от компилятора? 7. В чем заключаются процессы распределения, использования и освобождения ресурсов в ЭВМ? 8. Какие существуют методы борьбы с фрагментацией памяти? 9. Изменится ли предельно допустимый объем основной памяти, если в команде изменить количество разрядов, отводимых под номер сегмента и номер страницы, оставив общую длину адреса неизменной? 10. Что собой представляет виртуальная память? 11. С какой целью в ЭВМ реализован режим прерываний? 12. Какая информация включается в состав слова состояния процессора? 13. Какие действия выполняют команды, вызывающие программные прерывания? 14. В чем заключается подготовка ЦП к выполнению программного прерывания? 15. Чем отличаются прерывания BIOS от прерываний DOS?
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|