I was bored yesterday, and started googling around for the performance of various well-received mainframe computers "back in the day."
To my shock and horror, I discovered two things:
* VAX 11/780 (one of my personal favorite computers to work with, BTW) ran at 1 MIPS.
* IBM System/370-158 ran at 1 MIPS.
These two computers were world-class machines, both considered mainframes (the VAX was marketed as a "super-mini", but let's be realistic, it is a freakin' mainframe!), and both of which ran large-scale enterprises for decades.
I remember (quite fondly) using the 11/780 while attending MVCC. I remember a whole class of people using the computer concurrently during our lab session, and I know for a fact no less than four concurrent labs were in session with mine. That's a total of no less than (20 students times 4 labs) 80 concurrent, interactive user sessions, plus the printers, running compilers, and so on.
All this, on a CPU that is, in essence, a 1MHz CPU.
**WOW**.
The key, of course, is two-fold -- you need an operating system that is designed for real-time processing, which VMS certainly was. Absolutely no I/O API was blocking at the kernel level, and any blocking API you might have used were always implemented as user-level libraries that abstracted the QIO interface on your behalf. Additionally, the underlying hardware was virtually entirely built around DMA.
I should point out that the I/O architecture on "real Mainframes" like the System/3*0 series are, pretty much, indistinguishable from contemporary buses like USB or (especially) Firewire -- DMA driven, high throughput, heavily reliant on interrupts, heavy reliance on CRCs or, in some cases, even ECC codes, etc.
So, this got me thinking about the 6502 and 65816. Here are processors that are capable of keeping up with these otherwise awesome behemoths. Due to the 8-bit bus width, you'll need to drive the clock speed correspondingly higher. A 4MHz 6502 _should_ be able to compare, more or less, in the same ballpark as a VAX 11/780 or S/370-158 in terms of raw processing power (single-threaded). A 3MHz 65816 should be able to compare as well (multitasking).
BTW, I qualified the 6502 and 65816 as single- or multi-tasking because of the ease with which you can switch tasks on each. The 6502 isn't quite so easy -- to run comparable applications on a 6502, assuming an infinite memory space at your disposal, you still have to physically copy the stack and zero pages. (However, you can use external logic to remap those pages.) The 65816 allows you to use a (larger) stack located anywhere in bank 0, and bank-0-configurable "direct" page as well. Heck, the 65816 even has the same address space as a System/360, and like the later versions of the 360, can be augmented with an external address translation unit.
Maybe, when I'm done with my current array of projects, I'll resume work on the Kestrel and build it out as a "personal mainframe," relying on a plurality of I/O processors to implement high I/O throughput. Why? Well, why not?
![Smile :)](./images/smilies/icon_smile.gif)
It wouldn't be a hobby if I had a reason for it.