A description of my Mini-Computer




My mini-computer.


I've always wanted a mini-computer. So I made one.

For those of you born after about 1975 you might think a mini-computer is just a small computer. So, a little history.

The first computers were huge and full of vacuum tubes. Many took up an entire building. Later, they got smaller. IBM made some and they were called Main Frames. They were leased to big corporations for thousands of $$ every month. No one could afford to buy them. Main Frame computers are still used for large companies like airlines and the government.

In the early to mid 1960's along came DEC (Digital Equipment Corporation). They made small computers that companies could actually buy. They were the price of a small house, but they could still be bought.

One of the first really useful Mini's was DEC's PDP-8. It had a single processor, 4K of magnetic core memory, and some basic I/O including a front panel to set up the initial boot program. They had paper tape readers and writers and tape drives. And teletypes or IBM selectric typewriters to talk to them.

Over the years the DEC PDP-11 came out. I used to use one. My favorite was a Prime 550 mini-computer. Many referred to it as a small mainframe. It had multiple processors (in the configuration we had) splitting the tasks among each processor.

Another mini I used was a Motorola (don't remember the model #) with 4 processors. It handled ~100 users (slowly) running unix.

So - what do I want in a mini for me?

Enough processor cores to handle several simultanious tasks while showing no noticable slowdown. In this case I use 5 processors each with 4 cores. With the right software, I can create a separate process for each of the 20 cores.

Distributed memory. Each core should have it's own memory but also share memory with other cores as well as other processors.

Distributed long-term storage. Right now I have 2 hard drives. In the future I'll use a TB raid array. I wish I had a paper-tape reader/writer. I gave mine away some time ago. I also used to have a tape drive. It might be packed away somewhere.

What I ended up with are 5 small single cpu computers where each cpu has 4 cores. Each computer has 1 GB of ram, 16GB of long term storage as well as an NFS mounted pair of hard drives (1.5 TB total). All the computers are tied together via ethernet.

I used 4 raspberry pi's (model 2) as the compute engines, and a (model 3) raspberry pi as the primary console and controller for the other 4.

I use the MPI set of utilities to assign multiple cores each a seperate task. In some cases I let the underlying operating system (Linux) handle scheduling. 

It's a work in progress. I expect it will be long term. What I have it doing now is:

1. One processor downloads data and stuffs it into a database nightly. Since the database resides on a shared hard drive, all processors have access to the data. In addition, the database runs on that same processor.

2. Another processor runs an 8080 simulator I wrote. I use the simulator to write 8080 code. I'm writing a time-share operating system for it now. The front panel in the image above is primarally for the 8080 but is also used by the entire system when the simulator isn't running.

3. Another processor runs a PDP-11 simulator running RSTS v9. I have some DEC software I use. I also have a PDP-8 running but it doesn't get a lot of use.

4. Another processor runs some network jobs in the backround and connects to some hardware devices.

5. The main processor has a keyboard, mouse, HDMI display, handles network I/O to the outside world, has 2 printers (one is a dot-matrix line printer) and uses USB for other devices as needed. It shares data with the other processors so they have full access to all I/O needed.

6. A web server runs on the same computer as the database engine. I use the web server to handle shared documents.

The entire system has the ability to access 256 lines of I/O. Currently only 48 lines are active.

I'm still creating a front panel eschution. Right now the bare metal is a little ugly. The key on the front panel is to turn the power on and off. I don't want any accidental turn-off's.

Since I use the MPI library, I can set the mini up as a cluster and assign all 20 cores to work on one task. This works very well! Running some benchmark programs on one core takes 21 seconds. Using all 20 cores brings that time down to 1.1 seconds. There is an I/O overhead thru the ethernet that limits my basic speed. I also wanted to try some of those things that you hear about big machines doing, like count PI out to a million digits (took about 1 hour on 3 cores), or finding the first 10 million prime numbers (was pretty fast too).

One of the benchmark programs running on one processor. 707 MIPS where a VAX is about 1.5 MIPS.

This is the back before all the cables. I've since added a USB port so I now have 4.

This is the inside before the front panel electronics was installed. The ethernet switch is on the left, the two hard drives are to the right of the switch. The 4 PI 2's are on the center-right and the PI 3 is in the upper right. The 5V 10A power supply is in the upper right. Wiring for the I/O ports wasn't connected yet in this picture.

This is the interconnect diagram of my mini-computer. The I/O busses are not shown to eliminate clutter.

I added a 24 port ethernet switch. Since 2 ports are used for interconnects to the computer, 22 ports are available to allow remote machines to access the computer. This lets me use a low-powered device to run any programs on the main computer. Also I can have just one copy of a program on the mini and run multiple copies remotely. As an example:

ssh -Y pi2 loffice

Will run libreoffice on the mini but pipe the display to a remote computer running x-windows. Ditto with any other program.

If I need a x-term to run command line programs I use:

ssh -Y pi2 lxterminal

This will bring up an x-terminal window on the local machine but run command line programs on the mini.


---------------------------------------------------------------------------------------------------------------------------


I made the case. I used a sheet metal brake to bend the top cover, and cut/machined the panels etc to make the rest of the case. Notice there is no active cooling - no fans. Fans are noisy. I don't like noise. Besides, it stays pretty cool - just a little above room temperature on average.

~.~

Comments

Popular posts from this blog

nano80 - An Arduino nano based 8080 Simulator

Our Universe is a Simulation

Lightwave Communications