Шапка

Приложение A. Краткий обзор компьютеров с аппаратной поддержкой стеков

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

AADC

Категория: SL1
Реализация: 16-разрядный миникомпьютер
Назначение: Непосредственное исполнение APL, военное оборудование
Кто и когда: Raytheon for the US Navy, 1971
Публикация: Nissen, S. & Wallach, S. ( 1973 )

AADC был разработан для непосредственного исполнения языка APL. Основным местом применения был ВМФ, конкретно авиационная техника морского базирования, поэтому малые размеры и вес были критичны. APL был выбран за удобство перевода в машинный код и эффективность исполнения. В частности лаконичность APL позволяла получить меньшие объёмы кода, а значит, он реже бы вызывал исключения в подсистеме виртуальной памяти. AADC преобразовывал выражения из инфиксной [* обычной ]   в постфиксную ( обратную польскую ) нотацию «на лету» во время исполнения. Программы интерпретировались в ходе исполнения специальным модулем управления программой, а исполнялись арифметическим процессором, который представлял собой 1-операндную стековую машину.

AAMP

Категория: SS1
Реализация: 16-разрядный микрокодовый процессор
Назначение: Радиационно-стойкий, многозадачная среда военного назначения
Кто и когда: Rockwell International, 1981
Публикация: Best et al. ( 1982 )

AAMP проектировался для военного и космического использования. Стековая архитектура выбрана за лёгкость компиляции и хорошую плотность кода, т.к. бОльшая часть инструкций имела длину 1 байт. AAMP использовал один стек и два указателя. Один - указатель на активационную запись, а другой - на область для вычисления выражений, которая просто размещалась в начале стекового кадра. Многие инструкции допускали использование локальных переменных, адресуемых относительно указателя кадра для сохранения 1-операндного формата. Конструкция имела регистры для четырёх верхних элементов стека вычисления выражений с возможностью сброса из/в основную память.

ACTION PROCESSOR

Категория: MS0
Реализация: 16-разрядный секционный процессор
Назначение: Прямое исполнение программ на FORTH
Кто и когда: Computer Tools, 1979
Публикация: Rust ( 1981 )

ACTION Processor FORTHRIGHT - FORTH процессор с микрокодовой архитектурой. В типичной конфигурации аппаратной части имеет стек данных для вычисления выражений и передачи параметров и стек для хранения адресов возврата. Верхние элементы обоих стеков располагаются в регистрах. Для снижения стоимости стеки располагаются в программной памяти.

AEROSPACE COMPUTER

Категория: SS0
Реализация: 64-разрядный процессор
Назначение: Особо надёжный многопроцессорный компьютер для космических аппаратов
Кто и когда: Intermetrics, 1973
Публикация: Miller & Vandever ( 1973 )

Aerospace Computer использует стековые инструкции, чтобы экономно расходовать программную память, которая сильнее всего влияет на габариты, вес, энергопотребление и стоимость оборудования для применения в космосе. Кроме того, стековые инструкции выбирались для прямой поддержки языков высокого уровня, позволяющих повысить надёжность. Конструкция сильно напоминает архитектуру B6700. Все вычисления АЛУ ведёт в формате с плавающей запятой. Все целые числа конвертируются в формат с плавающей запятой по мере выборки из памяти. Самый старший бит операнда в стеке сообщает ( если установлен ), что содержимое является указателем, заставляя процессор провести прозрачную для прикладного уровня выборку.

ALCOR

Категория: ML0
Реализация: Эмулятор, написанный для нескольких европейских компьютеров
Назначение: Эмулировалась концептуальная машина, призванная обеспечить переносимость программ на ALGOL
Кто и когда: ALCOR joint project, 1958-60
Публикация: Samelson & Bauer ( 1962 )

ALCOR - объединённый проект, одна из самых первых концептуальных попыток создать интерпретатор ALGOL-60. Европейская группа разработала архитектуру машины для языка высокого уровня, которую можно было эмулировать на разных компьютерах. Концепт имел два стека, использовавшихся для разбора и вычисления выражений. Один стек накапливал отложенные операции, а другой - промежуточные результаты. Переменные и адреса возврата статически компилировались в программный код.

AN ALGOL MACHINE

Категория: ML0
Реализация: Исследовательский прототип
Назначение: Прямое исполнение ALGOL
Кто и когда: Burroughs, 1961
Публикация: Anderson ( 1961 )

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

AM29000

Категория: SL2
Реализация: 32-разрядный микропроцессор
Назначение: RISC процессор общего назначения
Кто и когда: Advanced Micro Devices ( AMD ) 1987
Публикация: Johnson ( 1987 )

AM29000 - RISC процессор. Система команд не являлась стек ориентированной, но обеспечивала хорошую аппаратную поддержку при передаче параметров через стек в языках высокого уровня. Имеет 192 регистра, 64 из которых - регистры общего назначения, а остальные 128 - используются в качестве стекового кэша. Указатель стекового окна в регистровом файле обеспечивает относительную адресацию регистров. При переполнении стекового кэша последний сбрасывался в основную память под управлением программы. Кристалл имеет возможность разделять 256-элементный регистровый файл на 16 банков для многозадачных приложений. Каждая инструкция может обращаться к регистрам как по абсолютному адресу, так и относительно указателя на регистровый стек.

APL LANGUAGE

Категория: MS0
Реализация: Микрокодовая эмуляция на IBM 360/25 с WCS
Назначение: Прямое исполнение APL
Кто и когда: International Business Machines, 1973
Публикация: Hassitt et al. ( 1973 )

APL - интерпретируемый язык, поэтому создание машины с непосредственным исполнением была привлекательной альтернативой для интерпретации на компьютерах общего назначения. В проекте для эмуляции APL-машины использовалась IBM 360 «Model 25» с модулем перезаписываемой управляющей памяти ( WCS ). Система имела два стека в программной памяти: один для вычислений выражений, другой для временного хранения переменных.

BUFFALO STACK MACHINE

Категория: SS1
Реализация: эмулятор для B1700 с 32-разрядным микрокодом
Назначение: Исполнение программ на языках с блочной структурой
Кто и когда: State University of New York at Buffalo, 1972
Публикация: Lutz ( 1973 )

BSM представляла собой эмулятор для стековой архитектуры, написанный на микрокоде для Burroughs B1700. Эмулятор проектировался под языки, подобные ALGOL-60. Переменные хранились в формате маркированных данных, в котором 32 бита отводилось на данные, а 4 - на маркер. Прерывания рассматривались как аппаратный вызов подпрограммы и автоматически сохраняли состояние в стеке. Особенностью реализации были прерывания по переполнению/ антипереполнению стека, которые активировались, когда в стеке ещё оставалось место/ данные. Это позволяло избежать аварийного останова программы.

BURROUGHS MACHINES

Категория: SS0
Реализация: Серия миникомпьютеров
Назначение: Многопользовательский компьютер общего назначения
Кто и когда: Burroughs Corporation: 1961-77 ( и позднее )
Публикация: Carlson ( 1963 ), Doran ( 1979 ), Earnest ( 1980 ), Organick ( 1973 )

Линейка стековых компьютеров фирмы Burroughs, начавшаяся ALGOL ориентированной моделью B5000 в 1961. Одной из причин их появления явилась сложность компиляторов для обычных машин, которые в итоге оказывались слишком дорогими для запуска ( в 1961 ). [* Это было время, когда компьютеры были большими ( очень ) и время из работы стоило весьма нехилых денег ] .

B5000 был безоперандной машиной со стеком в программной памяти. Под два верхних элемента стека отводились регистры в центральном процессоре. Данные регистры имели биты статуса, которые сообщали в скольких именно регистрах ( 0 , 1 или 2 ) находятся действительные данные. Это позволяло снизить нагрузку на шину за счёт исключения смежных операций чтения и записи в память ( например, команда «POP» и идущая следом «PUSH» не приводили к считыванию из памяти значения с последующей записью его же обратно ). В B7700 данная схема была доработана и использовала стековые буфера глубиной 32 регистра.

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

CALTECH CHIP

Категория: SS0
Реализация: 8-разрядный кристалл
Назначение: Студенческий проект по курсу проектирования VLSI
Кто и когда: California Institute of Technology, 1979
Публикация: Efland & Mosteller ( 1979 )

Стековая машина, явившаяся результатом практических занятий на курсе проектирования VLSI. Исходным требованием было спроектировать и выполнить разводку кристалла для простейшего вычислительного устройства, уложившись в две с половиной недели [* ! Чтоб я так жил! Что автор, участвовал? ] . Дабы упростить конструкцию, студенты выбрали безоперандную стековую машину. Стеку отводилась часть программной памяти, а два его верхних элемента располагались внутри процессора. Набор команд был сформирован после окончательного выбора базовых примитивов для студенческого [* ! ]   же компилятора Pascal.

CRISP

Категория: SL2
Реализация: 32-разрядный микропроцессор
Назначение: RISC машина под язык Си
Кто и когда: AT&T Bell Laboratories, 1987
Публикация: Ditzel et al. ( 1987a ), Ditzel et al. ( 1987b ), Ditzel & McLellan ( 1982 ), Ditzel & McLellan ( 1987 )

Процессор CRISP - RISC машина, оптимизированная для исполнения программ на языке Си. Проектировалась как безрегистровая машина, все операнды которой размещались в памяти. Но, т.к. Си использует стек для хранения локальных переменных, большая часть операндов группировалась в памяти, адресуемой относительно указателя стека. Аппаратная поддержка стека включала 32-элементный стековый кэш в процессоре. Действия над данными возле вершины стека проходили целиком в кэше. CRISP поддерживал сжатие переходов - технику, позволявшую выполнять некоторые инструкции одновременно с переходом.

DRAGON

Категория: SL2
Реализация: Микропроцессорный комплект из двух микросхем
Назначение: Экспериментальная мультипроцессорная разработка
Кто и когда: Xerox Palo Alto Research Center, 1985
Публикация: Atkinson & McCreight ( 1987 )

DRAGON - экспериментальная разработка, ориентированная на компактный машинный код и быстрый вызов подпрограмм. Инструкции переменной длины и адресация относительно указателя стека позволяли сократить длину инструкции, допуская использование 3-операндной адресации. Исполнительный блок включал 128-элементный регистровый стек с поддержкой кадров переменного размера. Последняя опция реализовывалась парой указателей, которые задавали верхнюю и нижнюю границы стекового кадра.

EM-1

Категория: SS1
Реализация: Концептуальный проект
Назначение: Структурное программирование
Кто и когда: Vrije University, The Netherlands, 1978
Публикация: Tanenbaum ( 1978 )

Эта часто упоминаемая работа разбирает вопросы направления и степени влияния структурных методов программирования на конструкцию вычислительных машин и предлагает свой вариант - EM-1 . Основная идея концепта - обеспечить удобное рабочее окружение для хорошо структурированных программ. Для достижения заданных целей в конструкции используется один стек в программной памяти, работающий в обычной для структурных языков манере, и 1-операндная адресация локальных переменных относительно начала стекового кадра в вычислениях, использующих верхушку стека. Разработка предполагала разрешать проблему столкновений между элементами стека и инструкциями на шине памяти за счёт подразумевающихся независимых буферных блоков стекового кэша и кэша инструкций.

EULER

Категория: SS0
Реализация: Микрокодовый интерпретатор для IBM 360/30
Назначение: Исследования микрокодовых реализаций для непосредственной интерпретации языков высокого уровня
Кто и когда: IBM Systems Development Division, 1967
Публикация: Weber ( 1967 )

EULER - расширение языка ALGOL. Проект, описанный в публикации, стал одной из самых ранних попыток реализации в машине прямого интерпретатора. Для решения задачи в стандартную машину IBM 360 «Model 30» был прошит специальный микрокод. Программа на EULER компилировалась в промежуточный байт-код. Каждый байт-код вызывал резидентную подпрограмму в микропрограммной памяти. Результат можно с уверенностью назвать первой «P-кодовой» машиной. Выбор микрокодового интерпретатора определялся тем фактом, что EULER поддерживал ряд структурных элементов, таких как динамическая типизация, динамическое распределение памяти и работа со списками, которые плохо ложились на существовавшие компьютеры. В проекте использовался один стек в программной памяти, который использовался для динамического выделения памяти и вычисления выражений. Инструкции для работы с данными имели безоперандный RPN формат.

FORTH ENGINE

Категория: ML0
Реализация: Дискретные микросхемы ТТЛ
Назначение: Прямое исполнение языка FORTH
Кто и когда: Execution of Forth programming language
Публикация: Winkel ( 1981 )

Стековый процессор для языка FORTH с микрокодовой реализацией на ТТЛ логике. В дополнение к аппаратному стеку для вычисления выражений и аппаратному стеку возврата имел перезаписываемую память для микрокода шириной 60 бит.

FORTRAN MACHINE

Категория: MS0
Реализация: Концептуальный проект
Назначение: Непосредственное исполнение языка FORTRAN
Кто и когда: University of Science and Technology of China, PRC, 1980
Публикация: Chen et al. ( 1980 )

Публикация сообщала о концептуальной разработке машины для прямого исполнения языка FORTRAN. Машину предполагалось оснащать несколькими аппаратными стеками, в которых размещались бы адреса возврата, счётчики циклов с адресами переходов и область для вычисления выражений. Пути реализации не раскрывались, но для уменьшения обмена на шине подошли бы стеки в изолированных участках памяти. Как и в случае других вариантов прямого исполнения, для разбора программы стеки были обязательным элементом.

FRISC 3

Категория: ML0
Реализация: 32-разрядный микропроцессор
Назначение: Вычислительная и управляющая машина для космических аппаратов, оптимизированная для языка FORTH
Кто и когда: Johns Hopkins University, 1986
Публикация: Fraeman et al. ( 1986 ), Hayes ( 1986 ), Hayes & Lee ( 1988 ), Hayes et al. ( 1987 ), Williams et al. ( 1986 )

Исполнял базовые примитивы FORTH, позволял группировать несколько операций в разных полях инструкции. Хотя FORTH - безоперандный язык, процессор позволял выбирать любой из 4 верхних элементов стека данных в пару к верхнему элементу стека возврата, т.е. превращался в 1-, 2-операндную машину. Внутрипроцессорные стековые буфера невелики - всего по 16 элементов на данные и адреса. Цифра определялась в первую очередь возможностями технологии.

G-MACHINE

Категория: SL0
Реализация: Эмулятор 32-разрядного процессора
Назначение: Сокращение графов
Кто и когда: Oregon Graduate Center, 1985
Публикация: Kieburtz ( 1985 )

Построена специально для сокращения графов в качестве поддержки исполнения функциональных языков. Исполняла G-код, представлявший собой язык с безаргументной адресацией, спроектированный для управления одним стеком. Программная память была сильно структурирована, чтобы удовлетворить требованиям основной задачи - сокращения графов. Каждый элемент памяти имел четыре поля для учёта ссылок и два 32-разрядных поля для указателей на граф.

GLOSS

Категория: SS0
Реализация: Концептуальный проект
Назначение: Мулитипроцессорная система с межпроцессорным взаимодействием
Кто и когда: University of Washington, 1973
Публикация: Herriot ( 1973 )

Разработка пыталась задать параметры универсальной машины для широкого набора языков высокого уровня, включающих ALGOL-68, LISP 1.5 и SNOBOL 4. Основывалась на передаче данных по запросу, в которой разные процессы запускались в стиле вызова подпрограмм на многих параллельно включённых процессорах. Каждый процессор имел набор вычислительных стеков в программной памяти.

HITAC-10

Категория: SS0
Реализация: Аппаратура расширения для миникомпьютера
Назначение: Эксперимент по расширению существующей архитектуры
Кто и когда: Keio University, Japan, 1974
Публикация: Ohdate et al. ( 1975 )

Стековая архитектура была внедрена в уже построенный миникомпьютер HITAC-10. Для упрощения разработки и конструкции стековая аппаратура была добавлена в адресное пространство ввода-вывода на системной шине. Контроллер стека имел регистры для четырёх верхних элементов стека. Остальной стек располагался в отдельной области памяти и использовал для обмена DMA. В контроллере выделялись два регистра для отслеживания границ основной области памяти. Контроллер стека использовался для передачи параметров подпрограммам. Выполнять арифметические операции над элементами стека аппаратура не могла.

HP300 & HP3000

Категория: SS1
Реализация: Семейство 16-разрядных миникомпьютеров
Назначение: Многопользовательская машина общего назначения
Кто и когда: Hewlett Packard, 1976-1980's
Публикация: Bartlett ( 1973 ), Bergh & Mei ( 1979 ), Blake ( 1977 )

HP3000 - коммерческая линейка миникомпьютеров, имевших 1-операндную архитектуру. Исходную модель HP300 - можно рассматривать как 3-адресную. Она имела регистры для двух верхних элементов стека. Остальной стек располагался в программной памяти. Позднее HP3000 использовала стеково-аккумуляторную адресацию и буферировала в регистрах 4 элемента стека. Стек имел дополнительные элементы, облегчающие реализацию повторной входимости, рекурсии, совместного использования кода, защиты программ и динамического распределения памяти в многопользовательском окружении. Стек использовался для вычисления выражений, передачи параметров и хранения адресов возврата.

HUT

Категория: MS0
Реализация: 16-разрядная машина на секционных процессорах AM2903
Назначение: Экспериментальное управляющее оборудование для космических аппаратов. Оптимизирован для языка FORTH
Кто и когда: Johns Hopkins University, Applied Physics Laboratory 1982
Публикация: Ballard ( 1984 )

Создавался для управления ультрафиолетовым телескопом HUT в эксперименте Space Shuttle. На момент разработки процессоров, подходящих для этой задачи, среди компонентов для космического использования не существовало, поэтому использовался секционный процессор. Язык FORTH был выбран за простоту реализации, расширяемость и универсальность.

ICL2900

Категория: SS1
Реализация: Семейство миникомпьютеров
Назначение: Вычисления общего назначения
Кто и когда: ICL, 1975
Публикация: Keedy ( 1977 )

Разработчики семейства ICL обращали первостепенное внимание на защиту и совместное использование кода в мультипрограммном окружении, облегчение компиляции и исполнения, а также компактность кода. ICL часто сравнивают с современными им машинами фирмы Burroughs, но параметры компьютеров различаются. Одним из отличий было использование в ICL стеково-аккумуляторной 1-операндной адресной схемы и нескольких специализированных регистров. Это позволяло использовать регистр или память в паре с верхним элементом стека.

INTEL 80x86

Категория: SS2 ( в стековом режиме )
Реализация: Семейство 16- и 32-разрядных микропроцессоров
Назначение: Вычисления общего назначения
Кто и когда: Intel Corporation 1980's
Публикация: Intel ( 1981 )

Линейка, включающая 8088, 8086, 80186, 80286 и 80386, является семейством процессоров общего назначения с регистровой организацией. Для работы со стеком имеются команды «PUSH» и «POP». Многие компиляторы языков высокого уровня создают код, который использует регистр BP в качестве указателя на стековый кадр, содержащий параметры и адрес возврата. Этот режим позволяет рассматривать 80x86 в качестве стекового процессора и включить в список, как вычислительное устройство, допускающее использование в качестве SS2 машины.

INTERNAL MACHINE

Категория: MS0
Реализация: Концептуальный проект
Назначение: Прямое исполнение интерпретируемых языков
Кто и когда: North Electric Co., 1973
Публикация: Welin ( 1973 )

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

IPL-VI

Категория: SS1
Реализация: Концептуальный проект микрокодового интерпретатора
Назначение: Вычисления общего назначения
Кто и когда: Rand Corporation, 1958
Публикация: Shaw et al. ( 1959 )

IPL - серия концептуальных разработок языков программирования высокого уровня. IPL-VI разрабатывался с расчётом на последующую реализацию в качестве интерпретируемого языка с микрокодовой поддержкой. IPL-VI делал упор на продвинутые ( для 1959 года ) структуры данных для нецифровых вычислений, в т.ч. работы со списками. Стек использовался для передачи параметров между подпрограммами. Т.к. вся память в IPL-VI имела структуру элементов списка, стек параметров подпрограмм представлял собой список элементов, каждый из которых указывал на следующую позицию в очереди. Инструкции имели 1-операндный формат.

ITS ( Pascal )

Категория: SS0
Реализация: 16-разрядный микропроцессор
Назначение: Прямое исполнение P-кода языка Pascal
Кто и когда: Nippon Electric Co., 1980
Публикация: Tanabe & Yamamoto ( 1980 )

Проектировался для исполнения P-кода языка UCSD Pascal. Разработчики заявляли кратное увеличение скорости по сравнению с полностью компилируемыми версиями для современных им микропроцессоров ( видимо, имея в виду 8086 ). Кристалл ITS содержал 256-элементный стек, который предположительно использовался только для вычисления выражений. Два верхних элемента для скорости размещались в регистрах.

KDF-9

Категория: ML0
Реализация: 48-разрядный майнфрейм
Назначение: Вычисления на ALGOL общего назначения
Кто и когда: English Electric, 1960
Публикация: Allmark & Lucking ( 1962 ), Duncan ( 1977 ), Haley ( 1962 )

Возможно, KDF-9 был первым стековым компьютером. Его создание было вызвано появлением языка ALGOL-60. Именно на этой машине впервые появились элементы конструкции, повторённые на современных компьютерах. KDF-9 имел стек для вычисления выражений, через который можно было передавать параметры при вызове, и отдельный стек для адресов возврата. К сожалению, из-за технологических ограничений стеки имели глубину всего 16 элементов ( собирались на магнитных кольцах ). Проблема заключалась в том, что, хотя 16 элементов вполне хватало для разбора выражений, компилятор языка ALGOL также был ограничен стеком глубиной 16 элементов, что очень сильно замедляло компиляцию.

KOBE UNIVERSITY MACHINE

Категория: ML0
Реализация: 16-разрядный компьютер с перезаписываемой управляющей памятью на секционном AM2903
Назначение: Академические исследования
Кто и когда: Kobe University, Kobe Japan, 1983
Публикация: Kaneda et al. ( 1983 ), Wada et al. ( 1982a ), Wada et al. ( 1982b )

Проектировался для эффективного исполнения программ на FORTH и Pascal на стековой машине. FORTH исполнялся за счёт реализации примитивов в микрокоде. Pascal работал на эмуляторе UCSD P-кода. Машина имела отдельный блок памяти данных в дополнение к памяти программ.

LAX2

Категория: SS0
Реализация: Микрокодовый интерпретатор на Varian V73
Назначение: Экспериментальный
Кто и когда: Group for Datalogical Research & Royal Institute of Technology, Sweden, 1980
Публикация: Bage & Thorelli ( 1980 )

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

LILITH

Категория: ML1/MS1
Реализация: 16-разрядный процессор на секционном AM2901
Назначение: Прямое исполнение M-кода языка Modula-2 и интерактивный интерфейс пользователя
Кто и когда: ETH ( Swiss Federal Institute of Technology ), 1979
Публикация: Ohran ( 1984 ), Wirth ( 1979 )

Lilith - машина, созданная Никлаусом Виртом для прямого исполнения языка Modula-2. Цель создания - эффективность исполнения Modula-2 и поддержка интерактивного интерфейса пользователя. Для сокращения объёма кода использовалась стековая архитектура. Имела два стека: в программной памяти для передачи параметров и аппаратный для вычисления выражений. Набор инструкций стековый с возможностью чтения любого элемента в стеке параметров в паре с верхним элементом вычислительного стека.

LISP MACHINES

Категория: ML1
Реализация: Самые разные машины
Назначение: Работа со списками, исследования искусственного интеллекта
Кто и когда: Разные компании ( такие как Symbolics )
Публикация: Lim ( 1987 ), Moon ( 1985 ), Sansonnet et al. ( 1982 )

Архитектура LISP-машин - серьёзная тема, заслуживающая отдельного рассмотрения. Здесь просто приводятся некоторые из общих характерных черт таких процессоров. LISP-машины тяготеют к мультистековой конфигурации и 1-адресному ( со смещением от верхнего элемента стека ) формату инструкций. Некоторые модели имеют большие аппаратные стеки ( свыше 1k слов ), которые могут сбрасываться в программную память. Здесь очень важны вызовы процедур, т.к. использование рекурсии при обходе списков - обычное дело. Такие машины сохраняют элементы данных в памяти, имеющей механизм сбора мусора.

MCODE

Категория: SS1
Реализация: Не указана
Назначение: Исполнение M-кода Modula-2 ( StarMod диалект )
Кто и когда: University of Wisconsin - Madison, 1980
Публикация: Cook, R. & Donde, N. ( 1982 ), Cook, R. & Lee, I. ( 1980 )

Проектировалась для исполнения M-кода языка Modula-2, который получался при компиляции диалекта StarMod. Основывалась на конструкции Таненбаума EM-1 , но вводила некоторые улучшения, помогающие решить проблемы, возникающие в реальных компьютерах. Одним из таких изменений было введение инструкции, которая изменяла тип данных ( целое, с плавающей запятой и т.д. ) для всех последующих операций.

MESA

Категория: SS0
Реализация: Серия рабочих станций
Назначение: Графические рабочие станции ( модели Alto, Dorado )
Кто и когда: Xerox Office Products Division, 1979
Публикация: Johnsson & Wick ( 1982 ), McDaniel ( 1982 ), Sweet & Sandman ( 1982 )

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

MF1600

Категория: ML0
Реализация: 16-разрядная машина на дискретной ТТЛ логике
Назначение: Вычисления общего назначения
Кто и когда: Xycom & Advance Processor Designs, 1987
Публикация: Burnley & Harkaway ( 1987 )

Процессор, стоявший в устройстве Xycom XVME-616, представлял собой высокопроизводительную FORTH-машину, собранную на микросхемах быстрой ТТЛ логики. Имела 16-разрядные шины передачи данных и микрокодовое ПЗУ, которое разработчик мог модифицировать под конкретный круг задач.

MICRO-3L

Категория: SL1
Реализация: Симулятор
Назначение: Функциональное программирование
Кто и когда: University of Utah, 1982
Публикация: Castan & Organick ( 1982 )

Проект использовал 3L-модель для задания процессора, который бы хорошо подходил для работы со списками. Проект предполагал создание многопроцессорной системы для исполнения функциональных языков. Каждый MICRO-3L процессор использовал 256-элементный регистровый файл. 128 регистров предполагалось использовать под стек адресов возврата. При переполнении он должен был скидываться в основную память. Работа с данными велась с использованием аккумулятора и операнда из нижних 128 элементов регистрового файла.

MICRODATA 32/S

Категория: SS0
Реализация: Микрокод для 16-разрядного регистрового миникомпьютера
Назначение: Работа на диалекте PL/I
Кто и когда: Microdata Corporation, 1973
Публикация: Burns & Savitt ( 1973 )

Microdata 32/S была версией Microdata 3200 - миникомпьютера общего назначения с дополнительным микрокодом, реализующим стековые инструкции. Система 3200 представляла собой 16-разрядный миникомпьютер, построенный на дискретной ТТЛ логике. Обоснованием добавления стековых компонентов была невозможность получения эффективного кода от имевшихся компиляторов. Стековая архитектура облегчала кодогенерацию. Причиной важности эффективного кода было стремление избавиться от программирования на ассемблере. Стек в основной памяти использовался для вычисления выражений и передачи параметров. Четыре верхних элемента буферировались в регистрах.

MISC M17

Категория: MS0
Реализация: 16-разрядный процессор
Назначение: Недорогая схема для управления в реальном времени
Кто и когда: Minimum Instruction Set Computer, Inc., 1988
Публикация: MISC ( 1988 )

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

MOTOROLA 680x0

Категория: MS2 ( в стековом режиме )
Реализация: Семейство 32-разрядных микропроцессоров
Назначение: Вычисления общего назначения
Кто и когда: Motorola Corporation 1980's
Публикация: Kane et al. ( 1981 )

Семейство микропроцессоров, включающее 68000, 68010, 68020 и 68030 с регистровой архитектурой общего назначения. Регистры делились на две группы: адресные и регистры данных. Адресные регистры поддерживали постинкрементный и предекрементный режим адресации, что позволяло иметь в системе до 8 стеков, по одному стеку на регистр. По соглашению регистр A7 использовался в качестве указателя на стековый кадр в большинстве компиляторов. Естественно, почти никто не использовал 680x0 как мультистековую машину, но так или иначе такая возможность имеется.

MU5

Категория: SS1
Реализация: Миникомпьютер
Назначение: Исследования
Кто и когда: University of Manchester, 1971
Публикация: Morris & Ibbett ( 1979 )

MU5 использовал 1-операндный формат инструкций и один стек в программной памяти. Стековые инструкции использовались для облегчения кодогенерации, уменьшения размеров программ и упрощения аппаратуры. Интересной особенностью были 5 регистров, доступных программисту, причём все они были регистром «вершина стека». Команда, размещающая в регистре данные, автоматически сохраняла предыдущее значение в общем стеке. Такой вариант отличается от пяти верхних элементов стека, доступных в качестве регистров.

NC4016

Категория: ML0
Реализация: 16-разрядный процессор
Назначение: Управление в реальном времени, прямая поддержка языка FORTH
Кто и когда: Novix, 1985
Публикация: Golden et al. ( 1985 ), Jennings ( 1985 ), Miller ( 1987 ), Novix ( 1985 )

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

NORMA

Категория: SL0
Реализация: Экспериментальная машина
Назначение: Функциональное программирование, сокращение графов
Кто и когда: Burroughs Corporation Austin Research Center, 1986
Публикация: Scheevel ( 1986 )

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

OPA ( Pascal )

Категория: ML0
Реализация: Эмулятор для машины Lilith
Назначение: Поддержка программирования на языках Pascal и Modula-2
Кто и когда: Federal Institute of Technology, Zurich, 1984
Публикация: Schulthess ( 1984 )

OPA создавался для эффективного исполнения компилированного кода языка Pascal. Имел три стека: один для вычисления выражений, один для сохранения параметров подпрограмм и один для адресов возврата. Набор инструкций OPA заявлялся как «компактный язык высокого уровня», т.к. некоторое количество команд поддерживало конструкции языка Pascal.

PASCAL MACHINE

Категория: ML0
Реализация: Экспериментальный процессор
Назначение: Прямое исполнение исходного текста Tiny-Pascal
Кто и когда: University of Maryland, 1981
Публикация: Lor & Chu ( 1981 )

Интерактивная P-машина для прямого исполнения исходных текстов на языке Pascal. Система включает аппаратную реализацию исполнительного и компилирующего устройства, поэтому аппаратных стеков в системе достаточно. Стеки используются для хранения адресов возврата, последовательности операторов, вычисляемых значений и уровней вложенности программ. Выражения вычисляются по мере интерпретации, поэтому работа исполнительного модуля ничем не отличается от 0-операндной стековой архитектуры.

PDP-11

Категория: MS1 ( в стековом режиме )
Реализация: Семейство мини и микрокомпьютеров ( позднее семейство VAX )
Назначение: Миникомпьютер общего назначения
Кто и когда: Digital Equipment, 1970
Публикация: Bell et al. ( 1970 )

DEC PDP-11 один из первых компьютеров общего назначения с регистровой архитектурой получивший возможность работы со стеком. Хотя машина была чисто регистровой, ей были приданы некоторые возможности, свойственные 1-адресной стековой архитектуре. Благодаря косвенной регистровой адресации с авто постинкрементом и предекрементом, регистр общего назначения легко превращался в указатель стека. В PDP-11 был и настоящий указатель стека, который использовался в прерываниях, исключениях и вызовах подпрограмм. Позднее в линейке VAX появилась аппаратная поддержка динамического управления стековым кадром для одного стека. Опция предназначалась для языков с блочной структурой. PDP-11 - регистровая машина общего назначения, но публикация Белла рассказывает, как её можно использовать в режиме MS1 .

POMP PASCAL

Категория: SS1
Реализация: Секционный процессор ( AMD 290x )
Назначение: Исследования промежуточных представлений для языков с блочной структурой
Кто и когда: Stanford University, 1980
Публикация: Harris ( 1980 )

POMP использовал секционные процессоры для исполнения стекового кода. Такой код был выбран, чтобы сократить размер программ, и позволял получить 3-8 кратный выигрыш по сравнению с традиционными компиляторами. Фактически по заявлениям разработчика он всего в 1.5 раза проигрывал идеальному энкодеру DEL Флинна, но был гораздо удобнее для декодирования, т.к. работал в байтовом формате. Стековая машина могла использовать до 8 локальных переменных, что превращало её в 1-операндную.

PSP

Категория: ML2
Реализация: Проект архитектуры
Назначение: Вычисления общего назначения
Кто и когда: University of Illinois, 1985
Публикация: Eickemeyer & Patel ( 1985 )

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

PYRAMID 90X

Категория: SL2
Реализация: 32-разрядный миникомпьютер
Назначение: RISC процессор общего назначения
Кто и когда: Pyramid Technology, 1983
Публикация: Ragan-Kelley & Clark ( 1983 )

Это первый коммерческий процессор, имевший многие признаки RISC. Он использовал регистровый стек [* наверно, «регистровый файл» ] , организованный в виде 16 не перекрывающихся окон по 32 регистра и 16 глобальных регистра, всего 528 штук. Содержимое регистров скидывалось в память, если глубина вложенности превышала 15 уровней.

QFORTH

Категория: ML0
Реализация: Архитектурные изыскания
Назначение: Прямая поддержка языка FORTH
Кто и когда: Queens College of CUNY, 1984
Публикация: Vickery ( 1984 )

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

REDUCTION LANGUAGE MACHINE

Категория: ML0
Реализация: Лабораторная модель
Назначение: Исполнение программ на сокращающем языке ( reduction language )
Кто и когда: GMD Bonn, 1979
Публикация: Kluge & Schlutter ( 1980 )

Сокращающий язык ( Reduction language ) использует структуры вида «применить <функция> к <аргумент>». Такие структуры хорошо ложатся на деревья, в которых функциональные узлы имеют потомков в виде операндов. Т.к. исполнение программы означает обход таких древовидных структур, главная роль отводится трём стекам. Один служит источником данных программы, второй - результатом её работы, а в третьем вычисляются выражения. Интересной особенностью является отсутствие программной памяти, причём функционирование машины не подразумевает понятия «адрес». Все программы занимаются перекидыванием содержимого между стеками исходных и результирующих данных.

REKURSIV

Категория: ML0
Реализация: Комплект из 3 микросхем
Назначение: Объектно ориентированное программирование
Кто и когда: Linn Products, 1984-88
Публикация: Pountain ( 1988 )

Создан для быстрого исполнения объектно-ориентированных программ. Поддерживает набор команд очень высокого уровня, который может расширяться внешним микрокодом. Снабжён сложной системой управления памятью. Имеется стек для вычисления выражений и стек адресов возврата для микрокодовых подпрограмм.

RISC I

Категория: SL2
Реализация: 32-разрядный микропроцессор
Назначение: Исполнение программ на Си и других языках высокого уровня
Кто и когда: University of California, Berkeley, 1981
Публикация: Patterson & Piepho ( 1982 ), Patterson & Sequin ( 1982 ), Sequin & Patterson ( 1982 ), Tamir & Sequin ( 1983 )

Первый хорошо документированный RISC компьютер. Большая часть его производительности была следствием использования регистрового окна. «Золотой» чип RISC I использовал схему перекрывающихся регистровых окон и 78 регистров. В каждый момент времени было доступно 32 адресуемых регистра, из них: 10 глобальных, 6 общих с вызывающей программой, 10 приватных и 6 для передачи параметров на следующий уровень вложенности. Доступ к регистрам выполняется 2-операндными инструкциями ( регистр-регистр ). RISC I допускает обращение к регистрам как к ячейкам памяти, автоматически отображая адреса памяти на область регистров. Это решает проблемы адресации могущие возникнуть в языках типа Pascal.

ROCKWELL MICROCONTROLLERS

Категория: MS0
Реализация: Микропроцессоры 6502 и 68000 с языком FORTH в ПЗУ
Назначение: Встраиваемые системы с управляющим языком FORTH
Кто и когда: Rockwell International, 1983
Публикация: Dumse ( 1984 )

Строго говоря, это не аппаратные стековые машины, а обычные микроконтроллеры, исполняющие эмулятор FORTH как приложение в ПЗУ. R65F11 из семейства 6502 и F68K из семейства 68000 - микропроцессоры с фабричной прошивкой примитивов FORTH. Микросхемы вполне успешно эмулируют двухстековую архитектуру FORTH-машины, используя переменные и программную память. С тех пор появились и другие микропроцессоры/ микроконтроллеры с прошитыми на фабрике примитивами FORTH, но Rockwell был первым.

RTX 2000

Категория: ML0
Реализация: 16-разрядный микропроцессор
Назначение: Полузаказной кристалл для специального применения, оптимизированный под исполнение языка FORTH
Кто и когда: Harris Semiconductor, 1987-89
Публикация: Danile & Malinowski ( 1987 ), Harris Semiconductor ( 1988a ), Harris Semiconductor ( 1988b ), Jones et al. ( 1987 )

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

RTX 32P

Категория: ML0
Реализация: 32-разрядный процессор
Назначение: Управляющие и экспертные системы реального времени
Кто и когда: Harris Semiconductor and WISC Technologies, 1987-89
Публикация: Koopman ( 1987c ), Koopman( 1987d ), Koopman ( 1989 )

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

RUFOR

Категория: ML0
Реализация: 16-разрядная машина на секционном процессоре AM2901
Назначение: Исследовательская модель для языка FORTH
Кто и когда: Wright State University, 1984
Публикация: Grewe & Dixon ( 1984 )

RUFOR - обычный секционный процессор, оптимизированный под исполнение программ на FORTH. Имеет два аппаратных стека: для данных и для адресов возврата. Вершина каждого стека расположена в одном из внутренних регистров AM2901, поэтому АЛУ требуется только одна входная и одна выходная шина.

SF1

Категория: ML2
Реализация: 32-разрядный микропроцессорный комплект из 3 микросхем
Назначение: Поддержка языков высокого уровня для управления в реальном времени
Кто и когда: Wright State University, 1987-88
Публикация: Dixon ( 1987 ), Longway ( 1988 )

SF1 - экспериментальная мультистековая модель, проектировавшаяся под языки высокого уровня, включая FORTH и Си. Данная реализация имеет 5 стеков, два из которых могут выбираться как источник и приёмник для инструкции. Обеспечивает прямое обращение к верхним элементам стека через 13-разрядный указатель относительно верхнего элемента.

SOAR

Категория: SL2
Реализация: Микропроцессор
Назначение: Поддержка языка Smalltalk-80
Кто и когда: University of California, Berkeley, 1984
Публикация: Bush et al. ( 1987 )

Проект SOAR - модифицированная для поддержки Smalltalk-80 архитектура Berkeley RISC II. Smalltalk-80 - стековый байт-ориентированный язык. Задача заключалась в отображении стекового кода на RISC с перекрывающимся регистровым окном. Окно имело размер всего 16 регистров, что в два раза меньше, чем у RISC II, т.к. методы Smalltalk в среднем имеют меньший размер, чем процедуры в обычных языках.

SOCRATES

Категория: ML2
Реализация: Концептуальный проект
Назначение: Использование в качестве основной программной памяти на ЦМД
Кто и когда: University of Massachusetts/Amherst, 1975
Публикация: Foster ( 1975 )

SOCRATES проектировался в расчёте на использование памяти на цилиндрических магнитных доменах в качестве основной. На момент разработки предполагалось, что такая память будет в 100 раз дешевле других технологий в пересчёте на бит. Проблема состояла в последовательном доступе к её элементам. SOCRATES использовал это свойство как преимущество, собрав 64 32-разрядных регистра, где каждый регистр был вершиной блока ЦМД памяти объёмом 32k слов, сконфигурированной как LIFO стек. [* Я не понял описания. То ли речь о 64 стеках по 32k ( вряд ли - слишком много памяти ), то ли об одном стеке на 32k , у верхнего элемента которого 64 синонимичных регистра, как в MU5 , то ли об одном стеке на 32k , 64 верхних элемента которого доступны в качестве регистров, но как тогда с последовательным доступом?
«SOCRATES took advantage of this situation by proposing 64 addressable registers of 32 bits, with each register being the top element of a 32K word bubble memory configured as a LIFO stack» ]
.

SOVIET MACHINE

Категория: ML1
Реализация: Концептуальный проект
Назначение: Исполнение программ на языках с блочной структурой
Кто и когда: Academy of Sciences of the USSR, 1968
Публикация: Myamlin & Smirnov ( 1969 )

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

SYMBOL

Категория: MS0
Реализация: Прототип на дискретных ТТЛ микросхемах
Назначение: Исследования
Кто и когда: Iowa State University, 1971
Публикация: Ditzel & Kwinn ( 1980 ), Hutchison & Ethington ( 1973 )

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

TRANSPUTER

Категория: SS0
Реализация: Семейство 16- и 32-разрядных процессоров
Назначение: Параллельные вычисления
Кто и когда: INMOS Limited, 1983
Публикация: Whitby-Strevens ( 1985 )

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

TM

Категория: ML0
Реализация: Симулятор
Назначение: Исследования
Кто и когда: Carnegie Mellon University, 1980
Публикация: Harbison ( 1982 )

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

TREE MACHINE

Категория: MS0
Реализация: Концептуальный проект
Назначение: Исполнение языков с блочной структурой
Кто и когда: Massey University, New Zealand, 1971
Публикация: Doran ( 1972 )

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

VAUGHAN & SMITH'S MACHINE

Категория: ML0
Реализация: Концептуальный проект
Назначение: Поддержка исполнения FORTH
Кто и когда:
Публикация: Vaughan & Smith ( 1984 )

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

WD9000 P-ENGINE

Категория: SS0
Реализация: Набор из 5 микросхем
Назначение: Прямое исполнение P-кода языка Pascal
Кто и когда: Western Digital, 1979
Публикация: O'Neill ( 1979 )

Чипсет разработан для исполнения P-кода языка Pascal. P-код подразумевает единственный стек, поэтому процессор имеет один стек в программной памяти для вычисления выражений и передачи параметров.

WISC CPU/16

Категория: ML0
Реализация: 16-разрядный процессор на дискретных микросхемах ТТЛ
Назначение: Стековые вычисления
Кто и когда: WISC Technologies, 1986
Публикация: Haydon & Koopman ( 1986 ), Koopman ( 1986 ), Koopman ( 1987b ), Koopman & Haydon ( 1986 )

Процессор на основе языка FORTH с микрокодом пользователя. Имел стек данных и стек возврата и, кроме того, 2K 30-битной перезаписываемой памяти для хранения микрокода. Архитектура универсального вида, позволявшая использование языков помимо FORTH. Наличие интерактивного пошагового режима позволяло использовать конструкцию в качестве учебного пособия.

WISC CPU/32

Категория: ML0
Реализация: 32-разрядный процессор на дискретных ТТЛ микросхемах
Назначение: Управление в реальном масштабе времени
Кто и когда: WISC Technologies, 1986-87
Публикация: Koopman ( 1987c ), Koopman( 1987d )

Прототип для Harris RTX 32P . Harris RTX 32P и WISC CPU/32 совместимы по набору инструкций и микрокоду.

Прочие источники

Bulman ( 1977 ):
Общий обзор стековых архитектур с упором на B5500 и HP3000. Рассматриваются также Data General Eclipse и PDP-11 в качестве обычных машин, поддерживающих некоторые стековые возможности.

Carlson ( 1975 ):
Хорошее описание различных компьютерных архитектур для языков высокого уровня, многие из которых стековые.

Doran ( 1975 ):
Обзор стека для разбора инструкций, обхода деревьев и сохранения адресов возврата с упором на архитектуру Burroughs.

McKeeman, W. ( 1975 ):
Подробное рассмотрение работы стековых компьютеров и роли стеков в вычислениях общего вида.

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

Siewiorek, Bell & Newell ( 1982 ):
Публикация об архитектуре компьютеров. Содержит много материалов по стековым машинам.

Yamamoto, M. ( 1981 ):
Самый большой список машин для языков высокого уровня созданных в Японии. Много стековых.

Previous part:

Next part: