Стековая архитектура каноническая стековая машина
Стековая архитектура, каноническая стековая машина
Стеком называется память, по своей структурной организации отличная от основной памяти ЭВМ, Принципы построения стековой памяти детально рассматриваются позже, здесь же выделим только те аспекты, которые требуются для пояснения особенностей архитектуры на базе стека.
Стек образует множество логически взаимосвязанных ячеек (рисунок 4.5), взаимодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out).
Рис 4.5. Механизм стековой памяти
В вычислительных машинах, где реализована архитектура на базе стека (их обычно называют стековыми), операнды выбираются из двух верхних ячеек стековой памяти. Результат операции заносится в вершину стека. Принцип действия стековой машины рассмотрим на примере вычисления выражения:
При описании вычислений с использованием стека обычно используется иная форма записи математических выражений, известная как обратная польская нотация, которую предложил польский математик Я. Лукашевич. Особенность ее в том, что в выражении отсутствуют скобки, а знак операции располагается не между операндами, а следует за ними (постфиксная форма). Последовательность операций определяется их приоритетами. Рассмотренное выше выражение в польской нотации примет вид:
Данная форма записи однозначно определяет порядок загрузки операндов и выполнения операций в стековой архитектуре. Порядок выполнения команд в ЭВМ со стековой архитектурой представлен на рисунке 4.6.
Рис 4.6. Порядок выполнения стековых команд
Основные узлы и информационные тракты одного из возможных вариантов ЭВМ на основе стековой архитектуры показаны на рисунке 4.7.
Информация может быть занесена в вершину стека из памяти или из АЛУ. Для записи в стек содержимого ячейки памяти с адресом х выполняется команда push х, по которой информация считывается из ячейки памяти, заносится в регистр данных, а затем проталкивается в стек. Результат операции из АЛУ заносится в вершину стека автоматически.
Сохранение содержимого вершины стека в ячейке памяти с адресом х производится командой pop х. По этой команде содержимое верхней ячейки стека подается на шину, с которой и производится запись в ячейку х, после чего производится инкремент указателя стека: SP+1.
Для выполнения арифметической или логической операции на вход АЛУ по дается информация, считанная из двух верхних ячеек стека (при этом содержимое стека продвигается на две позиции вверх, то есть операнды из стека удаляются). Результат операции заталкивается в вершину стека. Возможен вариант, когда результат сразу же переписывается в память с помощью автоматически выполняемой операции pop х.
Верхние ячейки стековой памяти, где хранятся операнды и куда заносится результат операции, как правило, делаются более быстродействующими и размещаются в процессоре, в то время как остальная часть стека может располагаться в основной памяти и частично даже на магнитном диске.
К достоинствам ЭВМ на базе стека следует отнести возможность сокращения адресной части команд, поскольку все операции производятся через вершину стека, то есть адреса операндов и результата в командах арифметической и логической обработки информации указывать не нужно. Код программы получается компактным. Достаточно просто реализуется декодирование команд.
Рис 4.7. ЭВМ на основе стековой архитектуры
С другой стороны, стековая архитектура по определению не предполагает произвольного доступа к памяти, из-за чего компилятору трудно создать эффективный программный код, хотя создание самих компиляторов упрощается. Кроме того, стек становится «узким местом» ЭВМ в плане повышения производительности.
Стековая архитектура каноническая стековая машина
Многостековые 0-операндные машины
Многостековые 0-операндные машины имеют ряд преимуществ перед иными архитектурами: 0-операндная адресация ведёт к малому размеру инструкции, несколько стеков позволяют одновременно использовать вызовы подпрограмм и манипулировать стеком данных. Это приводит к малому размеру программ и малой сложности системы.
Локальность обращений стеку даёт возможность уменьшить траффик «стек-память» на большинстве задач управления. Простота построения системы позволяет уменьшить время проектирования микросхем. Применение стековой модели позволяет уменьшить время обработки прерываний, так как не требуется сохранение контекста.
По сравнению с CISC-процессорами уменьшено время вызова подпрограмм, поэтому вызов даже маленького фрагмента кода является лучшей альтернативой, чем подстановка этого фрагмента без вызова.
Типичная стековая архитектура.
Рассмотрим архитектуру канонической стековой машины.
На рис. 1 показана структурная схема стековой машины. Основными компонентами являются: шина данных, стек данных (DS), стек возвратов (RS), арифметико-логическое устройство (ALU) с регистром вершины стека (TOS), счётчик инструкций (PC), память с регистром адреса памяти (MAR), логика управления с регистром инструкции (IR), и секция ввода/вывода (I/O).
Рис. 1. Каноническая стековая машина.
Для упрощения конструкции стековая машина имеет одну шину, соединяющую ресурсы системы. Реальные процессоры имеют более одной шины для параллеьной выборки данных и выполнения вычислений. В канонической стековой машине (КСМ) на шине может находится только один передающий блок, и только один принимающий блок в течении цикла.
АЛУ и регистр вершины стека
АЛУ поддерживает стандартные операции, используемые любой ЭВМ, как минимум сложение, вычитание, логические функции и тестирование на 0. Арифметика может быть целочисленной или плавающей.
Счётчик инструкций хранит адрес следующей выполняемой инструкции. Счётчик может быть загружен с шины данных для реализации переходов, или может быть инкрементирован для выборки следующей по порядку инструкции.
Блок содержит регситр адреса памяти (MAR) и некоторый объём памяти. Для доступа в память в MAR записывается адрес, откуда/куда будет производится чтение/запись. В следующий цикл память будет прочитана или записана (с помощью шины данных).
Некоторое устройство, «черный ящик», которое позволяет вести информационный обмен с внешними устройствами.
Таблица 1. Набор инструкций канонической стековой машины.
Обратная польская нотация
Стековые машины обрабатывают данные, «используя» постфиксную нотацию:
98 12 45 + * (эквивалентно (12+45)*98)
Каноническая стековая машина разработана для прямого исполнения обратной польской нотации (в компиляторе исчезает фаза распределения регистров).
При работе в режиме реального времени важно, каким образом обрабатываются прерывания. Обычно в этом случае необходимо сохранение контекста задачи. В данном случае контекст задачи сохранять вряд ли необходимо, исходяд из свойства стека.
Единственной неприятностью является переполнение стека, которое может возникать в случае вложенных прерываний. В ряде случаев возможно копированиечасти стека в основную память, или же это копирование вообще происходит автоматически.
Однако, идеи стековых машин очень популярны. На базе виртуальной стековой архитектуры построены виртуfльные машины Java и C#. В Беларуси выпускался стековый процессор-контроллер серии Дофин, 7 моделей, разрядность 16 и 32 бит, пригодный для задач цифовой обработки сигналов, за один такт он мог выполнить до 6 стандартных операций стековой машины. Сейчас выпускаются 4-битные стековые микроконтроллеры серии MARC фирмы Atmel.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
Архитектура набора команд
Содержание
Общий обзор
На этом уровне определяются реализованные в микропроцессоре конкретного типа:
Уровень архитектуры набора команд имеет особое значение: он является связующим звеном между программным и аппаратным обеспечением. Конечно, можно было бы сделать так, чтобы аппаратное обеспечение непосредственно выполняло программы, написанные на С, С++, Java или других языках высокого уровня, но это не очень хорошая идея. Преимущество компиляции перед интерпретацией было бы тогда потеряно. Кроме того, из чисто практических соображений компьютеры должны уметь выполнять программы, написанные на разных языках, а не только на одном.
Когда появляется новая машина, первый вопрос, который задают все потенциальные покупатели: «Совместима ли машина с предыдущими версиями?» Второй вопрос: «Можно ли запустить на ней прежнюю операционную систему?» И третий вопрос: «Будут ли работать на этой машине прежние приложения и не потребуется ли заменять их новыми версиями?» Этот факт заставляет производителей компьютеров поддерживать один и тот же уровень команд в разных моделях или, по крайней мере, делать его обратно совместимым. Под обратной совместимостью мы понимаем способность новой машины выполнять старые программы без изменений. В то же время новая машина может поддерживать новые команды и иметь другие особенности, используемые новым программным обеспечением.
Какую архитектуру команд можно считать хорошей? Существуют два основных фактора. Во-первых, хорошая архитектура должна предлагать набор команд, которые можно эффективно реализовать не только в современной, но и в будущей технике. При плохо разработанной архитектуре команд процессор может строиться из большего числа вентилей, для выполнения программ может требоваться больший объем памяти и т. д. Проект, в котором должным образом учтены особенности конкретной техники, может стать основой для производства целого поколения компьютеров, прийти на смену которым сможет система с еще более совершенной архитектурой команд.
Классификация архитектур системы команд
Сложившуюся на настоящий момент ситуацию в области АСК иллюстрирует рисунок 3.
Среди мотивов, чаще всего предопределяющих переход к новому типу АСК, остановимся на двух наиболее существенных. Первый — это состав операций, выполняемых вычислительной машиной, и их сложность. Второй — место хранения операндов, что влияет на количество и длину адресов, указываемых в адресной части команд обработки данных.
По составу и сложности команд
Современная технология программирования ориентирована на языки высокого уровня, главная цель которых — облегчить процесс программирования. Но переход к ЯВУ породил серьезную проблему: сложные операторы, характерные для языков высокого уровня, существенно отличаются от простых машинных операций, реализуемых в большинстве вычислительных машин. Следствием такого несоответствия становится недостаточно эффективное выполнение программ. Проблема получила название семантического разрыва, а для ее разрешения разработчики вычислительных машин в настоящее время выбирают один из трех подходов и, соответственно, один из трех типов АСК:
В CISC-архитектуре семантический разрыв преодолевается за счет расширения системы команд, дополнения ее сложными командами, семантически аналогичными операторам языков высокого уровня (ЯВУ). Для CISC-архитектуры типичны:
К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 1980-х годов, и значительную часть производящихся в настоящее время. Рассмотренный способ решения проблемы семантического разрыва вместе с тем ведет к усложнению аппаратуры вычислительных машин (ВМ), главным образом, устройства управления, что, в свою очередь, негативно сказывается на производительности ВМ в целом. Это обстоятельство побудило более внимательно проанализировать программы, получаемые после компиляции с ЯВУ. Был предпринят комплекс исследований, в результате которых обнаружилось, что доля дополнительных команд, эквивалентных операторам ЯВУ, в общем объеме программ не превышает 10–20%, а для некоторых наиболее сложных команд даже 0,2%. В то же время объем аппаратных средств, требуемых для реализации таких дополнительных команд, возрастает весьма существенно. Так, емкость микропрограммной памяти, хранящей микропрограммы выполнения всех команд ВМ, из-за введения сложных команд может увеличиваться на 60%
Анализ результатов упомянутых исследований привел к пересмотру традиционных решений, следствием чего стало появление RISC-архитектуры. Идея заключается в ограничении списка команд ВМ наиболее часто используемыми простейшими командами, оперирующими данными, размещенными только в регистрах процессоров. Обращение к памяти допускается лишь с помощью специальных команд чтения и записи. Резко уменьшено количество форматов команд и способов указания адресов операндов. Эти меры позволили существенно упростить аппаратные средства ВМ и повысить их быстродействие. Оказалось, что реализация сложных команд за счет последовательности из простых, но быстрых RISC-команд не менее эффективна, чем аппаратный вариант сложных команд в CISC-архитектуре. Элементы RISC-архитектуры впервые появились в вычислительных машинах CDC 6600 и супер-ЭВМ компании Cray Research. Достаточно успешно реализуется RISC-архитектура и в современных ВМ.
Помимо CISC- и RISC-архитектур, в общей классификации был упомянут еще один тип АСК — архитектура с командными словами сверхбольшой длины (VLIW). Концепция VLIW базируется на RISC-архитектуре, но в ней несколько простых RISC-команд объединяются в одну сверхдлинную команду и выполняются параллельно. В плане АСК архитектура VLIW сравнительно мало отличается от RISC. Появился лишь дополнительный уровень параллелизма вычислений.
По месту хранения операндов
Не меньшую роль при выборе АСК играет ответ на вопрос о том, где могут храниться операнды и каким образом к ним осуществляется доступ. С этих позиций различают следующие виды архитектур системы команд:
Выбор той или иной архитектуры влияет на принципиальные моменты: сколько адресов будет содержать адресная часть команд, какова будет длина этих адресов, насколько просто будет происходить доступ к операндам и какой, в конечном итоге, будет общая длина команд
Стековая архитектура
Стеком называется память, по своей структурной организации отличная от основной памяти ВМ. Стек образует множество логически взаимосвязанных ячеек (рис. 2.4), взаимодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out). Принцип действия стека проиллюстрирован на рисунке 4.
Архитектура ЭВМ
Компоненты ПК
Интерфейсы
Мини блог
Самое читаемое
Процессор
Стековая архитектура
Стеком называется память, состоящая из взаимосвязанных ячеек, взаимодействующих по принципу «последним вошел — первым вышел» (LIFO, Last In First Out).
Верхнюю ячейку называют вершиной стека. Для работы со стеком предусмотрены две операции: рush (проталкивание данных в стек) и рор (выталкивание данныx из стека). Запись возможна только в верхнюю ячейку стека, при этом вся хранящаяся в стеке информация предварительно проталкивается на одну позицию вниз. Чтение допустимо также только из вершины стека. Извлеченная информация удаляется из стека, а оставшееся его содержимое продвигается вверх. В вычислительных машинах, где реализована АСК на базе стека (их обычно называют стековыми), операнды перед обработкой помещаются в две верхних ячейки стековой памяти. Результат операции заносится в стек.
В большинстве процессоров стек (т.е. память со стековым доступом) организован в участке обычной памяти с адресной организацией. Для этого в процессоре имеется специальный регистр — указатель стека (Stack Pointer SP). Этот регистр содержит адрес памяти того участка, в который будет осуществляться стековый доступ, а, говоря более точно, адрес «верхушки стека». Указатель стека обычно программно доступен, то есть к нему можно производить обращение как к любому другому регистру.
При описании вычислений с использованием стека обычно используется иная форма записи математических выражений, известная как обратная польская запись (обратная польская нотация), которую предложил польский математик Я. Лукашевич. Особенность ее в том, что в выражении отсутствуют скобки, а знак операции располагается не между операндами, а следует за ними (постфиксная форма). Последовательность операций определяется их приоритетами. Выражение а = а + b + а х с в постфиксной форме будет записано в виде: а = а b + а с х +.
АСК на основе стека долгое время считался неперспективным. Однако в послнеднее время возрождается интерес к стековой архитектуре ВМ. Это связано с популярностью языкa Java и расширением сферы применения языка Forth, семантике которых наиболее близка именно стековая архитектура.
Стековая архитектура.
Стеком называется память, по своей структурной организации отличная от основной памяти ВМ. Принципы построения стековой памяти детально рассматриваются позже, здесь же выделим только те аспекты, которые требуются для пояснения особенностей АСК на базе стека.
Стек образует множество логически взаимосвязанных ячеек (рис.1), взаимодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out).
Рис.4.1. Принцип действия стековой памяти
Верхнюю ячейку называют вершиной стека. Для работы со стеком предусмотрены две операции: push (проталкивание данных в стек) ирор (выталкивание данных из стека). Запись возможна только в верхнюю ячейку стека, при этом вся хранящаяся в стеке информация предварительно проталкивается на одну позицию вниз. Чтение допустимо также только из вершины стека. Извлеченная информация удаляется из стека, а оставшееся его содержимое продвигается вверх. В вычислительных машинах, где реализована АСК на базе стека (их обычно называют стековыми), операнды перед обработкой помещаются в две верхних ячейки стековой памяти. Результат операции заносится в стек. Принцип действия стековой
машины поясним на примере вычисления выражения а = а + b + а x с.
При описании вычислений с использованием стека обычно используется иная форма записи математических выражений, известная как обратная польская запись (обратная польская нотация), которую предложил польский математик Я. Лукашевич. Особенность ее в том, что в выражении отсутствуют скобки, а знак операции располагается не между операндами, а следует за ними (постфиксная форма). Последовательность операций определяется их приоритетами (табл. 1).
Таблица 4.1. Приоритеты операций в обратной польской нотации
При преобразовании традиционной записи выражения в постфиксную используется логическая структура, аналогичная стеку, которую, чтобы не путать ее со стеком вычислительной машины, назовем стеком последовательности операций (СПО). Формирование выходной строки с выражением в обратной польской нотации осуществляется в соответствии со следующим алгоритмом:
1. Исходная строка с выражением просматривается слева направо.
2. Операнды переписываются в выходную строку.
3. Знаки операций заносятся в СПО по следующим правилам:
• если СПО пуст, то операция из входной строки переписывается в СПО;
• операция выталкивает из СПО в выходную строку все операции с большим или равным приоритетом;
• если очередной символ из исходной строки есть открывающая скобка, то он проталкивается в СПО;
Процесс получения обратной польской записи для правой части выражения а= а + b +а х с представлен в табл.4.2.
Таблица 4.2.Формирование обратной польской записи для выражения
а = а + b + а х с
Таким образом, рассмотренное выше выражение в польской записи имеет вид:
а = ab + ac x +. Данная форма записи однозначно определяет порядок загрузки операндов и операций в стек (рис. 4.2.).
Рис. 4.2. Последовательность вычисления выражения а = ab+acx+
на вычислительной машине со стековой архитектурой
Основные узлы и информационные тракты одного из возможных вариантов ВМ на основе стековой АСК показаны на рис. 4.3.
Информация может быть занесена в вершину стека из памяти или из АЛУ. Для записи в стек содержимого ячейки памяти с адресом х выполняется команда push х, до которой информация считывается из ячейки памяти, заносится в регистр данных, а затем проталкивается в стек. Результат операции из АЛУ заносится в верщину стека автоматически.
Сохранение содержимого вершины стека в ячейке памяти с адресом х производится командой pop x. По этой команде содержимое верхней ячейки стека подается на шину, с которой и производится запись в ячейку х, после чего вся находящаяся в стеке информация проталкивается на одну позицию вверх.
Для выполнения арифметической или логической операции на вход АЛУ подается информация, считанная из двух верхних ячеек стека (при этом содержимое стека продвигается на две позиции вверх, то есть операнды из стека удаляются).
Резудбтат операции заталкивается в вершину стека. Возможен вариант, когда результат сразу же переписывается в память с помощью автоматически выполняемой операции pop x.
Верхние ячейки стековой памяти, где хранятся операнды и куда заносится резудьтат операции, как правило, делаются более быстродействующими и размещаются в процессоре, в то время как остальная часть стека может располагаться в основной памяти и частично даже на магнитном диске.
К достоинствам АСК на базе стека следует отнести возможность сокращения адресной части команд, поскольку все операции производятся через вершину стека, то есть адреса операндов и результата в командах арифметической и логичес кой обработки информации указывать не нужно. Код программы получается компактным. Достаточно просто реализуется декодирование команд.
С другой стороны, стековая АСК по определению не предполагает произвольного доступа к памяти, из-за чего компилятору трудно создать эффективный программный код, хотя создание самих компиляторов упрощается. Кроме того, становится «узким местом» ВМ в плане повышения производительности. В силу упомянутых причин, данный вид АСК долгое время считался неперспективным и встречался, главным образом, в вычислительных машинах 1960-х годов, например в ВМ фирмы Burroughs (B5500, В6500) или фирмы Hewlett-Packard (HP 3000/70).
Последние события в области вычислительной техники свидетельствуют о возрождении интереса к стековой архитектуре ВМ. Связано это с популярностью языка Java и расширением сферы применения языка Forth, семантике которых наиболее близка именно стековая архитектура. Среди современных ВМ со стековой АСК можно упомянуть машины JEM 1 и JEM 2 компании ajileSystems и Clip фирмы Imsys. Особо следует отметить стековую машину IGNITE компании Patriot Scientist, которую ее авторы считают представителем нового вида АСК — архитектурой с безоперандным набором команд. Для обозначения таких ВМ они предлагают аббревиатуру ROSC (Removed Operand Set Computer). ROSC-архитектура заложена и в некоторые российские проекты, например разработки ИТФ «Технофорт».
Строго говоря, по своей сути ROSC мало отличается от традиционной архитектуры на базе стека, и выделение ее в отдельный вид представляется не вполне обоснованным.
Дата добавления: 2017-05-02 ; просмотров: 2325 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