О проекте OSerebre.ru. https://wallsgrow.ru.
В машинах данного типа процессор включает в себя массив регистров (регистровый файл), известных как регистры общего назначения (РОН). Эти регистры в каком-то смысле можно рассматривать как явно управляемый КЭШ для хранения недавно использовавшихся данных.
Размер регистров обычно фиксирован и совпадает с размером машинного слова. К любому регистру можно обратиться, указав его номер. Количество РОН в архитектурах типа CISC обычно невелико (от 8 до 32), и для представления номера конкретного регистра необходимо не более пяти разрядов, благодаря чему в адресной части команд обработки допустимо одновременно указать номера двух, а зачастую и трех регистров (двух регистров операндов и регистра результата). RISС-архитектура предполагает использование существенно большего числа РОН (до нескольких сотен), однако типичная для таких ВМ длина команды (обычно 32 разряда) позволяет определить в команде до трех регистров.
Регистровая архитектура допускает расположение операндов в одной из двух запоминающих сред: основной памяти или регистрах. С учетом возможного размещения операндов в рамках регистровых АСК выделяют три подвида команд обработки: регистр-регистр; регистр- память; память-память. Вариант "регистр-регистр" характеризуется простотой реализации, фиксированной длиной команды, быстрым выполнением команды, но большой длиной кода; он является основным в вычислительных машинах типа RISC. Команды типа "регистр-память" имеют компактный код, простое декодирование, но для них характерны длинное место адреса в коде и потеря операнда при записи (СISC-машины). Вариант "память-память" считается неэффективным, хотя и остается в некоторых моделях класса СISC.
К достоинствам регистровых АСК следует отнести: компактность получаемого кода, высокую скорость вычислений за счет замены обращений к памяти на обращения к регистрам. С другой стороны, данная архитектура требует более длинных инструкций по сравнению с аккумуляторной архитектурой. В наши дни именно регистровая архитектура является преобладающей.
Эти команды позволяют реализовать конструкции:
IF ... THEN ... ELSE
REPEAT ... UNTIL
WHILE ... DO
FOR ... DO
GOTO ...
Для выполнения этих функций в каждом процессоре есть регистр флагов (регистр состояния), разряды которого устанавливаются или сбрасываются в зависимости от свойств результата предыдущей операции. Анализируются:
Кроме того, признаки устанавливаются после выполнения многих команд. Обратите внимание на то, что нет единых правил поведения признаков. (В процессорах фирмы Motorola при пересылке флаги "нуля" и "знака" изменяются, а в процессорах Intel — нет).
B** / J*** от слов ( branch / jump). Их может быть 10...30 штук. (например, BNE — переход, если не равно 0). Набор команд ветвления обсуждается при рассмотрении системы команд процессоров х86.
Адресация в командах ветвления может быть разного типа:
Но чаще всего — короткая относительная. Короткая, потому что участки, которые надо обходить, имеют не очень большую длину. Если необходимо перейти далеко, то надо комбинировать условный переход с безусловным JMP.
JMP Адресация делается такой, чтобы можно было "прыгнуть" в любое место программной памяти ("длинная" адресация).
Позволяет организовать в программе структуры FOR ... DO более простым способом, чем с помощью команд ветвления.
LOOP*
JSR, JMS, CALL
Для экономии памяти, занимаемой программой, предоставляют возможность записать эту последовательность команд только в одном месте памяти и передавать управление к ней из разных мест вызывающей программы.
При обращении / возврате надо обеспечить:
Современные "большие" программы содержат и более команд. Для того чтобы можно было в такой программе разобраться (не говоря уже о том, что ее надо перед этим написать и отладить), программа должна быть структурирована. Основное средство структурирования на уровне системы команд процессора — это поддержка аппаратным уровнем (система команд, способы адресации) организации подпрограмм.
В 60...70 годах развилась манера, называемая "структурным программированием", которая широко использовала подпрограммную структуру и еще ряд договоренностей. Структурное программирование позволило значительно увеличить производительность труда при написании сложных программ и повысить их надежность. Сущность понятия подпрограмма (ПП) состоит в следующем.
Некоторые "законченные" функции требуется выполнять в разных местах программы. Примеры: а) определить сумму элементов массива; б) напечатать какой-либо текст на экране или принтере. После того, как написан и отлажен программный фрагмент, выполняющий подобную функцию, этот фрагмент можно рассматривать как новую мощную команду. Использовать написанный фрагмент можно двумя способами.
Первый состоит в том, чтобы подставлять текст этого фрагмента в те места программы, где требуется выполнение соответствующей функции (этот способ обычно реализуется при использовании приема, называемого в терминологии языков программирования макроподстановкой). Недостаток этого способа состоит в том, что один и тот же фрагмент кода повторяется многократно, увеличивая общий размер программы. Попутно отметим, что достоинство макроподстановки — меньшее время выполнения, так как не тратится время на вызов-возврат и сохранение-восстановление контекста.
Второй способ предполагает наличие нужного фрагмента лишь в одном экземпляре и передачу ему управления (вызов из разных мест программы) всякий раз, когда требуется выполнение реализуемой фрагментом функции. Используемый таким образом фрагмент кода и называют подпрограммой (ПП).
При этом необходимо обеспечить несколько дополнительных действий:
В составе системы команд есть обычно инструкции, обеспечивающие в той или иной мере выполнение только что перечисленных действий и требований или, по крайней мере, некоторых из них.
В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. По команде load информация считывается из ячейки памяти в регистр процессора. Запись из регистра в память происходит по команде store. Операнды во всех командах обработки могут находиться только в регистрах процессора (в регистрах общего назначения). Результат операции также заносится в регистр. В архитектуре отсутствуют команды обработки, допускающие прямое обращение к основной памяти. АСК с выделенным доступом к памяти характерна для всех вычислительных машин с RISC-архитектурой. Команды в таких ЭВМ, как правило, имеют длину 32 бита и трехадресный формат. Примеры процессоров: Sun SPARC, MIPS R10000, DEC Alpha, PowerPC и др.
Фактически команды ввода-вывода — это тоже команды пересылки. Основное отличие между пересылками "регистр-память" и пересылками из/в периферийное устройство ПУ состоит в том, что скорость функционирования ПУ может существенно отличаться от скорости работы процессора и поэтому ПУ далеко не всегда бывает готово к обмену.
Варианты структуры взаимодействия процессора и УВВ:
В этом случае в формате команды УВВ предусматривается своя система адресации.
Достоинства: можно использовать для обмена с ВНУ всю систему команд, в том числе, команды обработки, что сокращает программу.
Недостатки: