Шапка

2.3 Интересные особенности систематики

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

0-операндная категория относится к «чистым» стековым машинам. В этой группе по большей части располагаются академические и концептуальные проекты, что естественно, так как они базируются на классических моделях стековых машин. Присущая категории SS0 простота конструкции делает её популярной в проектах, ограниченных скудными аппаратными ресурсами, небольшим бюджетом или обеими причинами одновременно. Разработки в категории SS0 могут иметь проблемы с производительностью, если адреса возврата и данные перемешаны, а эффективной операции копирования элемента из глубины стека не предусмотрено.

Похоже, единственным применением машин из категории SL0 является свёртка комбинаторных графов ( техника, применяемая при исполнении функциональных языков программирования ( Jones 1987 )). Свёртка графов требует обхода дерева программы при её выполнении, а в стеке хранятся адреса вершин ( узлов ). Стек для вычисления выражений не нужен, так как результаты сохраняются непосредственно в памяти для хранения самого дерева.

Машины из категорий MS0 и ML0 очень похожи, различаясь в основном объёмом ресурсов, занятых буферированием элементов стека. В эти категории попадают все FORTH-машины и многие модели для других языков высокого уровня. Из-за простоты конструкции, высокой скорости и небольшого размера программ машины из этих категорий всё активней используются для управления в реальном времени ( Danile & Malinowski 1987 , Fraeman et al. 1986 ). Многие машины категорий MS0 и ML0 реализуют очень быстрый или даже не требующий дополнительных тактов вызов подпрограмм и возврат из них.

Группу с 1-операндной адресацией составляют модели, которые пытаются избежать узких мест 0-операндной архитектуры изменением конструкции с чисто стековой на стеково-аккумуляторную. Использование адреса в группе SS1 упрощает доступ к локальным переменным и указателям стекового кадра по сравнению с моделями SS0 . В общем случае видимым преимуществом 1-операндных моделей является возможность комбинировать помещение данных в стек с арифметическими операциями, что в некоторых случаях позволяет сэкономить инструкцию. Кроме того, машины для языков Pascal и Modula-2 используют 1-операндную адресацию, обусловленную особенностями P- и M-кодов.

Машины с 2-операндной адресацией становятся основным направлением проектирования. Обычные процессоры попадают в категорию SS2 . В группу SL2 входят только RISC машины с регистровым окном. Отнесение семейства 680x0 к категории MS2 отражает гибкость процессора, любой из восьми адресных регистров которого можно использовать, как указатель стека. Категорией ML2 процессора PSP отмечена попытка принципиального увеличения скорости вызовов подпрограмм через использование регистрового окна. Модель SF1 также использует несколько аппаратных стеков, но распределяет их по активным процессам в среде реального времени.

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

В следующей части ( Части _3 ) основное внимание будет уделяться MS0 и ML0 машинам. Во всех дальнейших упоминаниях термин «стековый компьютер» будет означать модель именно из этих категорий.

Previous part:

Next part: