Chuck Guzis wrote:
All of which to my original point, looks to be a
non-sequitur.
Indeed!
Somehow you started out with the "It has to have a 3-address to be fast"
and "how would you do vector math on a stack machine" argument, and now
you change your song when the very thing I've pointed to showed you a
stack architecture that uses a 3-address mode? And one that beats out a
very similar other machine at that!
Nice try! I suppose this kind of cut and run tactic must work on some
folks. ;-)
Speaking of vectors, have you heard about
http://www.sun.com/processors/vis/ - yeah, that's an extension to the
UltraSPARC line. :-D
Give me an example of a supercomper using a stack
architecture.
Certainly, I can emulate any kind of architecture using any other
(complete) architecture--I should hope so!
I'm sorry, how's that again? Who spoke of emulation? :-)
But when raw performance counts (i.e. supercomputers)
why are there
no examples of stack machines? The architecture's been around long
enough; implementors have pretty much a free hand with architecture;
customers don't care what the ISA is--so where are all of the high-
performance stack supercomputers?
Ask supercomputer designers, I'm not one of them, and no familiar with
what's out there. It doesn't matter that much anyway since a lot of
supercomputers today are built from common off the shelf microcomputer
CPU's.
That said, I just showed you two very similar 32 bit architectures of
the same era that ran the very same OS and were meant for the same
purpose: PDA's. They aren't mainframes or supercomputers, they're
micros. They were built to run the same OS and have very similar
hardware, right down to the RF based digitizer tablet.
The type of computer doesn't matter. The basic principles of all
computers have a lot in common. What you see on supercomputers, you'll
see on microcomputers within reason. Even today, you see multi-core CPU
machines that were you to compare with past supercomputers, would pass
for such to some extent. They all have ALU's, FPU's, MMU's, RAM, disks,
networking, buses, multiple CPU's, I/O devices, etc. They're all computers.
You've conveniently ignored the data point where a stack machine beat
out a very similar non-stack machine, and retreated to the supercomputer
realm. This isn't analogous to the some species of well written
interpreter beat some species of poorly implemented compilers. These
two machines are very similar and run the same OS. Yet, one beat out
the other.
You can speak of performance in one area or another, but claiming that a
machine that lacks a vector unit, but uses a stack architecture is
slower than a machine with a vector unit and uses a register file is a
very poor argument. There's nothing to prevent you from building a
stack machine that has a vector unit.
Of course, for vector math, a vector unit speeds things up, but what if
you don't need to do vector math? What if your benchmark is deep
recursion, not iteration?
Of course a 3-address Instruction Set easier to write a compiler for
than 2-address instruction set. But then, in the same way, so is a
stack machine's ISA a lot easier to write an optimizing compiler than on
a machine that has a plain register file and no register windows. And
yes, having a vector unit makes code that uses it much faster, as does
having an FPU make floating point code faster.
Back to the PenPoint machines: The one machine with the stack
architecture outperformed the one without. The one with the stack
architecture does infact have the ability to use 3 operands. One of
them was implied, but also lives on the stack. It met ALL of your
requirements save the supercomputer one, which I find specious. I'll
address that in the very next paragraph:
Another CPU I've mentioned, the SPARC, is similar to a stack machine in
it's use of register windows, and does use 3 operands in its opcodes.
In fact SPARC chips are used in supercomputers: Fujitsu PRIMEPOWER
HPC2500. So I'm sure you'll find a reason as to why this doesn't fit
your request to be shown a stack architecture based supercomputer, and
you'd be right as the SPARC isn't a stack architecture. But, in regards
to this discussion, it sure quacks like a duck and has the same kinds of
feathers. :-) A canard perhaps? 8^)
This isn't to say that every stack machine architecture will beat every
other non-stack architecture at all jobs. The assertion here is only
that a that a well designed stack machine will outperform a well
designed non-stack machine with similar other features in one specific
area: function calls. Period.
I don't believe that I've asserted anything else in this discussion, and
I believe that whether on a supercomputer, mainframe, mini,
microprocessor, or microcontroller the above statement will hold.