Процессор

Процессор

Регистровая архитектура

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

Размер регистров обычно фиксирован и совпадает с размером машинного слова. К любому регистру можно обратиться, указав его номер. Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32), и для представления номера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата). RISС-архитектура предполагает использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров.

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

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

Проверки и передача управления

Эти команды позволяют реализовать конструкции:

IF ... THEN ... ELSE
REPEAT ... UNTIL
WHILE ... DO
FOR ... DO
GOTO ...

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

  • равенство нулю;
  • знак;
  • перенос;
  • арифметическое переполнение;
  • перенос между тетрадами и др......

Команды проверки

  • TEST - проверка отдельных битов (логическим умножением).
  • CMP - сравнение операндов.

Кроме того, признаки устанавливаются после выполнения многих команд. Обратите внимание на то, что нет единых правил поведения признаков. (В процессорах фирмы Motorola при пересылке флаги "нуля" и "знака" изменяются, а в процессорах Intel - нет).

Команды ветвления по условию

B** / J*** от слов ( branch / jump). Их может быть 10...30 штук. (например, BNE - переход, если не равно 0). Набор команд ветвления обсуждается при рассмотрении системы команд процессоров х86.

Адресация в командах ветвления может быть разного типа:

  • а) полный адрес перехода;
  • б) относительная (смещение);
  • в) пропуск команды.

Но чаще всего - короткая относительная. Короткая, потому что участки, которые надо обходить, имеют не очень большую длину. Если необходимо перейти далеко, то надо комбинировать условный переход с безусловным JMP.

Команда безусловной передачи управления

JMP Адресация делается такой, чтобы можно было "прыгнуть" в любое место программной памяти ("длинная" адресация).

Команда организации цикла

Позволяет организовать в программе структуры FOR ... DO более простым способом, чем с помощью команд ветвления.

LOOP*

Команда обращения к подпрограмме (вызов процедуры)

JSR, JMS, CALL

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

При обращении / возврате надо обеспечить:

  • а) передачу управления в любое место памяти, поэтому "длинная" адресация;
  • б) возврат в то место, откуда был вызов (т.е. место вызова должно автоматически запоминаться);
  • в) запоминание промежуточных результатов, имеющихся к моменту вызова (содержимое регистров процессора, а, при рекурсивном вызове, процедуры, - надо запоминать и промежуточные результаты работы самой процедуры). Для запоминания чаще всего используется стек (участок ОЗУ или специальное ОЗУ со стековой адресацией). Часть вышеперечисленной информации запоминается автоматически при выполнении команды CALL, а сохранение оставшегося - дело программиста.

 

Организация иерархической структуры программы

Современные "большие" программы содержат и более команд. Для того чтобы можно было в такой программе разобраться (не говоря уже о том, что ее надо перед этим написать и отладить), программа должна быть структурирована. Основное средство структурирования на уровне системы команд процессора - это поддержка аппаратным уровнем (система команд, способы адресации) организации подпрограмм.

В 60...70 годах развилась манера, называемая "структурным программированием", которая широко использовала подпрограммную структуру и еще ряд договоренностей. Структурное программирование позволило значительно увеличить производительность труда при написании сложных программ и повысить их надежность. Сущность понятия подпрограмма (ПП) состоит в следующем.

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

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

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

При этом необходимо обеспечить несколько дополнительных действий:

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

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

Архитектура с выделенным доступом к памяти

В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. По команде load информация считывается из ячейки памяти в регистр процессора. Запись из регистра в память происходит по команде store. Операнды во всех командах обработки могут находиться только в регистрах процессора (в регистрах общего назначения). Результат операции также заносится в регистр. В архитектуре отсутствуют команды обработки, допускающие прямое обращение к основной памяти. АСК с выделенным доступом к памяти характерна для всех вычислительных машин с RISC-архитектурой. Команды в таких ЭВМ, как правило, имеют длину 32 бита и трехадресный формат. Примеры процессоров: Sun SPARC, MIPS R10000, DEC Alpha, PowerPC и др.

Команды ввода - вывода (обмена с периферийными устройствами)

Фактически команды ввода-вывода - это тоже команды пересылки. Основное отличие между пересылками "регистр-память" и пересылками из/в периферийное устройство ПУ состоит в том, что скорость функционирования ПУ может существенно отличаться от скорости работы процессора и поэтому ПУ далеко не всегда бывает готово к обмену.

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

Варианты структуры взаимодействия процессора и УВВ:

  • а) УВВ имеют свою систему нумерации (адресации), и в системе команд есть отдельные команды I/O, (как в IBM PC):
    IN - команда ввода из ВНУ;
    OUT - команда вывода на ВНУ.

В этом случае в формате команды УВВ предусматривается своя система адресации.

  • б) Обращение к УВВ такое же, как к памяти, часть адресов использована для ВНУ (ввод / вывод, отображенный на память).

Достоинства: можно использовать для обмена с ВНУ всю систему команд, в том числе, команды обработки, что сокращает программу.

Недостатки:

  • команда ввода/вывода длиннее и дольше выполняется, чем в случае а);
  • сложнее устройство декодирования адреса в ВНУ.

Подкатегории

Яндекс.Метрика