Принцип однородности памяти 7 страница

Рассмотренная архитектура в основном используется в 8-разрядных микропроцессорах, микроконтроллерах и специализированных микропроцессорах.

33. Регистровая архитектура микропроцессоров.

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

Рисунок 49 – Архитектура микропроцессора на базе регистров общего назначения

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

Регистровая архитектура допускает расположение операндов в одном из двух пространств: основной памяти или регистрах. С учетом возможного размещения операндов в рамках регистровых архитектур выделяют три типа команд обработки:

-регистр-регистр;

-регистр-память;

-память-память.

В варианте «регистр-регистр» операнды могут находиться только в регистрах. В них же засылается и результат. Вариант «регистр-память» предполагает, что один из операндов размещается в регистре, а второй в основной памяти. Результат обычно замещает один из операндов. В командах типа «память-память» оба операнда хранятся в основной памяти. Результат заносится в память. Вариант «регистр-регистр» является основным в микропроцессорах типа RISC. Команды типа «регистр-память» характерны для CISC-микропроцессоров. Ввариант «память-память» считается неэффективным, и в микропроцессорах не используется.

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

Выполнение операции в АЛУ включает в себя:

-выбор регистра первого операнда;

-определение расположения второго операнда (память или регистр);

-подачу на вход АЛУ операндов и выполнение операции;

-выбор расположения результата и занесение в него результата операции из АЛУ.

В качестве двух операндов, поступающих в АЛУ, могут использоваться операнды, хранящиеся в любых РОН, или одним из операндов может быть операнд, считываемый из основной памяти. Результат операции, выданный АЛУ, записывается в РОН или в основную память.

При адресации в команде, выполняющей операцию в АЛУ, указываются два адреса операндов, т.е. команды являются двухадресными (рис. 50).

Рисунок 50 – Формат двухадресной команды

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

В этом случае возможны четыре способа передачи данных:

  • (РОН1) * (РОН2) --> РОН1;
  • (РОН1) * (РОН2) --> РОН2;
  • (РОН) * (Память) --> РОН;
  • (РОН) * (Память) --> Память.

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

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

В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. В английской транскрипции данную архитектуру называют Load/Store architecture. Команда load (загрузка) обеспечивает считывание значения из основной памяти и занесение его в регистр процессора (в команде обычно указывается адрес ячейки памяти и номер регистра). Пересылка информации в противоположном направлении производится командой store (сохранение). Операнды во всех командах обработки информации в АЛУ могут находиться только в регистрах процессора (чаще всего в регистрах общего назначения). Результат операции также заносится в регистр. В архитектуре отсутствуют команды обработки, допускающие прямое обращение к основной памяти. Допускается наличие в наборе команд ограниченного числа команд, где операнд является частью кода команды.

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

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

К достоинствам архитектуры с выделенным доступом к памяти следует отнести простоту декодирования и исполнения команды. Архитектура с выделенным доступом к памяти характерна для всех микропроцессоров с RISC-архитектурой.

35. Стековая архитектура микропроцессоров.

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

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

Принцип действия стекового процессора поясним на примере вычисления выражения a = a + b + a × c. Это выражение в польской записи имеет вид: а = ab+acx+. Данная форма записи не содержит скобок и однозначно определяет порядок загрузки операндов в стек и порядок выполнения операций (рис. 52), т.е. может рассматриваться как программа вычисления исходного математического выражения, если под буквами понимать команды загрузки соответствующих операндов в стек (такие команды содержат только адрес операнда в основной памяти), а под знаками операций — безадресные команды, содержащие только коды операций. Эти безадресные команды инициируют извлечение из стека двух (или одного) операндов, выполнение над ними указанной в команде операции и засылку результата в вершину стека.

Рисунок 52 – Последовательность вычислений в микропроцессоре со стековой архитектурой

Основные узлы и информационные тракты одного из возможных вариантов микропроцессора на основе стековой архитектуры показаны на рис. 53.

Рисунок 53 – Архитектура микропроцессора на базе стека

Информация может быть занесена в вершину стека из памяти или из АЛУ. Для записи в стек содержимого ячейки памяти с адресом x выполняется команда push х, по которой информация считывается из ячейки памяти, заносится в регистр данных, а затем проталкивается в стек. Результат операции из АЛУ заносится в вершину стека автоматически. Сохранение содержимого вершины стека в ячейке памяти с адресом х производится командой pop х. По этой команде содержимое верхней ячейки стека подается на шину, с которой и производится запись в ячейку х, после чего вся находящаяся в стеке информация проталкивается на одну позицию вверх.

