Меню для кейтеринга Алматы. прокат авто.
В данном разделе мы ознакомимся с основными принципами работы ЭВМ. Узнаем о особенностях построения и взаимодействия всех компонентах.... А так же многое многое друге. Этот раздел будет познавательным как для начинающих так и для "прошаренных" пользователей.....
Минимальный набор арифметических команд очень мал. Это (например):
Все остальное можно сделать, комбинируя эти команды.
Однако в современном микропроцессоре арифметических команд обычно больше:
Логические команды — это команды побитовой обработки.
Если исходно в al содержался, например, операнд 1101 10012, то после выполнения команды в al будет содержаться: 1101 1101 (отмечены установленные биты). Второй операнд — обычно константа, задавая которую, программист указывает, какие биты следует установить (он на жаргоне программистов носит название "маска").
Можно описать действие команды OR следующим образом: команда безусловно устанавливает в "единицу" биты в тех позициях первого операнда, которые отмечены "единицами" во втором операнде (в маске), оставляя прочие биты первого операнда неизменными.
Если, например, исходно в регистре bh содержался операнд 1101 10012, то после выполнения команды в регистре bh будет содержаться 0000 10012 (отмечены очищенные биты). Действие команды AND можно описать следующим образом: команда безусловно сбрасывает в 0 биты в тех позициях первого операнда, которые отмечены "нулями" в маске, оставляя прочие биты первого операнда неизменными.
Если исходно в cl содержалось 1101 10012, то после выполнения команды в cl будет содержаться 0010 10012 (отмечены проинвертированные биты). Действие команды xor можно описать так: команда инвертирует в первом операнде биты в позициях, которые отмечены в маске "единицами", оставляя прочие биты неизменными.
Операция сдвига состоит в одновременном перемещении содержимого операнда в разрядной сетке. Существует 3 разновидности операции сдвигов, которые различаются тем, что происходит с битами, выходящими за пределы разрядной сетки с одного "конца" операнда, и с освобождающимися позициями на другом его "конце".
Каждая из упомянутых разновидностей может также иметь варианты.
Например, в составе системы команд х86 различают пять видов сдвигов.
В языках высокого уровня используется несколько разновидностей
циклов. Все они предусматривают следующие общие свойства:
Один из вариантов цикла предусматривает заранее (до начала выполнения цикла) определенное количество повторений. В этом случае:
В системе команд процессоров х86 есть команда организации цикла loop. Ее недостаток состоит в том, что она в качестве переменной-счетчика цикла позволяет использовать только регистр процессора ECX. Это ее свойство затрудняет организацию вложенных циклических конструкций.
Операции над числами с плавающей запятой имеют существенные отличия от операций целочисленной арифметики, поэтому их реализуют с помощью самостоятельного операционного устройства (ОП). Минимальный набор операций этого устройства включает четыре действия: сложение, вычитание, умножение и деление. Операции выполняются над числами в формате IEEE 754. Особенностью ОП является то, что операции над тремя составляющими чисел с ПЗ (знаками, мантиссами и порядками операндов) выполняются раздельно:
Для хранения операндов и результата предусмотрены соответствующие регистры. В арифметике с плавающей запятой сложение и вычитание — более сложные операции, чем умножение и деление. Это обусловлено тем, что необходимо выравнивать порядки операндов. Алгоритм сложения включает следующие этапы:
Подготовительный этап осуществляет "распаковку" чисел с ПЗ, загрузку трех составляющих. В старший разряд мантиссы восстанавливается единица. Здесь может быть выполнена проверка на равенство нулю одного или обоих операндов. Это позволяет исключить ненужные операции. Действия на заключительном этапе сводятся к выявлению нулевого значения мантиссы, нормализации мантиссы, выявлению отрицательного переполнения порядка (появляется денормализованный операнд), "упаковке" составляющих результата. В отличие от целочисленной арифметики, в операциях с ПЗ сложение и вычитание производятся приближенно, так как при выравнивании порядков происходит потеря младших разрядов одного из слагаемых. В этом случае погрешность всегда отрицательна и может доходить до единицы младшего разряда. Умножение чисел с ПЗ включает следующую последовательность этапов:
Структура команды:
Машинная команда во внутреннем представлении по форме представляет собой двоичное слово. Его можно представить из двух частей (полей): кода операции (КОП) и адресной части команды.
Код операции обозначает, что должна сделать команда. Длина битового поля, отведенного в команде под КОП, должна быть достаточной для кодирования всех команд процессора.
Поле КОП может быть переменной или постоянной длины. Некоторые кодовые комбинации поля КОП оставляют незадействованными, это резервные коды для будущего расширения системы команд.
Адресная часть команды содержит информацию о местоположении одного или нескольких операндов, используемых командой. Операнды или данные в ЭВМ, с которым машинные команды выполняют действия по форме, также представляют собой двоичные слова. Эти битовые слова часто (но отнюдь не всегда) имеет смысл интерпретировать как числа.
Обобщенные формы команд.
1. В любой системе команд есть «пустая» команда, которая не делает никакого действия (NOP). Для нее просто не требуется указания операндов. Некоторые команды не требуют указания каких-либо операндов, так как их действие направлено на один заранее предопределенный операнд. Например команда «разрешить прерывание» STI – это команда устанавливает бит IF в регистре состояний EFLAGS.
2. Некоторые команды выполняют действие с одним операндом. Например, команда NEG — поменять знак операнда. Такие команды называют однооперандными. Передача управления — также однооперандная команда, в которой результат операции - изменение содержимого счетчика команд. В таких командах есть одно адресное поле для указания места расположения (или значения) операнда.
Пример такой команды: изменение знака операнда:
negax; эта команда изменит знак целого числа в регистре процессора.
3. В любом процессоре есть команды пересылок, которые копируют содержимое элементов памяти в другие элементы памяти. Такие команды требуют указания двух операндов: источника Source (Scr) и приемника Destination (Dest, Dst).
Пример такой команды:
movbl, [esi]; Содержимое однобайтового элемента данных из ячейки памяти, адрес которой хранится в регистре процессора esi, копируется в регистр процессора bl.
4. Привычные нам арифметические действия (сложение, вычитание, умножение, …) оперируют с двумя операндами и формируют результат операции : С=А+В. Таким образом, в операции участвую три элемента. В некоторых системах команд соответствующие команды действительно позволяют программисту независимо указать места расположения всех трех элементов. Для уменьшения длины команды в других системах команд эти команды имеют только два адресных поля, при выполнении команды результат операции помещается на место одного из операндов, замещая («затирая») его.
5. В системах команд процессоров с длинным командным словом (VLIW) одновременно выполняются несколько команд и они должны быть записаны подряд — длинным словом. Формировать длинное слово может или программист (в сигнальных процессорах), или транслятор языка (Itanium).
Из приведенного рассмотрения должно быть понятным, что структура адресной части команды может существенно различаться для разных команд как по количеству описываемых операндов, так и по способу кодирования информации о том, где расположен операнд.
Разработчики системы команд выбирают структуру адресной части команды, исходя из нескольких взаимоисключающих требований, главные два из которых следующие:
а) Адресная часть команды должна быть по возможности короткой, чтобы не увеличивалась чрезмерно длина команды.
б) Должна обеспечиваться достаточная гибкость и универсальность кодирования параметров команды.
Адрес(а) операнд(ов), с которым(и) выполнит действие команда, определяются в процессе обработки этой команды (формируются устройством вычисления адресов). Такой адрес называют исполнительным (executive) или эффективным (effective) адресом ЕА. Адрес, который передается по магистрали из процессора в ОЗУ и управляет работой ОЗУ, будем называть физическим адресом.
Для того, чтобы получить значение физического адреса из значения исполнительного адреса, последний в процессоре должен быть подвергнут преобразованию, которое обозначают словосочетанием трансляции адреса.
Отдельно следует сказать о физическом адресном пространстве — т.е. о пространстве реально формируемых адресов, которым могут соответствовать реально существующие (включённые в систему) элементы памяти. В системах на базе большинства представителей семейства x86 может быть сформирован физический адрес длиной 32 бита. В любой реальной системе любое адресное пространство используется чаще всего не полностью.
Можно сказать, что трансляция адреса это операция отображения одного адресного пространства на другое адресное пространство. В простейших вычислительных системах трансляция адресов может представлять собой просто тождественное отображение , т.е физический адрес равен исполнительному.
Процедура вычисления физического адреса по содержимому адресной части команды может быть достаточно сложной. Она включает два этапа:
1)Вычисление исполнительного/эффективного адреса EA (executive/effective address) в соответствии со способом адресации;
2)Переход от EA к физическому адресу (эта часть вычисление, как уже было сказано, называется трансляцией адреса) .
В машинах данного типа процессор включает в себя массив регистров (регистровый файл), известных как регистры общего назначения (РОН). Эти регистры в каком-то смысле можно рассматривать как явно управляемый КЭШ для хранения недавно использовавшихся данных.
Размер регистров обычно фиксирован и совпадает с размером машинного слова. К любому регистру можно обратиться, указав его номер. Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32), и для представления номера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата). RISС-архитектура предполагает использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров.
Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах. С учетом возможного размещения операндов в рамках регистровых АСК выделяют три подвида команд обработки: регистр-регистр; регистр- память; память-память. Вариант "регистр-регистр" характеризуется простотой реализации, фиксированной длиной команды, быстрым выполнением команды, но большой длиной кода; он является основным в вычислительных машинах типа RISC. Команды типа "регистр-память" имеют компактный код, простое декодирование, но для них характерны длинное место адреса в коде и потеря операнда при записи (СISC-машины). Вариант "память-память" считается неэффективным, хотя и остается в некоторых моделях класса СISC.
К достоинствам регистровых АСК следует отнести: компактность получаемого кода, высокую скорость вычислений за счет замены обращений к памяти на обращения к регистрам. С другой стороны, данная архитектура требует более длинных инструкций по сравнению с аккумуляторной архитектурой. В наши дни именно регистровая архитектура является преобладающей.
.
•Процессор — аппаратный уровень. Операционные устройства.
•Устройство управления. Микропрограммный автомат.
•Конвейер команд.
•Архитектуры системы команд.
•Система команд процессора.
•Способы адресации.
•Управление вычислительным процессом.
•Кодирование команд в процессоре х86.