Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АСК.doc
Скачиваний:
91
Добавлен:
06.02.2016
Размер:
424.96 Кб
Скачать

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

В архитектуре с выделенным доступом к памяти обращение к основной памяти возможно только с помощью двух специальных команд: load и store. В английской транскрипции данную архитектуру называют Load/Store architecture.

Команда load (загрузка) обеспечивает считывание значения из основной памяти, и занесение его в регистр процессора (в команде обычно указывается адрес ячейки памяти и номер регистра)

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

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

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

АСК с выделенным доступом к памяти характерна для ВМ с RISCархитектурой. Команды имеют длину 32 бита и трехадресный формат. В качестве примеров ВМ с выделенным доступом к памяти можно отметить HP PA-RISC, IBM RS/6000, Sun SPARC, MIPS R 4000, DEC Alpha и т.д.

Достоинства: простота декодирования и исполнения команд.

Архитектура системы команд isa

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

Адреса

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

Основная память в фон-неймановской системе команд (ФНСК) характеризуется линейным произвольным доступом и эквивалентна динамической памяти с произвольным доступом (DRAM), используемой в современных компьютерах. Локальная память в процессоре представляет собой единственный аккумулятор (рис.8.1.)

Регистр-аккумулятор получает результаты из АЛУ с двумя входами (один для получения одного данного из памяти, а второй из аккумулятора). В команде присутствует лишь адрес памяти, поскольку в качестве второго адреса подразумевается аккумулятор.

Типы данных

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

Память состоит из 4096 слов по 40 бит каждое; в одном слове памяти помещается одна дробь или две команды.

В наше время использование такого кода считается дурным тоном. Однако современные архитектуры, например семейства Intel x86, должны поддерживать это свойство ради совместимости с такими унаследованными программами, как MS DOS.

Слово числа содержит дробь в виде дополнения до двух, диапазон значений составляет –1  f < +1.

Слово памяти могло хранить две команды по 20 бит каждая. В формате команды старшие 8 битов отводились для хранения код операции, определяющего вид выполняемого действия. Младшие 12 бит – для хранения адрес одного из слов памяти (адреса могли быть числами в диапазоне 0 – 999). При наличии всего 21 команды можно было сократить поле команды и увеличить число битов в поле адреса.

Рис. 8.2. иллюстрирует различное расположение битов в памяти – методы остроконечников и тупоконечников.

Устройство управления в ISA извлекало из памяти команды по очереди и организовывало их выполнение по одной в каждом очередном цикле. Как это делалось, поясним на укрупненной структурной схеме, где устройство управления и АЛУ представлены детально (рис. 8.3.).

Регистры

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

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

Регистры, определенные в системе команд, называются архитектурными.

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

Таблица 8.1. Регистры фон-неймановской системы команд

Название

Функция

Архитектурные регистры

Аккумулятор АС, 40 бит

и

регистр множимого/ частного MQ (multiplier quotient), 40 бит

Используются для временного хранения операндов и результатов в АЛУ. Например, в результате умножения двух 40-битовых сомножителей формируется 80-битовое произведение. Старшие 40 разрядов произведения или частного от деления хранятся в АС, а младшие 40 битов – в MQ

Регистры реализации

Программный счетчик или счетчик команд РС (program counter), 12 бит

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

Буферный регистр команд IBR (instruction buffer register), 40 бит

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

Регистр команд IR (instruction register), 20 бит

Хранит код операции текущей команды длиной в 8 бит в процессе ее выполнения

Регистр адреса памяти MAR (memory address register), 12 бит

Хранит адрес ячейки памяти, к которой производится обращение для считывания слова или записи

Регистр данных памяти MBR (memory buffer register), 40 бит

Хранит слово, которое должно быть записано в память или которое только что извлечено из памяти.

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

На рисунке 8.3. представлена укрупненная блок-схема фон-неймановской архитектуры.

Операции

В ФНСК предусмотрены операции трех типов:

пересылки между аккумулятором, регистром множителя-частного и памятью;

операции АЛУ, например сложение, вычитание, деление и умножение;

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

Фон-неймановская архитектура содержит 21 команду. Этого вполне достаточно для программирования любого алгоритма. Современные СК требуют существенно меньшего числа команд.

В соответствии с таким делением ФНСК представлена в таблице 8.2. (соответствует рис. 8.2.а и б)

Таблица 8.2. Фон-неймановская система команд

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

1

AC MQ

Пересылка числа из MQ в аккумулятор

2

M(x) AC

Пересылка числа из аккумулятора в ячейку X памяти. Адрес памяти X извлекается из младших бит команды

3*

M(x,28:39) AC(28:39)

Замена левых 12 бит левой команды, расположенной по адресу X в памяти, левыми 12 бит аккумулятора#

4

M(x,8:19) AC(28:39)

Замена левых 12 бит правой команды, расположенной по адресу X в памяти, левыми 12 бит аккумулятора#

Команды АЛУ

5

ACc M(x)

Очистка аккумулятора и прибавление числа из ячейки с адресом х в памяти

6

AC ACc – M(x)

Очистка аккумулятора и вычитание числа из ячейки с адресом х в памяти

7

AC ACc + |M(x)|

Очистка аккумулятора и прибавление абсолютного значения числа из ячейки с адресом х в памяти

8

AC ACc - |M(x)|

Очистка аккумулятора и вычитание абсолютного значения числа из ячейки с адресом х в памяти

9

AC AC + M(x)

Прибавление числа из ячейки с адресом х в памяти к числу в аккумуляторе

10

AC AC - M(x)

Вычитание числа из ячейки с адресом х в памяти из числа в аккумуляторе

11

AC AC + |M(x)|

Прибавление абсолютного значения числа из ячейки с адресом х в памяти к числу в аккумуляторе

12

AC AC – |M(x)|

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

13

MQc M(x)

Очистка регистра MQ и прибавление к нему числа из ячейки с адресом х в памяти

14

ACc, MQ M(x) MQ

Очистка аккумулятора и умножение числа из ячейки с адресом х в памяти на число в MQ; помещение старших 39 бит результата в аккумулятор и младших 39 бит результата в MQ

15

MQc, AC AC + M(x)

Очистка аккумулятора и деление числа в аккумуляторе на число из ячейки с адресом х в памяти; оставление остатка в аккумуляторе и помещение частного в MQ

16

AC AC 2

Умножение числа в аккумуляторе на 2

17

AC AC 2

Деление числа в аккумуляторе на 2

Команды управления

18

Переход на M(x,20:39)

Передача управления на левую команду пары команд в M(x)

19

Переход на M(x,0:19)

Передача управления на правую команду пары команд в M(x)

20

Если AC , то

РС M(x,0:19)

Если число в аккумуляторе  0, то управление передается на правую команду в М(х)

21

Если AC i 0, то

РС M(x,20:39)

Если число в аккумуляторе  0, то управление передается на левую команду в М(х)

  • Эти команды пересылают адресную часть команды между памятью и аккумулятором; они необходимы для поддержки модификации адреса.

  • # Запись М(х,0:19) – обозначает правые 20 бит ячейки М(х); М(Х,20:39) – обозначает левые 20 бит и т.д.

Команды группировались следующим образом:

Команды пересылки данных. Команды этой группы выполняют пересылку данных из заданной ячейки памяти в один из двух адресуемых регистров АЛУ – аккумулятор АС или регистр множимого/частного MQ – или из этих регистров в заданную ячейку памяти.

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

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

Арифметические команды. Команды этой группы задают выполнение четырех арифметических действий, причем некоторые арифметические операции имеют пару модификаций.

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

В соответствии с таким делением ФНСК представлена в таблице 8.3. (соответствует рис. 8.2.в и г).

Таблица 8.3. Фон-неймановская система команд

Тип команды

Код операции

Символическое представление

Описание

Пересылка данных в память или из памяти

1

0000 1010

LOAD MQ

Пересылка содержимого MQ в аккумулятор

2

0000 1001

LOAD MQ, M(X)

Пересылка содержимого ячейки памяти по адресу Х в регистр MQ

3

0010 0001

STOR M(X)

Пересылка содержимого аккумулятора АС в ячейку памяти по адресу Х

4

0000 0001

LOAD M(X)

Пересылка содержимого ячейки памяти по адресу Х в аккумулятор АС

5

0000 0010

LOAD – M(X)

Пересылка взятого с обратным знаком содержимого ячейки памяти по адресу Х в аккумулятор АС

6

0000 0011

LOAD |M(X)|

Пересылка абсолютной величины cодержимого ячейки памяти по адресу Х в аккумулятор АС

7

0000 0100

LOAD - |M(X)|

Пересылка взятой обратным знаком абсолютной величины cодержимого ячейки памяти по адресу Х в аккумулятор АС

Безусловный переход

8

0000 1101

JUMP

M(X, 0:19)

Выбирает следующую команду из левой части слова по адресу X

9

0000 1110

JUMP

M(X, 20:39)

Выбирает следующую команду из правой части слова по адресу X

Условный переход

10

0000 1111

JUMP

+ M(X, 0:19)

Если число в аккумуляторе АС неотрицательно, выбирает следующую команду из левой части слова по адресу Х

11

0001 0000

JUMP

+ M(X, 20:39)

Если число в аккумуляторе АС неотрицательно, выбирает следующую команду из правой части слова по адресу Х

Арифметика

12

0000 0101

ADD M(X)

Суммирует содержимое ячейки памяти по адресу Х и содержимое аккумулятора; результат сохраняется в аккумуляторе

13

0000 0111

ADD |M(X)|

Суммирует абсолютную величину содержимого ячейки памяти по адресу Х и содержимое аккумулятора; результат сохраняется в аккумуляторе

14

0000 0110

SUB M(X)

Вычитает содержимое ячейки памяти по адресу Х из содержимого аккумулятора; разность сохраняется в аккумуляторе

15

0001 0000

SUB |M(X)|

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

16

0000 1011

MUL M(X)

Умножает содержимое ячейки памяти по адресу Х на содержимое регистра MQ; старшие разряды произведения сохраняются в аккумуляторе, а младшие – регистре MQ

Арифметика

17

0000 1100

DIV M(X)

Делит содержимое аккумулятора АС на содержимое ячейка памяти по адресу Х; частное сохраняется в регистре MQ, а остаток от деления – в аккумуляторе

18

0001 0100

LSH

Умножает содержимое аккумулятора на 2 (т.е. сдвигает его содержимое на один разряд влево)

19

0001 0101

RSH

Делит содержимое аккумулятора на 2 (т.е. сдвигает его содержимое на один разряд вправо)

Модификация адресной части команды

20

0001 0010

STOR

M(X,8:19)

Заменяет поле адреса в команде, размещенной в левой части ячейки по адресу Х, содержимым младших 12 разрядов аккумулятора АС

21

0001 0011

STOR

M(X,28:99)

Заменяет поле адреса в команде, размещенной в правой части ячейки по адресу Х, содержимым младших 12 разрядов аккумулятора АС

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]