DIY CPU demo’d running Minix
Nov 3, 2007 — by LinuxDevices Staff — from the LinuxDevices Archive — 69 viewsBill Buzbee offered the first public demonstration of the Minix OS — a cousin of Linux — running on his homebrew minicomputer, today at the Vintage Computer Festival in Mountain View, Calif. Magic-1, built with 74-series TTL ICs using wire-wrap construction, implements a homebrew, 8086-like ISA.
Bill Buzbee shows off the Magic-1 at the Vintage Computer Festival
digg this story |
Buzbee, a “senior research scientist” at Hewlett-Packard Laboratories, has developed compilers and language tools for over 20 years. Prior to HP Labs, he worked as a software developer for renowned startup Transmeta Corp. (Transmeta, at that time, was “home” to Linux creator Linus Torvalds).
While at Transmeta, Buzbee contributed to the development of the Efficeon processor's “code morphing” software. This innovative technology automatically (and on the fly) translated x86 code into instructions that ran on the Efficeon's proprietary VLIW ISA (very long instruction word instruction set architecture) execution engine, and was said to provide both faster performance and lower power consumption than the same native x86 code running on competing x86 processors from Intel or AMD.
Closeup of the Magic-1 minicomputer
(Click to enlarge)
No doubt this experience contributed to Buzbee's eventual desire to build an entire minicomputer from the ground up, a project that began with creating a totally homebrew CPU (central processing unit) with a unique set of instructions.
Hardware
According to Buzbee, the Magic-1 contains more than 200 ICs, interconnected by “thousands of individually wrapped wires.” Rather than using a commercial microprocessor, Buzbee created his own microcoded CPU that zooms along at 4.09 MHz (yes, that's MHz, not GHz), and is “in the same ballpark as an old 8086 in performance and capabilities,” he says. Additionally, it “supports user and supervisor modes, address translation via a hardware page table, six external interrupts, and up to 8 MB of memory (currently has 4 MB).”
Magic-1's front panel
(Click to enlarge)
As seen in the block diagram below, the Magic-1 minicomputer implements a 22-bit physical address bus and an 8-bit data bus. An additional address bit provides selection between the system's “memory” and “device” spaces, and there is a 16-bit data path within the CPU, says Buzbee.
Magic-1 block diagram
(Click to enlarge)
The design is partitioned into four equally-sized boards: an ALU board, a Control board, a Device board, and a Memory board — all loaded with numerous 74 series TTL ICs, as indicated in the block diagram above . These four boards are pictured below.
Magic-1's ALU, Control, Device, and Memory cards
(Click each image to enlarge)
Software
Generally, the first step in getting application software and an operating system running on a new CPU design is to port a C compiler to the CPU's ISA, and then use that compiler to recompile the desired programs for operation on the CPU.
Accordingly Buzbee began by “retargeting” LCC, a “retargetable” ANSI C cross-compiler, to the Magic-1. To that he added a recompiled TCP/IP stack, a simple operating system that he wrote specifically for the Magic-1, and “hundreds of programs” that he recompiled for the system.
The big software project, though, was to port Minix 2 to the Magic-1. He barely managed to get it working in time to demonstrate it at this weekend's Vintage Computer Festival.
Minix 2 booting on the Magic-1 minicomputer
(Click to enlarge)
Buzbee describes Minix as a “fully multi-user, multi-tasking” OS. Like Linux, Minix is a Unix clone.
Developed by Andy Tanenbaum for educational purposes, Minix was released in 2000 as open-source software under a BSD-like license. Tanenbaum characterizes Minix as “much smaller than Linux and might well be suitable as the operating system for a watch, camera, or transistor radio.” The latest version, Minix 3, is said to support x86 processors from 386 up, and in systems equipped with as little as 8MB of RAM. Apparently the older Minix 2 can run in 4MB of RAM, the currently amount available on the Magic-1.
Build your own minicomputer?
Further details on Buzbee's homebrew CPU and minicomputer are available on the Magic-1's website, here. In case you're itching to build one of these nifty minicomputers as your next weekend project, you can download complete schematics and BOMs (bills of materials) from the Magic-1 website.
Vintage Computer Festival
This year's annual West Coast Vintage Computer Festival is taking place this weekend at the Computer History Museum in Mountain View, Calif. Entry to the Festival is $20 for a pass that includes talks, exhibits, and a marketplace, while a limited pass, for exhibits and marketplace only, is available for $12.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.