Опишите систему команд компьютера из которых составляется любая программа обработки данных

Команда – это упорядоченная совокупность битов, представляющая наименование операции, инициируемой командой, и адреса операндов, участвующих в выполнении операции. Основная характеристика команды – адресность, определяемая количеством адресов в команде. В зависимости от адресности команды подразделяются на 0-адресные (нульадресные), 1-адресные (одноадресные) и т. д. Длина команды в битах, количество полей, используемых для кодирования элементов команды (операций, адресов и признаков), и расположение полей в команде определяет формат команды. Форматы команд изображаются в виде (1.7). Выбор формата команд и, в частности, адресности зависит от большого числа факторов, важнейшими из которых являются: тип машинных элементов информации (слова и биты); длина слов; наличие регистровой памяти процессора; класс алгоритмов, для реализации которого предназначается компьютер; способы адресации, необходимые для эффективной обработки данных.

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

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

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

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

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

1.2), в процессоре которого имеются N регистров общего назначения R0, R1, …, RN-1 и все команды программ и все данные размещены в памяти компьютера. Количество регистров ограничено и, как правило, равно 8, 16, 32, 64 и возможно более. Время чтения – записи слова из регистра составляет малую долю наносекунды, поскольку все регистры входят в состав сверхбольшой интегральной схемы процессора. Время обращения к памяти значительно больше и составляет как минимум 5 – 10 нс.

⚙ Расширь возможности своей Windows — 15 полезных команд сисадмина

Минимальное количество команд, обеспечивающих загрузку слова в регистр из памяти и запись слова из регистра в память, равно двум:

LOADA,Ri

STOREB, Rj ,

где LOAD – операция ЗАГРУЗИТЬ и STORE – операция ЗАПИСАТЬ, A и B – загружаемый в регистр Ri и записываемый в память по адресу Rjоперанд соответственно и Riи Rj–адреса регистров общего назначения. Для адресации памяти могут использоваться любые способы, но чаще всего адрес ячейки памяти является относительным и модифицируемым. Естественно, что можно расширить список команд загрузки за счет передачи между регистром и памятью байта, слов разной длины, чисел с плавающей запятой, чисел с обратным знаком и т. д. При этом увеличивается эффективность системы посылочных операций, но одновременно с этим увеличивается длина кода операции и, как следствие, длина команд.

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

ADDRi, Rj, Rk ,

где ADD – операция сложения, Riи Rj – адреса операндов иRk– адрес результата. В компьютерах могут использоваться двухадресные и одноадресные команды.

При использовании двухадресной системы команд и выполнении операций только над содержимым регистров задача вычисления значения C=A+B выполняется следующей последовательностью команд:

LOAD A, R1
LOAD B, R2
ADD R1, R2
STORE C, R2 ,

где операция сложения выполняется в виде R2:= R1 + R2 . Операции безусловного и условного переходов происходят, как правило, в одноадресном режиме, когда при наличии признаков перехода выполняется переход по заданному адресу, который и определяет адрес следующей команды программы, а при отсутствии признаков перехода будет выполнен переход к следующей команде программы.

Одноадресная система команд строится аналогично двухадресной. Однако для выполнения операций, в которых участвуют два операнда, необходимо располагать регистром общего назначения, в котором хранится один из операндов. В качестве такого регистра может использоваться регистр R0 , который называется итоговым регистром процессора и служит для размещения результатов всех операций. Естественно, что каждая арифметическая и логическая операция выполняются в следующем виде: R0 := R0 * Ri, где * – знак операции.

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

В компьютерах, производимых различными фирмами, используются слова разной длины, как правило, длиной 8, 16, 32 и 64 бита, различные способы адресации данных и систем кодирования операций. По этим причинам сокращенные системы команд оказываются крайне разнообразными.

Источник: ronl.org

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

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

Читайте также:
Что будет за программу фридом

Обычно различают следующие группы команд:

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

