Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
61
Добавлен:
28.01.2014
Размер:
55.3 Кб
Скачать

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

Обычно различают команды:

арифметических операций над числами с ФТ;

логических операций;

арифметических операций над числами с ПТ; операций ввода-вывода;

управления (например, управления циклами, условные и бе­зусловные переходы) и т.д.

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

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

Формат команды — это структура полей ее кода с указанием номеров разрядов, определяющих границы полей. Как правило, в универсальных машинах код операции в команде занимает 8 разрядов, а число различных операции составляет не более 256 команды. Остальные разряды отводят­ся под адреса операндов. Коман­ды представляют собой слово размером 16, 32 или 48 разрядов.

В различных машинах число адресных полей в команде может составлять от одного до четырех. В четырехадресной команде (рис. 5.1) первое поле кода операции (КОп) предназначено для кодирования выполняемой операции. Это поле «расшифровыва­ется» логическими схемами или микропрограммами, и формиру­ются управляющие сигналы для выполнения соответствующих этой операции действий. Затем располагаются четыре адресных поля: Aj — содержит адрес первого операнда, А2 — адрес второго опе­ранда, А3 — адрес ячейки памяти, отведенной для записи резуль­тата операции, А4 — адрес ячейки, где находится следующая ко­манда. Но такая четырехадресная команда занимает слишком много места в памяти компьютера, поэтому они в настоящее время не находят применения.

Сегодня наибольшее распространение имеют одно-, двух- и трехадресные команды (рис. 5.2). Трехадресные команды характер­ны для компьютеров с сокращенным набором команд. Первый и второй адреса такой команды указывают месторасположение опе­рандов, в третий адрес (ячейку памяти) заносится результат опе­рации. Для определения адреса следующей выполняемой команды служит счетчик команд (IP), к содержимому которого после вы­полнения любой команды добавляется ее длина в байтах. Для пе­рехода к выполнению команды, которая занимает не следующую по порядку ячейку памяти, в машине предусматривают специаль­ные команды переходов. Трехадресные команды используются в так называемых RISC-компьютерах (машинах с сокращенным на­бором команд); в них операнды размещают в регистрах общего назначения, число которых может достигать 256. Загрузка этих регистров из памяти осуществляется специальной схемой, назы­ваемой контроллером или процессором загрузки.

Наиболее распространены в настоящее время двухадресные компьютеры. Это машины, команды в которых содержат не более двух адресов. Оба операнда находятся в регистрах, а результат выполнения операции также записывается в регистр. Такую команду принято называть командой RR-типа (регистр-регистр). Если один операнд находится в регистре, а второй в ячейке памяти, адрес которой индексируется, то такая команда относится к RX-типу. Команда, второй операнд которой находится в ячейке памяти без индексации, а первый в регистре, носит название RS-типа.

В команде может находиться не адрес операнда, а сам операнд (этот операнд называют непосредственным адресом, и он пред­ставляет константу), такую команду относят к SI-типу. Наконец, оба операнда могут находиться в памяти, для их вызова использу­ют команду SS-типа.

В современном персональном компьютере IBM PC команды также двухадресные, но первый операнд всегда находится в од­ном из восьми регистров, а второй может находиться в регистре, памяти или непосредственно в самой команде. Помимо кода опе­рации и адресов операндов команда этого компьютера содержит бит, указывающий направление передачи результата (d), бит ши­рины операнда (w), а также поле указания режима (md) и поле регистр/память (г/т).

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

Приведенные на рис. 5.2 форматы команд весьма схематичны. В действительности в адресных полях находятся не сами адреса, а информация, позволяющая их определить. Способ определения исполнительного адреса Аи (т. е. адреса ячейки памяти, где нахо­дится операнд или команда) по адресу в коде команды Ак назы­вается способом адресации.

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

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

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

Операнды могут находиться и в регистровой, и в оперативной памяти; время обращения зависит от их местоположения. Если операнд находится в регистровой памяти, то время обращения к нему невелико. Именно для сокращения времени на обращение к операндам и используют регистровую адресацию. Регистровая ад­ресация в машине IBM PC реализуется при md-\. Адрес одного из восьми регистров, в котором размещается операнд, определя­ется полем г/т. Операнд может занимать весь регистр или только его половину в зависимости от значения w.

Наиболее часто используется прямая адресация. Операнд нахо­дится в ОП, а в команде указывается его исполнительный адрес (адресный код команды Ак совпадает с исполнительным адресом Аи). В компьютерах IBM PC в этом поле команды находится не полный адрес, а только так называемое смещение, т.е. 16-битная часть исполнительного адреса. В одном из адресных регистров на­ходится адрес сегмента; исполнительный адрес определяется сло­жением номера (адреса) сегмента и смещения. Этим удалось избе­жать самого крупного недостатка прямой адресации, а именно, необходимости слишком длинного адресного поля при большой емкости памяти.

При косвенной адресации в адресном поле команды указывает­ся адрес регистра или ячейки памяти, где находится адрес опе­ранда; этот адрес называют указателем. В случае когда указатель располагается в регистре, адресацию называют косвенно регистро­вой (рис. 5.3).

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

Часто адрес ячейки памяти образуется из нескольких составля­ющих частей, например базового адреса (или базы В), индекса (X) и смещения (D). В этих слу­чаях различают базовую, индек­сную и базово-индексную адре­сации. Если адрес, указанный в команде, состоит из двух час­тей — Ав и AD, то полный адрес ячейки памяти определяется суммированием содержимого регистра Ав, где хранится база, и смещения AD (рис. 5.4).

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

Аналогично выполняется и индексная адресация. Однако после выполнения обращения к ячейке памяти с адресом А = Ах + AD производится увеличение индекса X, записанного в индексном регистре, на единицу. Так «автоматически» определяется адрес следующего подлежащего обработке элемента в массиве. Исполь­зование индексной адресации упрощает создание циклических программ.

Часто используют комбинированную базово-индексную адреса­цию. В этом случае адрес ячейки памяти определяется суммой со­держимого регистров базы и индекса, а также смещения, содер­жащегося в команде (рис. 5.5). Иногда используют не сложение, а «сцепление» кодов базы, индекса и смещения. Это значит, что исполнительный адрес Аи = Ав, Ах, AD.

Для определения адреса следующей команды в IBM PC может быть использована относительная адресация. В этом случае адрес очередной команды представляет собой сумму текущего значения счетчика команд (IP) и смещения из предыдущей команды.

Все виды адресации в компьютере IBM PC определяют место расположения и способ нахождения адреса второго операнда; пер­вый операнд всегда находится в одном из регистров. Для компь­ютеров IBM PC многочисленные способы адресации отчасти до­стались «по наследству» от ранних моделей микропроцессоров, когда разрядность была ограничена.

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

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

Число одновременно передаваемых по шине адреса и шине данных разрядов (битов) называется разрядностью соответствующей шины и является важной характеристикой ЭВМ. Разрядность шины данных определяет максимальное общее количество доступной памяти (адресное пространство процессора); разрядность шины данных - максимальную порцию информации, которую можно получить из памяти за один раз. Для процессора i8088, на котором работал первый персональный компьютер корпорации IBM, разрядность адресной шины равнялась 20 и, соответственно, максимальное количество доступной памяти равнялось 1 Мбайту. Современные процессоры Pentium могут адресовать до 1Гбайта памяти. Следует заметить, что в компьютере, как правило, объем оперативной памяти меньше, чем максимально возможный для процессора.

Соседние файлы в папке Ответы