|
РЕЖИМЫ АДРЕСАЦИИ ИНФОРМАЦИИ
СИСТЕМА КОМАНД: СТРУКТУРА И ТИПЫ КОМАНД
Под командой понимают совокупность сведений, необходимых процессору для выполнения определенного действия при реализации программы. Множество команд, реализуемых в микроЭВМ, образует ее систему команд, выбор которой является сложнейшей и важнейшей задачей проектирования микроЭВМ, так как система команд определяет область и эффективность ее применения. Несмотря на то, что подавляющее большинство алгоритмов может быть реализовано посредством достаточно ограниченного и простого набора команд, большинство микроЭВМ имеет 60-120 базовых команд. Под базовой понимают команду, которая определяет выполняемую операцию без учета модификаций данной команды за счет использования различных режимов адресации, регистров общего назначения, являющихся источниками и приемниками результатов, и т. п. Например, МП I8080A имеет 78 базовых команд, однако с учетом модификаций число команд равняется 244. Это позволяет в ряде случаев существенно сокращать длину программ, а, следовательно, уменьшать время решения задачи и емкость памяти. Таким образом, система команд определяет возможности машины.
Теоретически ограничения на число команд микроЭВМ нет; например, при введении команд из нескольких слов можно выделить больше разрядов под код операции. Каждый дополнительный разряд в коде операции удваивает число команд. Однако, как показывает практика программирования, при реализации обширной системы команд программисты обычно начинают использовать только ее некоторое подмножество. Кроме того, чем сложнее команда, тем более вероятно, что ее действия можно интерпретировать группой команд, а это уменьшает эффективность всей системы команд. Но, с другой стороны, чем сложнее команда, тем быстрее выполняется программа из-за сокращения числа обращений к памяти.
Проектирование системы команд оказывает влияние на структуру микроЭВМ. Оптимальную систему команд иногда определяют как совокупность команд, которая удовлетворяет требованиям проблемно-ориентированных применений таким образом, что избыточность аппаратных и аппаратно-программных средств на реализацию редко используемых команд оказывается минимальной. Систему команд следует выбирать таким образом, чтобы затраты на редко используемые команды были минимальными.
При наличии статистических данных можно разработать (выбрать) микроЭВМ с эффективной системой команд. Одним из подходов к достижению данной цели является разработка команд длиной в одно слово и кодирование их таким образом, чтобы разряды таких коротких команд использовать оптимально, что позволит сократить время реализации программы и ее длину.
Другим подходом к оптимизации системы команд является использование микроинструкций. В этом случае отдельные биты или группы бит команды используются для кодирования нескольких элементарных операций, которые выполняются в одном командном цикле. Эти элементарные операции не требуют обращения к памяти, а последовательность их реализации определяется аппаратной логикой.
Сокращение времени выполнения программ и емкости памяти достигается за счет увеличения сложности логики управления.
Важной характеристикой команды является ее формат, определяющий структурные элементы команды, каждый из которых интерпретируется определенным образом при ее выполнении. Среди таких элементов (полей) команды выделяют следующие: код операции, определяющий выполняемое действие; адрес ячейки памяти, регистра процессора, внешнего устройства; режим адресации; операнд при использовании непосредственной адресации; код анализируемых признаков для команд условного перехода.
Важнейшим структурным элементом формата любой команды является код операции (КОП), определяющий действие команды. Большое число КОП в процессоре очень важно, так как аппаратная реализация команд экономит память и время. Но при выборе микроЭВМ необходимо концентрировать внимание на полноте операций с конкретными типами данных, а не только на числе команд, на доступных режимах адресации. Число разрядов, отводимое под КОП, является функцией полного набора реализуемых команд. При использовании фиксированного числа разрядов под КОП для кодирования всех mкоманд необходимо в поле КОП выделить log2m двоичных разрядов. Однако, учитывая ограниченную длину слова микроЭВМ, различное функциональное назначение команд, источники и приемники результатов операций, а также то, что не все команды содержат адресную часть для обращения к памяти и периферийным устройствам, в микроЭВМ для кодирования команд широко используется принцип кодирования с переменным числом разрядов под поле КОП для различных групп команд.
По своей структуре команды в зависимости от того, используются они для обращения к памяти, периферийным устройствам или регистрам процессора, подразделяются на адресные и безадресные. Большинство адресных команд микроЭВМ является одноадресными. При этом адрес указывается в команде явно или косвенно путем адресации регистра процессора, в котором хранится исполнительный адрес памяти. Для указания правила использования адресной части в командах большинства ЭВМ используются 2-3 бита, определяющие режим адресации. Однако некоторые микроЭВМ, не имеют таких полей, и каждая команда использует только один режим адресации.
РЕЖИМЫ АДРЕСАЦИИ ИНФОРМАЦИИ
При выполнении программ многие команды требуют обращения к памяти для выборки данных, записи промежуточных и окончательных результатов вычислений. Поэтому механизм адресации в значительной степени определяет способность ЭВМ эффективно осуществлять обработку информации. Для малых ЭВМ это является особенно важным из-за ограниченной длины их команд, что часто является причиной использования команд в два или три слова. Поэтому в ЭВМ для преодоления данного ограничения имеется множество режимов адресации, которые позволяют: а) определять полный адрес памяти меньшим числом разрядов, тем самым, сокращая длину команды; б) обращаться к ячейкам памяти, адреса которых вычисляются во время обработки, что обеспечивает удобный доступ к данным различной структуры; в) вычислять адреса данных относительно позиции команды таким образом, что программу можно загружать в любую область памяти без всяких изменений адресов в программе.
Все режимы адресации можно разделить на две группы. К первой относятся режимы, в которых исполнительный адрес определяется одним значением кода в команде. Режимы адресации второй группы используют содержимое адресной части команды и одного или нескольких регистров для формирования исполнительного адреса. К первой группе основных режимов адресации, используемых в малых ЭВМ, можно отнести прямую, регистровую, регистровую косвенную, непосредственную, автоинкрементную, автодекрементную, а ко второй - страничную, индексную, относительную.
Прямая адресация. В данном режиме адресации код адреса в команде является исполнительным адресом обращения к памяти. Однако указание полного прямого адреса требует много бит в команде ЭВМ с большим адресным пространством, и для уменьшения его некоторые ЭВМ используют короткую прямую адресацию, обеспечивающую доступ к ограниченной части адресного пространства. Из-за своей простоты и гибкости режим прямой адресации имеется во многих малых ЭВМ.
Регистровая адресация. В данном режиме адресации операнд содержится в одном из регистров процессора.
Непосредственная адресация позволяет в команде задавать операнд, который передается в процессор из памяти вслед за кодом операции для двух- или трехсловных команд.
Регистровая косвенная адресация получила широкое распространение в малых ЭВМ и по быстродействию приближается к прямой адресации, так как косвенный адрес извлекается из внутреннего регистра процессора и не требуется дополнительного цикла памяти. В регистровой косвенной адресации регистр или регистровая пара содержит исполнительный адрес операнда. Загрузка регистров осуществляется с использованием команд с непосредственной адресацией. Использование режима регистровой косвенной адресации позволяет вычислять адреса памяти во время выполнения программы, что требуется в процедурах передачи данных, при просмотре элементов массива и т. п.
Автоинкрементная и автодекрементная адресация. Автоинкрементная адресация вычисляет исполнительный адрес практически так же, как и при регистровой косвенной адресации, а затем осуществляется увеличение содержимого регистра. В ЭВМ с байтовой адресацией содержимое регистра необходимо увеличить на 1 для указания следующего байта, на 2 - для указания слова, при этом размер операнда определяется кодом операции.
В автодекрементном режиме адрес операнда формируется вычитанием 1 или 2 из регистра адреса. Отличие от автоинкрементной адресации состоит в том, что вычитание производится до использования содержимого регистра как исполнительного адреса. Сочетание автоинкрементного, и автодекрементного режимов адресации обеспечивает эффективное использование любого регистра в качестве указателя стека. В процессорах СМ использование автоинкрементного косвенного режима по отношению к программному счетчику, являющемуся одним из регистров общего па-значения, позволяет получить абсолютный режим адресации.
Страничная адресация. При использовании страничного режима адресации память разбивается на ряд страниц одинаковой длины. Адресация страниц осуществляется или с программного счетчика, или с отдельного регистра страниц, а адресация ячеек памяти внутри страницы — адресом, содержащимся в команде. При этом обычно адрес (номер) страницы формируется одним из следующих путей: а) номер страницы располагается в базовой (нулевой) странице; б) номер страницы данных формируется путем пристыковки (конкатенации) старших разрядов программного счетчика, что позволяет получать адрес той же страницы, в которой находится команда; в) номер страницы берется из регистра страниц, в который программа ранее загрузила номер нужной страницы.
Индексная адресация удобна для обращения к массивам и таблицам. Для образования исполнительного адреса к адресной части команды прибавляется смещение из индексного регистра, называемое индексом. Индексный регистр является программно-доступным, и его содержимое может изменяться, что позволяет изменять исполнительные адреса без модификации адресной части команды. В качестве индексных регистров обычно используется один или несколько специальных регистров, но в некоторых ЭВМ их функцию выполняют регистры общего назначения или ячейки памяти, что приводит к увеличению времени выполнения программ. Когда индексный режим используется для доступа к массиву, адрес в команде соответствует базовому адресу массива, а значение индексного регистра - индексу компонента массива.
Относительная адресация. При использовании относительной адресации исполнительный адрес формируется путем сложения базового адреса с адресным полем команды. В качестве базового адреса используется содержимое программного счетчика. Использование относительной адресации позволяет строить программы, свободно перемещаемые в памяти, за счет того, что в команде всегда указано смещение по отношению к содержимому программного счетчика. Смещение интерпретируется как знаковое целое, представленное в дополнительном коде, что обеспечивает переход в любом направлении. Например, для 8-битного кода смещения может выполняться максимальный переход на число адресов в диапазоне от +12710 до −12810 по отношению к программному счетчику, при этом содержимое программного счетчика увеличивается для формирования адреса следующей команды до прибавления смещения. При перемещении программ из одной области памяти в другую смещение не изменяется, так как относительные позиции команд и данных сохраняются. Следует отметить, что, так как содержимое программного счетчика постоянно увеличивается, формируемые исполнительные адреса изменяются для одного и того же смещения, т. е. это динамический способ адресации. Для выполнения операции сложения значений смещения и программного счетчика в малых ЭВМ используется, как правило, арифметико-логическое устройство (АЛУ), а иногда и специальный сумматор.
Ранее рассмотренный режим страничной адресации с конкатенацией (присоединением) адресной части команды и старших разрядов программного счетчика имеет по сравнению с данным режимом существенный недостаток для пользователя, хотя он и проще из-за отсутствия операции сложения. Для примера рассмотрим ситуацию, когда программа выполняется на странице, адресное пространство которой находится в диапазоне адресов 40008—41778. Если программный счетчик содержит адрес 41708, то все адреса, превышающие его больше чем на 7, находятся на следующей странице и не могут быть достигнуты с использованием страничной адресации. Только косвенное обращение, например, через нулевую страницу может обеспечить такой переход.
В заключение необходимо отметить, что единства в вопросах о важности различных режимов адресации нет. Различие в их выборе, по-видимому, объясняется тем, что разработчики ЭВМ ориентируют их на определенные области применения.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|