Каждый тип компьютера обладает собственной системой команд, т.е. в нем существует аппаратура или память микропрограмм, призванная вырабатывать управляющие сигналы для реализации командных операций. Естественно, что для выполнения конкретной программы необходим компьютер, способный выполнять команды, составляющие эту программу. При разработке новых компьютеров стремятся сохранить их преемственность; для этого компьютеры выполняют «программно совместимыми». Программная совместимость означает, прежде всего, наличие одинаковых систем команд. Однако во многих случаях систему команд «расширяют», т.е. добавляют дополнительные операции, сохраняя при этом формат команд. Это значит, что новая машина может выполнять все программы, составленные для прежних компьютеров, но программы, в которых используются дополнительные команды, не могут выполняться компьютерами старых моделей. Такую совместимость называют обратной. Команда, или инструкция (под инструкцией часто понимают конструкцию языка более высокого уровня, но в переводной литературе этот термин используют в качестве синонима термину команда) представляет собой слово, содержащее код выполняемой операции и адреса операндов. Код команды включает несколько полей (поле – последовательность бит, содержащая определенный тип информации). Обычно команда состоит из операционной и адресной частей. В операционной части размещается код операции, а в адресной части – адреса операндов, т.е. информация о местонахождении обрабатываемых данных и получаемого результата. Формат команды – это структура полей ее кода с указанием номеров разрядов, определяющих границы полей. В «больших» машинах, например, IBM 370 или ЕС ЭВМ, код операции в команде занимал 8 разрядов, а число различных операций составляло не более 256. Остальные разряды, а команды представляли собой слово размером 16, 32 или 48 разрядов, отводились под адреса операндов. В различных машинах число адресных полей в команде может составлять от одного до четырех. Структура четырехадресной команды приведена на рисунке 5.1. КОп А1 А2 А3 А4

Рисунок 5.1 Структура четырехадресной команды В такой команде первое поле кода операции (КОп) служит для кодирования выполняемой операции. Это поле «расшифровывается» логическими схемами или посредством микропрограммы и формируются управляющие сигналы для выполнения соответствующих этой операции действий. Затем располагаются четыре адресных поля: А1 – содержит адрес первого операнда, А2 – адрес второго операнда, А3 – адрес ячейки памяти, отведенной для записи результата операции, А4 – адрес ячейки, где находится следующая команда. Но такая четырехадресная команда занимает слишком много места в памяти компьютера, поэтому они в настоящее время не находят применения. Сегодня наибольшее распространение имеют одно-, двух- и трехадресные команды, структуры которых приведены на рисунке 5.2. Трехадресные команды характерны для компьютеров с сокращенным набором команд. В трехадресной команде первый и второй адреса указывают месторасположение операндов, в третий адрес – ячейку памяти, куда заносится результат операции. КОп А1 А2 А3 КОп А1 А2 КОп А1 А2 Рисунок 5.2 Структуры одно-, двух- и трехадресных команд В таких машинах для определения адреса следующей выполняемой команды служит счетчик команд (IP), к содержимому которого после выполнения любой команды добавляется ее длина в байтах. Для перехода к выполнению команды, которая занимает не следующую по порядку ячейку памяти, в машине предусматривают специальные команды переходов. Трехадресные команды используются в так называемых RISC компьютерах (машинах с сокращенным набором команд); в них операнды размещают в регистрах общего назначения (РОН), число которых может достигать 256. Загрузка этих регистров из памяти осуществляется специальной схемой, называемой контроллером или процессором загрузки. Наиболее распространены в настоящее время двухадресные компьютеры. Это машины, команды в которых содержат не более двух адресов. Можно представить, что оба операнда находятся в регистрах, а результат выполнения операции мы также будем записывать в регистр. Тогда такую команду принято называть командой RR-типа (регистр-регистр). Если один операнд находится в регистре, а второй в ячейке памяти, адрес которой индексируется, то такая команда относится к RX-типу. Команда, второй операнд которой находится в ячейке памяти без индексации, а первый в регистре, носит название RS-типа. В команде может находиться не адрес операнда, а сам операнд (этот операнд называют непосредственным адресом, и он представляет константу), такую команду относят к SI-типу. Наконец, оба операнда могут находиться в памяти, для их вызова используют команду SS-типа. Такие команды использовались в машинах IBM/370 и ЕС ЭВМ. В персональном компьютере IBM PC команды также двухадресные, но первый операнд всегда находится в одном из восьми регистров, а второй может находиться в регистре, памяти или непосредственно в самой команде. Помимо кода операции и адресов операндов команда этого компьютера содержит бит, указывающий направление передачи результата (d), бит ширины операнда (w), а также поле указания режима (md) и поле регистр/память (r/m). В одноадресной машине команда содержит только один адрес, а поскольку обычно в арифметической операции используется два операнда, то второй уже находится в одном из регистров процессора. Результат операции всегда сохраняется в выходном регистре процессора, который называют аккумулятором. Очевидно, что для сложения двух чисел нужно выполнить три одноадресных команды: поместить первый операнд из памяти в регистр процессора, передать второй операнд из памяти и сложить его с первым, а затем сохранить результат в памяти. Однако на практике при выполнении программы никогда не приходится использовать все три команды. В регистре процессора сохраняется один из операндов, полученный при выполнении предыдущей операции (т.е. первая команда не нужна), а результат сложения будет использован следующей командой (т.е. не нужно его сохранять в памяти). Приведенные на рисунке 5.2 форматы команд весьма схематичны. В действительности в адресных полях находятся не сами адреса, а информация, позволяющая их определить. Способ определения исполнительного адреса Аи (т.е. адреса ячейки памяти, где находится операнд или команда) по адресу в коде команды Ак будем называть способом адресации. Для указания способа адресации в некоторых системах команд используется специальное поле; это позволяет выполнять одну и ту же команду с любым предусмотренным способом адресации, но значительно увеличивает длину команды. Способы адресации Обычно в команде имеются поля, указывающие адрес операнда Ак. В этом случае адресацию называют явной. Однако иногда адресное поле в команде отсутствует, а информацию об адресе операнда несет сам код операции. Такую адресацию называют неявной. Ее используют при работе над содержимым аккумулятора или над флагами. [Флагами называют признаки результата, которые при выполнении каждой операции заносятся в специальный регистр. Примерами могут служить флаги переполнения, четности и т.п. Общее число флагов зависит от конкретного процессора.] Однако наиболее часто используется явная адресация. Время обращения в память сказывается на общей производительности компьютера, поэтому, чем меньше таких обращений, тем лучше с позиций быстродействия. Если нужно произвести действие с постоянным операндом, значение которого известно в момент трансляции программы, то нет необходимости хранить его в отдельной ячейке памяти; его можно поместить в адресном поле самой команды. Такой способ задания операнда принято называть непосредственной адресацией. Она применяется для задания констант, длина которых меньше адресного поля команды. Операнды могут находиться и в регистровой, и в оперативной памяти; время обращения зависит от их местоположения. Если операнд находится в регистровой памяти, то время обращения к нему невелико. Именно с целью сокращения времени на обращение к операндам и используют регистровую адресацию. Регистровая адресация в машине IBM PC реализуется при md = 1. Адрес одного из восьми регистров, в котором размещается операнд, определяется полем r/m. Операнд может занимать весь регистр или только его половину в зависимости от значения «w». Наиболее часто используется прямая адресация. Операнд находится в ОП, а в команде указывается его исполнительный адрес (адресный код команды Ак совпадает с исполнительным адресом Аи). В компьютерах IBM PC в этом поле команды находится не полный адрес, а только так называемое смещение, т.е. 16-битная часть исполнительного адреса. В одном из адресных регистров находится адрес сегмента; исполнительный адрес определяется сложением номера (адреса) сегмента и смещения. Этим удалось избежать самого крупного недостатка прямой адресации, а именно, необходимости слишком длинного адресного поля при большой емкости памяти. При косвенной адресации в адресном поле команды указывается адрес регистра или ячейки памяти, где находится адрес операнда; этот адрес называют указателем. В случае, когда указатель располагается в регистре, адресацию называют косвенной регистровой, рисунок 5.3. Адрес указателя в команде компьютера остается неизменным, но, меняя сами указатели, можно осуществлять переадресацию данных, что упрощает обработку массивов и списковых структур. КОп Адрес указателя
ОП указатель операнд Рисунок 5.3 Косвенная адресация Часто адрес ячейки памяти образуется из нескольких составляющих частей, например, базового адреса (или базы B), индекса (X) и смещения (D). В этих случаях различают базовую, индексную и базово-индексную адресацию. Если адрес, указанный в команде, состоит из двух частей – АB и АСМ, то полный адрес ячейки памяти определяется суммированием содержимого регистра АB, где хранится «база», и смещения АСМ, рисунок 5.4. КОп АB АСМ
База РП ∑ Операнд ОП Рисунок 5.4 Формирование адреса памяти при базовой адресации Базовая адресация широко используется при создании программ, состоящих из перемещаемых модулей. Базовый (начальный) адрес загружается в регистр, а остальные адреса данного модуля определяются сложением базы и смещения. Это значит, что любая программа может работать с данными, располагаемыми в любой области памяти; для этого нужно изменить только базу. Аналогично выполняется и индексная адресация. Однако после выполнения обращения к ячейке памяти с адресом A = (AX) + A СМ производится увеличение индекса X, записанного в индексном регистре, на единицу. Так «автоматически» определяется адрес следующего подлежащего обработке элемента в массиве. Использование индексной адресации упрощает создание циклических программ. Часто используют комбинированную базово-индексную адресацию. В этом случае адрес ячейки памяти определяется суммой содержимого регистров базы и индекса, а также смещения, содержащегося в команде, рисунок 5.5. Иногда используют не сложение, а «сцепление» кодов базы, индекса и смещения. Это значит, что исполнительный адрес A = AB,AX,AСМ. Для определения адреса следующей команды в IBM PC может быть использована относительная адресация. В этом случае адрес очередной команды представляет собой сумму текущего значения счетчика команд (IP) и смещения из предыдущей команды. Все виды адресации в компьютере IBM PC определяют место расположения и способ нахождения адреса второго операнда; первый операнд всегда находится в одном из регистров. Для компьютеров IBM PC многочисленные способы адресации отчасти достались «по наследству» от ранних моделей микропроцессоров, когда разрядность была ограничена. КОп АB АX AСМИндекс База РП Операнд ОП Рисунок 5.5 Формирование адреса памяти при базовой индексной адресации Выбору реализуемой компьютером системы команд должно уделяться самое серьезное внимание. Каждая аппаратно реализуемая операция, входящая в систему команд, выполняется быстрее, чем аналогичная операция, не входящая в систему команд и, следовательно, реализуемая в виде подпрограммы. На первый взгляд из этого следует, что увеличение аппаратно реализуемых операций, т.е. расширение системы команд, может привести к повышению быстродействия машины. Это положение положено в основу концепции архитектуры компьютера с расширенным набором команд – CISC архитектур. Однако в силу ряда причин расширение системы команд может приводить и к обратным результатам. Именно это обстоятельство и послужило толчком для разработки машин с сокращенным набором команд – RISC архитектур. Эти архитектуры рассмотрены ниже.

