Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ураков А.Р. Технологические особенности проектирования вычислительной техники.doc
Скачиваний:
34
Добавлен:
02.05.2014
Размер:
839.17 Кб
Скачать

4.5. Размещение команд в памяти

Как мы уже указали выше, команда процессора состоит из пяти полей, кроме кода команды в четырех полях содержатся адреса, которые, в зависимости от доступной емкости памяти, могут иметь достаточно большое число разрядов. Мы уже заметили ранее: чтобы повысить производительность процессора на некотором этапе имеет смысл сделать ячейки памяти как можно меньшими. В этом случае возникает проблема размещения длинной команды в ячейке процессора. Выход был найден в размещении команды в нескольких ячейках подряд. Это позволяет делать команды сколь угодно длинными. Еще одно достоинство заключается в том, что если мы делаем команды разной длины (например из-за присутствия одноместной операции) не происходит напрасной потери емкости памяти.

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

  1. Выбирается ячейка памяти по адресу, на который указывает счетчик команды и помещается в регистр команды.

  2. Если это код операции, то он дешифрируется, определяется длина команды.

  3. Счетчик команд увеличивается на единицу. Если команда не выбрана полностью, происходит переход на пункт 1.

  4. Команда выполняется. В конце выполнения содержимое поля «адрес следующей команды» переписывается в счетчик команд.

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

4.6. Управление порядком выполнения команд

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

Обратим внимание на следующий факт. Инструкции в любом алгоритме выполняются последовательно, одна за другой. Изменять этот порядок имеет смысл либо в случае повторения какой-то части алгоритма, либо если алгоритм предполагает разные варианты действий в зависимости от некоторых условий (это значит, что последовательный порядок выполнения в каком-то случае изменить придется). По отношению к общему числу команд, таких команд, после которых выполняется НЕ следующая команда, очень мало. Это значит, что большая часть команд в программе в том поле, где содержится адрес следующей команды, будут содержать номер следующей ячейки, который и так уже сформирован счетчиком команд при считывании, следовательно, емкость памяти будет расходоваться бесполезно. Для того чтобы исключить это, команды были поделены на два типа. Первый тип – обычные команды, в них не содержится адрес следующей команды, а управление всегда передается следующей по порядку команде (содержимое счетчика не корректируется). Таких команд в процессоре большинство. Второй тип – команды передачи управления. В этих командах содержится адрес той команды, которую следует выполнить (в счетчик должно быть помещено новое значение – новый адрес следующей команды). Наиболее типичный здесь случай –команда безусловного перехода. Она состоит из кода команды и адреса следующей команды.

Вернемся к проблеме разветвления алгоритма, обозначенной выше. Для ее решения предлагается другой вариант команд передачи управления – команда условного перехода. В способе организации разветвления, описанном выше, выполнялась некоторая команда и по результату выполнения делался вывод о направлении перехода. Разветвление алгоритма может произойти после любой команды работы с данными. Это значит, что из-за необходимости экономии емкости памяти, все команды придется дублировать – одни подразумевают выполнение перехода, другие нет. Такой способ крайне усложняет систему команд и сам процессор. Вместе с тем, признаков, определяющих направление разветвления алгоритма, может быть довольно мало. Вернее, все многообразие признаков может быть сведено к небольшому их количеству, например: равенство результата операции нулю, отрицательный результат операции, признак четности и переполнение. Это значит, что команды обработки данных могут не вызывать требуемый переход, а лишь записывать признаки результата выполнения операции. На практике АЛУ после каждой операции всегда формирует эти признаки. Эти признаки сразу заносятся в специальный регистр, названныйрегистром состояния. Далее управление всегда передается следующей по порядку команде. Если необходимо разветвление, этой командой оказывается команда условного перехода, которая устроена следующим образом. Во-первых, в ней проверяется какое-то условие, как наличие какого-то из признаков в регистре состояний процессора, причем это условие (признак) определяется кодом команды. Кроме кода, в команде содержится адрес команды, которую следуeт выполнить. Если условие выполняется, делается переход к этой команде, если нет – выполняется следующая по порядку команда.

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