Для выполнения арифметической или логической операции на вход АЛУ подается информация, считанная из двух верхних ячеек стека (при этом содержимое стека продвигается на две позиции вверх, т.е. операнды из стека удаляются). Результат операции заталкивается в вершину стека. Возможен вариант, когда результат сразу же переписывается в память с помощью автоматически выполняемой операции pop x.

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

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

36. Классификация команд микропроцессоров.

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

  • команды пересылки данных;
  • команды арифметической и логической обработки;
  • команды ввода/вывода;
  • команды управления микропроцессором;
  • команды передачи управления.

Команды пересылки данных. Это наиболее распространенный тип машинных команд. Команды этого типа обеспечивают передачу информации между процессором и ОП, внутри процессора и между ячейками памяти.

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

К стандартному набору операций над целыми числами, представленными в форме с фиксированной запятой, относятся:

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

Для работы с числами, представленными в форме с плавающей запятой, обычно предусматриваются следующие операции:

  • основные арифметические операции: сложение, вычитание, умножение и деление;
  • операции сравнения, обеспечивающие сравнение двух вещественных чисел с выработкой признаков: =, <>, >, <, <=, >=;
  • операции преобразования: формы представления (между фиксированной и плавающей запятой), формата представления (с одинарной и двойной точностью).

Стандартная система команд МП содержит команды для выполнения различных логических операций над отдельными битами слов или других адресуемых единиц. Такие команды предназначены для обработки символьных и логических данных. Минимальный набор поддерживаемых логических операций – НЕ, И, ИЛИ и сложение по модулю 2.

В дополнение к побитовым логическим операциям, практически во всех МП предусмотрены команды для реализации операций логического, арифметического и циклического сдвигов.

При логическом сдвиге влево или вправо сдвигаются все разряды слова. Биты, вышедшие за пределы разрядной сетки, теряются, а освободившиеся позиции заполняются нулями.

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

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

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

Помимо вычисления результата выполнение арифметических и логических операций сопровождается формированием в АЛУ признаков (флагов), характеризующих этот результат. Наиболее часто фиксируются такие признаки, как: Z (Zero) – нулевой результат; N (Negative) – отрицательный результат; V (oVerflow) – переполнение разрядной сетки; С (Carry) — наличие переноса.

Команды ввода/вывода. Команды этой группы могут быть подразделены на команды управления периферийным устройством, проверки его состояния, ввода и вывода.

Команды управления периферийным устройством служат для запуска ПУ и указания ему требуемого действия. Например, накопителю на магнитной ленте может быть предписано на необходимость перемотки ленты или ее продвижения вперед на одну запись. Трактовка подобных инструкций зависит от типа ПУ.

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

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

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

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

В системе команд можно выделить три типа команд, способных изменить последовательность вычислений:

  • безусловные переходы;
  • условные переходы (ветвления);
  • вызовы процедур и возвраты из процедур.

Среди команд рассматриваемой группы наиболее часто используются условные переходы (81%).

Команда безусловного перехода обеспечивает переход по заданному адресу без проверки каких-либо условий. Присутствие в программе большого числа команд безусловного перехода считается признаком плохого стиля программирования.

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

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

37. Структура (форматы) команд микропроцессоров.

Структура команды определяется ее форматом, т.е. количеством двоичных разрядов, отводимых под всю команду, а также количеством и расположением отдельных полей команды. Полем называется совокупность двоичных разрядов, кодирующих составную часть команды.

Типовая команда, в общем случае, должна указывать:

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

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

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

Рисунок 54 – Трехадресный формат команды

В трехадресном формате длина команды может оказаться достаточно большой, если все три поля будут задавать адреса в основной памяти.

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

Рисунок 55 – Двухадресный формат команды

Длину команды можно сократить, если в качестве первого операнда использовать только регистры. Так как число регистров в МП невелико, для указания одного из них в команде достаточно иметь сравнительно короткое адресное поле. Соответствующий формат носит название полутораадресного или регистрового формата (рис. 56).

Рисунок 56 – Регистровый формат команды

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

Рисунок 57 – Одноадресный формат команды

Если для обоих операндов выделяется четко заданное местоположение, а также в случае команд, не требующих операнда, используется безадресный (нульадресный) формат команды (рис. 58).

Рисунок 58 – Безадресный формат команды

В таком варианте адресная часть команды вообще отсутствует или не задействуется.

38. Регистровые структуры микропроцессоров.

Функциональная неоднородность регистров

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

Регистровую область или набор программно доступных регистров можно рассматривать как скоростное ОЗУ малой емкости, входящее в состав микропроцессора. Этот набор регистров используется для временного хранения данных, адресной информации, информации о состоянии микропроцессора и управляющей информации, контролируемых программистом. Короткая адресация регистровой области и быстрый доступ к ней обеспечивают создание эффективно исполняемых программ.

Регистры микропроцессора функционально неоднородны: одни служат для хранения данных и/или адресной информации, другие – для управления работой микропроцессора.

В соответствии с этим все регистры микропроцессора можно разделить на 3 группы:

  • регистры данных;
  • указатели или адресные регистры;
  • регистры специального назначения или специальные регистры.

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

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

На уровне символической записи (мнемоники) команд для прямой ссылки на конкретные регистры микропроцессора им присваиваются имена, например, A, B, C, D, SP, X или R0, R1, R2 и т.д. Обычно эти имена отражают функциональное назначение регистра и способствуют пониманию мнемоники команд.

Адресные регистры

Адресные регистры применяются для реализации различных методов непрямой (вычисляемой) адресации данных (рис. 59).

Рисунок 59 – Адресные регистры

К адресным регистрам относятся:

  • регистр косвенного адреса DP (Data Pointer). Содержит непосредственно адрес операнда;
  • базовый регистр (регистр базы) BP (Base Pointer). Используется для хранения начального адреса массива;
  • индексный регистр X. Содержит относительный (по отношению к базе) адрес (индекс) операнда (элемента массива);
  • регистры автоинкрементной и автодекрементной адресации. Автоматически увеличивают или уменьшают свое содержимое до или после выполнения операции доступа в соответствии с длиной адресуемого ими операнда;
  • регистр расширения адресного пространства. Обеспечивает расширение адресного пространства путем переключения между несколькими банками основной памяти. Содержит номер текущего банка основной памяти;
  • указатели сегментов и страниц.

К классу адресных регистров с автоинкрементированием относится программный счетчик (счетчик команд, указатель команд) PC (Program Counter), содержимое которого после очередной выборки элемента командной последовательности увеличивается на длину этого элемента. За счет использования такого регистра в микропроцессоре процесс адресации следующего элемента командной последовательности в основном осуществляется неявно и автоматически. Изменение последовательности процесса выборки команд осуществляется специальными командами передачи управления, связанными с загрузкой в PC адреса, отличного от адреса следующей команды.

Частным случаем регистра с автомодификацией является указатель стека SP (Stack Pointer), который указывает на положение вершины стека.

При использовании стека для хранения локальных переменных и обмена параметрами между вызываемой и вызывающей процедурами может оказаться полезным специальный адресный регистр, указывающий на начало области локальных переменных и/или параметров в стеке, – указатель кадра FP (Frame Pointer). Значение указателя стека SP непрерывно меняется, поэтому применять его в качестве точки отсчета при доступе к данным в стеке неудобно. Процедуру доступа можно значительно упростить, если функцию точки отсчета отдать специально зарезервированному для этой цели регистру – указателю кадра FP. Указатель кадра относится к классу базовых регистров.

Специальные регистры

При выполнении операций АЛУ генерирует ряд признаков, характеризующих их результат. Функцию хранения этих признаков, а также некоторых других выполняет специальный регистр состояния SR (Status Register) или слова состояния программы PSW (Program Status Word). С каждым признаком связывается одноразрядная переменная – флажок. Флажки, связанные с признаками результата операции, группируются в поле кода условия CC (Condition Code). Типовой состав флажков-признаков результата операции:

  • CF (Carry Flag) – флажок переноса из старшего разряда АЛУ при выполнении арифметических операций. При сдвигах CF равен выдвинутому значению младшего или старшего разряда;
  • ZF (Zero Flag) – флажок признака нуля;
  • SF (Sign Flag) – флажок знака результата. SF равен значению старшего разряда результата;
  • AF (Auxiliary carry Flag) – флажок дополнительного переноса (переноса из младшей тетрады);
  • OF (Overflow Flag) – флажок арифметического переполнения;
  • PF (Parity Flag) – флажок четности количества единичных разрядов в результате.

Удобно в поле кода условия CC иметь один или несколько флажков пользователя, функциональное назначение которых определяет он сам. Обычно эти флажки служат для связи между отдельными частями программы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: