Стековая память также как и ассоциативная, является безадресной, она представляет собой совокупность ячеек, образующих одномерный массив, в котором соседние ячейки связаны друг с другом разрядными цепями передачи слов. Запись слов всегда производится в верхнюю нулевую ячейку. При этом все ранее записанные слова сдвигаются вниз на одну ячейку.
ШД
:
Слово, находившееся ранее в 0-ой ячейке, переходит в 1-ую, из 1-ой во 2-ую и так далее.
Чтение также производится из верней ячейки. Если чтение производится с удалением слова из стека ячейки с меньшим номером. В такой последовательности порядок чтения слов соответствует правилу: «последним поступил – первым обслужен». Чтение производится в порядке обратном порядку записи.
На практике часто стековую память организуют, используя обычную адресную память. Архитектура большинства ЭВМ позволяет легко организовать стеки с так называемой скользящей вершиной.
В процессоре PDP-11 имеется восемь регистров общего назначения (РОНов).
Любой из этих РОНов, кроме R7, программист может использовать в качестве указателя вершины стека. Область ОЗУ, в которой располагается стек, также выбирает программист. При организации стека программист должен установить в выбранном РОНе первоначальное значение адреса вершины стека (УС).
При записи в стек байта или слова используется команда с адресацией типа «автодекрементная прямая». Выполняя такую команду, процессор автоматически уменьшает УС на единицу и только после этого записывает байт или слово.
Таким образом, при записи слова указатель вершины стека УС будет смещаться вверх на 2 байта, указывая всегда на ячейку ОЗУ, в которой записано последнее слово.
При чтении информации из стека необходимо использовать команды с адресацией типа «автоинкрементная прямая». Выполняя такую команду, процессор вначале читает байт или слово из ОЗУ по адресу, содержащемуся в УС, и только после этого увеличивает содержимое УС на 1 и 2, указывая на ячейку, в которой находится следующий байт или слово. Таким образом, в свободной области памяти можно организовать стек со скользящей вершиной.
Рассмотрим логическую структуру процессора ЭВМ общего назначения на примере ЭВМ типа IBM 370.
Обобщенная структурная схема процессора содержит АЛУ, УУ и регистры. Процессор может обрабатывать числа, представленные в двоичном коде; числа с плавающей точкой фиксируемой длины; десятичные числа.
Выполняемые процессором команды образуют 5 классов:
1-команды управления системой;
2-общие команды;
3-команды для выполнения действий над числами с плавающей точкой;
4-команды для выполнения действий над десятичными числами;
5-команды ввода/вывода.
Команды управления системой и команды ввода-вывода являются привилегированными командами и выполняются только операционной системой. Если такие команды встретятся в программе пользователя, то выполняться они не будут и произойдет прерывание программы.
Общие команды применяются для чисел с фиксированной точкой, а также для выполнения переходов в программе.
Процессор может обращаться за информацией к 16 регистрам общего назначения (РОН). РОНы могут быть использованы в качестве накапливающих регистров в арифметических операциях с фиксированной точкой и в логических операциях, а также как индексные регистры в операциях над адресами. Каждый РОН имеет 32 разряда и задается в командах с помощью 4-битового поля R.
При выполнении некоторых операций два смежных регистра используются совместно, позволяя работать с двойными словами. В этом случае адресуемый регистр содержит старшие биты операнда и должен иметь четный адрес, тогда как РОН, содержащий младшие биты операнда, имеет следующий по порядку нечетный адрес.
Для операций с плавающей точкой процессор имеет четыре 64-разрядных регистра. Они пронумерованы числами : 0,2,4,6. Эти регистры могут содержать как короткие 32-, так и длинные 64-битовые операнды с плавающей точкой. Короткие операнды занимают старшие биты регистра, а младшие биты не используются.
Процессор может также использовать 16 управляющих регистров по 32 бита в каждом. Отдельные биты этих регистров закреплены за конкретными средствами и содержат особую информацию для функционирования этих средств. Управляющие регистры нумеруются числами от 0 до 15, которые в командах управления системой задаются полем R.
Имеются 3 класса операндов:
1-регистровые операнды;
2-непосредственные операнды;
3-операнды в ОЗУ.
1-Регистровые операнды размещаются в регистрах процессора, причем тип регистра определяется кодом операции, а номер регистра задается полем R команды.
2-Непосредственные операнды располагаются в самой команде, занимают 1 байт, который обозначается буквой I в поле команды.
3-Для обращения за операндом, находящимся в ОЗУ, используется либо адрес находящийся в одном из РОНов, либо адрес, который вычисляется по базовому адресу, индексу и смещению, обозначаемые в команде полями В, Х и Д.