Стековая архитектура

Классификация по месту хранения операндов

Классификация архитектур системы команд

AIM

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

За время своего существования компания разработала специальное программное обеспечение, позволяющее легко создавать различные рабочие нагрузки, соответствующие уровню тестируемой системы и требованиям по ее использованию. Это программное обеспечение состоит из двух основных частей: генератора тестовых пакетов (Benchmark Generator) и нагрузочных смесей (Load Mixes) прикладных задач.

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

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

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

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

Универсальная смесь для рабочих станций (General Workstation Mix) - моделирует работу рабочей станции в среде разработки программного обеспечения.

Смесь для механического САПР (Mechanical CAD Mix) моделирует рабочую станцию, используемую для трехмерного моделирования и среды системы автоматизации проектирования в механике.

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

Смесь универсальных деловых приложений (General Business) - моделирует рабочую станцию, используемую для выполнения таких стандартных инструментальных средств, как электронная почта, электронные таблицы, база данных, текстовый процессор и т.д.

Многопользовательская смесь (Shared/Multiuser Mix) моделирует многопользовательскую систему, обеспечивающую обслуживание приложений для множества работающих в ней пользователей.

Смесь для вычислительного (счетного) сервера (ComputeServer Mix) - моделирует систему, используемую для выполнения заданий с большим объемом вычислений, таких как маршрутизация PCB, гидростатическое моделирование, вычислительная химия, взламывание кодов и т.д.

Смесь для файл-сервера (File Server Mix) - моделирует запросы, поступающие в систему, используемую в качестве централизованного файлового сервера, включая ввод/вывод и вычислительные мощности для других услуг по запросу.

Смесь СУБД (RBMS Mix) - моделирует систему, выполняющую ответственные приложения управления базой данных.

Рейтинг производительности по AIM - стандартная единица измерения пиковой производительности, установленная AIM Technology. Этот рейтинг определяет наивысший уровень производительности системы, который достигается при оптимальном использовании ЦП, операций с плавающей точкой и кэширования диска. Рейтинг машины VAX 11/780 обычно составляет 1 AIM.


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

Системой команд вычислительной машины называют полный перечень команд, которые способна выполнять данная ЭВМ. В свою очередь, под архитектурой системы команд (АСК) принято определять те средства вычислительной машины, которые видны и доступны программисту.

Компьютер представляет собой неделимую совокупность материального и идеального: аппаратных и программных компонентов. АСК можно рассматривать как линию согласования нужд разработчиков программного обеспечения с возможностями создателей аппаратуры вычислительной машины. Таким образом, АСК служит интерфейсом между программной (идеальной) и аппаратной (материальной) частями компьютера (рисунок 2.1).

 

 

Рисунок 2.1 – Основные компоненты компьютера

 

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

В упрощенной трактовке время выполнения программы Tвыч можно определить через число команд в программе Nком, среднее количество тактов процессора, приходящихся на одну команду CPI и длительность тактового периода tтп:

 

Tвыч = Nком*CPI*tтп.

 

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

 

 

Рисунок 2.2 – АСК и эффективность вычислений

 

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

1.Какого вида данные будут представлены в вычислительной машине и в какой форме?

2.Где эти данные могут храниться помимо основной памяти?

3.Каким образом будет осуществляться доступ к данным?

4.Какие операции могут быть выполнены над данными?

5.Сколько операндов может присутствовать в команде?

6.Как будет определяться адрес очередной команды?

7.Каким образом будут закодированы команды?

В данном разделе обсудим наиболее распространенные архитектуры системы команд.

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

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

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

- стековую;

- аккумуляторную;

- регистровую;

- с выделенным доступом к памяти.

 

 

Рисунок 2.3 – Классификация АСК

 

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

Стеком называется память, по своей структурной организации отличная от основной памяти ЭВМ, Принципы построения стековой памяти детально рассматриваются позже, здесь же выделим только те аспекты, которые требуются для пояснения особенностей АСК на базе стека.

Стек образует множество логически взаимосвязанных ячеек (рисунок 2.4), взаимодействующих по принципу «последним вошел, первым вышел» (LIFO, Last In First Out).

Верхнюю ячейку называют вершиной стека (SP). Для работы со стеком предусмотрены две операции: push (проталкивание данных в стек) и pop (выталкивание данных из стека). Запись возможна только в ячейку стека с адресом SP-1, при этом указатель стека смещается на одну позицию вниз. Чтение допустимо только из вершины стека (ячейка с адресом SP). Извлеченная информация удаляется из стека, а указатель продвигается вверх – принимает значение SP+1.

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

 

а = а + b + а*с.

 

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

 

а = ab+ ac*+.

 

Данная форма записи однозначно определяет порядок загрузки операндов и выполнения операций в стековой архитектуре. Порядок выполнения команд в стековой АСК представлен на рисунке 2.5.

Основные узлы и информационные тракты одного из возможных вариантов ЭВМ на основе стековой АСК показаны на рисунке 2.6.

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

Сохранение содержимого вершины стека в ячейке памяти с адресом x производится командой pop x. По этой команде содержимое верхней ячейки стека подается на шину, с которой и производится запись в ячейку х, после чего производится инкремент указателя стека: SP+1.

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

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

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

 

Рисунок 2.6 – Архитектура ЭВМ на основе стековой АСК

 

С другой стороны, стековая АСК по определению не предполагает произвольного доступа к памяти, из-за чего компилятору трудно создать эффективный программный код, хотя создание самих компиляторов упрощается. Кроме того, стек становится «узким местом» ЭВМ в плане повышения производительности.