Читайте также:
Лучшая программа для поиска запчастей

Источник: studfile.net

Система команд и способы обращения к данным

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

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

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

Сдай на права пока
учишься в ВУЗе
Вся теория в удобном приложении. Выбери инструктора и начни заниматься!

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

В систему команд входят:

  • разрешенные типы данных;
  • инструкции;
  • системы регистров;
  • методы адресации;
  • модели памяти;
  • способы обработки прерываний;
  • методы ввода и вывода.

Как правило, в систему команд любого процессора входят следующие основные команды:

  • команды передачи данных, которые копируют информацию из одного места в другое;
  • арифметические операции сложения и вычитания;
  • сдвиги двоичного кода влево и вправо (они используются при реализации умножения и деления);
  • логические операции сравнения, а так же операции И, ИЛИ, НЕ;
  • команды ввода-вывода, предназначенные для обмена информации с внешними устройствами;
  • команды управления, которые предназначены для организации перехода в любое нужное место программы в процессе ее выполнения.
Читайте также:
Программа paint это текстовый редактор

Структура команды и обращение к данным

«Система команд и способы обращения к данным»
Готовые курсовые работы и рефераты
Решение учебных вопросов в 2 клика
Помощь в написании учебной работы

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

Основу адресной части составляет операнд. Операнд – это сущность, над которой производится операция. Например, если мы применяем операцию «сложения» к двум числам $2$ и $3$, то $2$ и $3$ будут называться операндами. В зависимости от числа операндов, команды бывают:

  • одноадресными (например, увеличить или уменьшить значение операнда на $1$);
  • двухадресными (например, сложить два операнда и записать результат на место второго операнда, вычесть из первого операнда второй, сравнить значения двух операндов);
  • трехадресными (например, сложить два операнда, а результат записать в третий операнд);
  • безадресные (команда останова программы, возврат из программы).

При этом адресная часть тоже может быть устроена по-разному. В адресной части могут находиться:

  • сам операнд в явном виде;
  • адрес операнда в виде номера байта, начиная с которого расположен операнд;
  • адрес адреса операнда и т.д.

Замечание 1

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

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

Например, одноадресная команда сложения будет выглядеть примерно так:

Здесь КОП – это код операции, а $x$ — адрес одной ячейки. Для реализации этой команды нужно чтобы в архитектуре процессора было специальное устройство – сумматор. Содержимое ячейки с адресом $x$ складывается с содержимым сумматора. Результат сложения остается в сумматоре и может быть использован для дальнейших вычислений. Двухадресная команда сложения выглядит вот так:

В этом случае число из ячейки $x$ будет прибавлено к числу из ячейки y, а результат будет записан в ячейку $y$. А у трехадресной команды сложения будет три операнда:

Команда извлечет значения из ячеек с адресами $x$ и $y$, сложит их и запишет в ячейку с адресом $z$.

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

  1. В счетчике команд хранится адрес ячейки, в которой хранится следующая команда. Содержимое счетчика при этом увеличивается на длину команды.
  2. Выбранная команда передается в управляющее устройство (УУ) на регистр команд.
  3. УУ расшифровывает адрес команды.
  4. УУ дает сигнал, после которого операнды считываются из памяти и записываются в специальные регистры операндов аримфметико-логического устройства (АЛУ).
  5. УУ расшифровывает код операции и дает АЛУ сигнал выполнить операцию.
  6. Результат операции либо остается в процессоре, либо записывается в память, если это предусмотрено командой.
  7. Этапы $1-6$ повторяются для следующей команды. Повторение продолжается до достижения команды «стоп».

Источник: spravochnick.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru