1.1 Общий обзор
==15
Аппаратные стеки - буфера типа «последний вошёл, первый вышел» ( LIFO ) - используются в компьютерах с конца 1950-х годов. Изначально они добавлялись для увеличения эффективности исполнения высокоуровневых языков таких, как ALGOL. С тех пор стеки входили и выходили из моды у разработчиков вычислительных устройств, пока в конечном итоге не начали встраиваться в качестве вспомогательной структуры хранения данных в большинство компьютеров. К разочарованию адептов, машины с аппаратным стеком в качестве основного механизма обработки данных на самом деле никогда не имели столь широкого распространения, каким пользовались машины с регистровой организацией.
С появлением процессоров с очень большой степенью интеграции ( VLSI ) обычные методы разработки вычислительных машин были в очередной раз пересмотрены. Компьютеры со сложным набором команд ( CISC ) эволюционировали в сложные процессоры с универсальными инструкциями. В противоположность этому, на пути увеличения скорости выполнения программ компьютеры с сокращённым набором команд ( RISC ) стали использовать упрощённые процессорные ядра.
Теперь вновь пришло время обсудить стековые машины, как альтернативу другим направлениям проектирования. Технология VLSI даёт проектировщику новые возможности, отсутствовавшие ранее. За счёт комбинирования свойств новые стековые машины достигают впечатляющего сочетания скорости, гибкости и простоты.
Процессорная часть стековых машин гораздо проще, чем в CISC архитектуре, а общая сложность системы ниже, чем у RISC или CISC машин. Такие особенности и хорошая базовая производительность не требуют сложных компиляторов или кэш-контроллеров [* достаточно спорное утверждение ] . Кроме того, такие машины имеют сравнимое общее быстродействие при меньшей стоимости или большую производительность при одинаковых затратах в большинстве программных сред. Их первой удачной областью применения стала встроенная аппаратура управления, работающая в режиме реального времени, где стековые машины далеко превзошли результаты прочих архитектур. Стековые машины удобны для исполнения программного кода логических языков таких, как Prolog, функциональных языков, подобных Miranda или Scheme и языков искусственного интеллекта, типа OPS-5 и Lisp.
==16
Главным отличием новой волны стековых машин от предыдущих поколений является существенное удешевление памяти, используемой для построения собственно стека. Там, где раньше очереди организовывались в основном в программной памяти, современные процессоры используют отдельные микросхемы памяти или даже отдельную область памяти на кристалле процессора. В стековых машинах чрезвычайно быстро выполняются вызовы подпрограмм или обработчиков прерываний и переключаются задачи. Собранные воедино эти качества позволяют создавать многоцелевые быстрые и компактные вычислительные системы.
В этой части мы начнём обсуждение роли стеков в процессе исполнения программ. В следующих частях дополним его классификацией стековых архитектур, описанием абстрактной стековой машины и нескольких коммерческих моделей, ознакомимся с результатами исследования их производительности, рассмотрим рекомендации по аппаратному и программному обеспечению и сделаем прогноз возможных путей развития конструкции стековых машин.
==16