.
Начертательная геометрия Геометрическое черчение Инженерная графика Интегралы Математический анализ Матрицы Производные Векторная алгебра

 

3.5. Компьютеры со стековой архитектурой

 

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

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

·    класс решаемых задач, определяющий необходимый набор операций, воплощаемых в отдельные команды;

·    системы команд для компьютеров аналогичного класса;

·    требования к быстродействию обработки данных, что может породить создание команд с большой длиной слова (VLIW-команды).

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

На сегодняшний день наибольшее распространение получили следующие структуры команд: одноадресные (1A), двухадресные (2A), трехадресные (3A), безадресные (БА), команды с большой длиной слова (VLIW – БДС) (рис. 3.1):

 

~

 

КОП

А1

 

 

 

 

 

 

 

 

 

 

 

 

~

 

КОП

А1

А2

 

 

 

 

 

 

 

 

 

 

 

~

 

КОП

А1

А2

А3

 

 

 

 

 

 

 

 

 

 

БА ~

 

КОП

 

 

 

 

 

 

 

 

 

 

 

 

 

БДС ~

 

КОП

Адреса

Теги

Дескрипторы

 

 

Рис. 3.1. Структуры команд

 

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

В случае БА-команд операнды выбираются и результаты помещаются в стек (магазин, гнездо). Типичными первыми представителями БА-компьютеров являются KDF-9 и МВК "Эльбрус". Их характерной особенностью является наличие стековой памяти.

Стек – это область оперативной памяти, которая используется для временного хранения данных и операций. Доступ к элементам стека осуществляется по принципу FILO (first in, last out) – первым вошел, последним вышел. Кроме того, доступ к элементам стека осуществляется только через его вершину, т. е. пользователю "виден" лишь тот элемент, который помещен в стек последним.

Рассмотрим функционирование процессора со стековой организацией памяти.

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

Рассмотрим пример.

Пусть процессор вычисляет значение выражения

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

Таблица 3.4. Пример программы

Номер
команды

Команда

Комментарии

1

 

2

 

3

 – рабочая ячейка

4

 

5

 

6

 – рабочая ячейка

7

 

8

 

9

 

10

 

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

 

Как следует из приведенной программы, операнд a выбирается из памяти 2 раза (команды 4 и 5), b – 3 раза (команды 2, 7 и 8). Кроме того, потребовались дополнительные обращения к памяти для запоминания и вызова из памяти результатов промежуточных вычислений (команды 3, 6, 9, 10).

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

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

Стековая память представляет собой набор из n регистров, каждый из которых способен хранить одно машинное слово. Одноименные разряды регистров P1, P2, ..., Pn соединены между собой цепями сдвига. Поэтому весь набор регистров может рассматриваться как группа n‑разрядных сдвигающих регистров, составленных из одноименных разрядов регистров P1, P2, ..., Pn. Информация в стеке может продвигаться между регистрами вверх и вниз.

Движение вниз: (P1® P2, (P2® P3, ..., а P1 заполняется данными из главной памяти.

Движение вверх: (Pn® Pn‑1, (Pn‑1® Pn‑2, а Pn заполняется нулями.


 

 

 

Рис. 3.2. Стековая организация процессора

 

Регистры P1 и P2 связаны с АЛУ, образуя два операнда для выполнения операции. Результат операции записывается в P1. Следовательно, АЛУ выполняет операцию .

Одновременно с выполнением арифметической операции (АО) осуществляется продвижение операндов вверх, не затрагивая P1, т. е. (P3® P2, (P4® P3 и т. д.

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

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

Для эффективного использования возможностей такой памяти в ЭВМ вводятся спецкоманды:

·        дублирование ~ (P1® P2, (P2® P3, ... и т. д., а (P1) остается при этом неизменным;

·        реверсирование ~ (P1® P2, а (P2® P1, что удобно для выполнения некоторых операций.

Рассмотрим тот же пример для новой ситуации (табл. 3.5):

.

 

Таблица 3.5. Реализация программы со стековой памятью

п/п

Команда

P1

P2

P3

P4

1

Вызов b

b

 

 

 

2

Дублирование

b

B

 

 

3

Вызов c

c

B

B

 

4

Сложение

b+c

B

 

 

5

Реверсирование

b

b+c

 

 

6

Дублирование

b

B

b+c

 

7

Умножение

b2

b+c

 

 

8

Вызов a

a

b2

b+c

 

9

Дублирование

a

A

b2

b+c

10

Умножение

a2

b2

b+c

 

11

Сложение

a2+b2

b+c

 

 

12

Деление

 

 

 

 

Как следует из табл. 3.5, понадобились лишь три обращения к памяти для вызова операндов (команды 1, 3, 8). Меньше обращений принципиально невозможно. Операнды и промежуточные результаты поступают для операций в АУ из стековой памяти; 9 команд из 12 являются безадресными.

Вся программа размещается в трех 48-разрядных ячейках памяти.

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

Наряду с указанными преимуществами стековой памяти отметим также:

·    уменьшение количества обращений к памяти;

·    упрощение способа обращения к ПП и обработки прерываний.

Недостатки стековой организации памяти:

·        большое число регистров с быстрым доступом;

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

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

На главную