Почему стековые машины

Почему стековые машины?

Why Stack Machines?

1

Оригинал статьи находиться по адресу.

(A Usenet posting that was printed in Usenet Nuggets, Computer Architecture News, Vol. 21, No. 1, March 1993)

(Сообщение Usenet, напечатанное в Usenet Nuggets, Computer Architecture News, Vol. 21, No. 1, Март 1993)

2

This is a consolidated attempt to address some of the points people have been bringing up about stack-based architectures. It's written from the point of view of someone who has actually made a living designing and selling them (first with WISC Technologies, later with the Harris Semiconductor RTX family).

Это попытка обобщить точки зрения людей, разработавших рабочие конструкции, продавцов на стековую архитектуру (в первую очередь WISC Technologies и в последнюю семейство Harris Semiconductor RTX).

3

Передача параметров

Pipelining

4

Stack processors don't need to be pipelined for ALU and operands, because the operands are immediately available in the top of stack buffer registers. Access to the on-CPU stack RAM can be completely hidden by pipelining. Access to off-chip memory is typically not pipelined in current implementations, but can be (P. Koopman, "Some Ideas for Stack Computer Design", 1991 Rochester Forth Conference, Pg. 58). It makes sense that the false dependencies introduced by stack addressing could be overcome with a superscalar implementation if one were so inclined (but, I'm not).

Стековые процессоры не нуждаются в специальных средствах передачи параметров между АЛУ и операндами, т.к. параметры сразу же доступны в буферных регистрах стека. Доступ к внешней стековой памяти может полностью скрыт. Доступ к внешней стековой памяти для передачи параметров в текущих реализациях не реализован, но может быть (P. Koopman, "Некоторые идеи проектирования стековых процессоров", 1991 Rochester Forth Conference, Pg. 58). Это может иметь смысл, если склоняться к том что стековая адресация ухудшает возможности суперскалярной реализации (но я так не думаю)

5

Размер стека и прерывания

Stack Size and Interrupts

6

On-chip stack buffers only need to be about 16 deep. Spilling can be done by stack overflow interrupts (or, for that matter, statically scheduled by the compiler the same as register spills). Cost for interrupt-driven overflows is less than 1% for only 16 registers and essentially 0% for 32 registers for reasonable programs (P. Koopman, Stack Computers, pp.139-146).

Внутренние стековые буферы обычно требуют только около 16 ячеек. Интенсивное переключение может вызвать переполнение стека прерываний (или, в этом отношении, статическое распределение компилятора вызовет тежи проблемы). Вероятность переполнения стека прерываний приблизительно 1% для 16 регистров и приблизительно 0% для 32 регистров для корректно написанных программ (P. Koopman, Стековые процессоры, стр.139-146).

7

A neat thing about stack CPUs is that context switching for interrupts takes essentially zero time -- no registers need to be saved; you just put the ISR values onto the top of the stack and clean them off when you're done (presumes enough stack space is available -- no big deal to arrange). (P. Koopman, Stack Computers, pp. 146-152.)

Изящество стековых CPU в том, что переключение контекста при прерывании почти не занимает время -- нет регистров которые необходимо бы было сохранять; вам нужно положить только на вершину стека значения ISR и удалить их по окончании (предполагается что стекового пространства достаточно -- не предпринимать больших усилий по размещению). (P. Koopman, Стековые процессоры, стр. 146-152.)

8

Размер программ

Program Size

9

Program size doesn't matter (much) for workstations. But, for embedded control it matters a lot, especially when you're limited to on-CPU chip memory, and the CPU has to cost less than $5-$10. Anecdotal evidence indicates stack computer program size can be smaller than CISC programs by a factor of 2.5 to 8 (and, another factor of 1.5 to 2.5 smaller than RISC, depending whom you want to believe). This comes not just from compact opcodes, but also from reuse of short code segments and implicit argument passing with subroutine calls. Code size comparisons I've seen don't take this into account. (P. Koopman, Stack Computers, pg.118-121.)

Размер программ несущественен (относительно) для компьютеров. Но для встроенных устройств это существенно, особенно когда вы ограничены встроенной памятью в чип и когда процессор должен стоить менее чем 5-10 долл. Практика споказывает, что программы для стековых процессоров меньше аналогичных для CISC процессоров от 2.5 до 8 раз (и меньше от 1.5 до 2.5 раз относительно RISC-программ, в зависимости от того кому вы доверяете). Это достигается не только за счет компактных опкодов, но и также за счет повтороного использования коротких фрагментов кода и неявной передачи аргументов в подпрограммы. Я не вижу необходимости здесь проводить сравнение размеров кода. (P. Koopman, Стековые процессоры, стр.118-121.)

10

Компиляторы

Compilers

11

Stack compilers aren't currently very efficient -- but that's because no-one has really tried all that hard. I've published an algorithm and experimental results that suggest that stacks can be made about as efficient as registers in terms of keeping local variables at the top level of the memory hierarchy. The work is based on GNU C intermediate code (P. Koopman, A preliminary exploration of optimized stack code generation", Journal of Forth Applications and Research, 6(4), 1994.)

Стековые компиляторы не являются в настоящее время очень эффективными -- ?????. Я опубликовал алгоритмы и результаты экспериментов, которые свидетельствуют о повышении ????? Эта работа базируется на промежуточном коде GNU C (P. Koopman, редварительное исследование оптимизации генератора стекового кода", Journal of Forth Applications and Research, 6(4), 1994.)

12

Applications

13

Overall, I'd say that stack machines are an excellent fit for high performance in a low cost system (not necessarily highest performance given unlimited cost). They should do especially well in embedded applications.

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

14


Phil Koopman -- koopman@cmu.edu

Ссылки Начало  
Copyright © Alex Furashev 2004

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

Hosted by uCoz