

Homemade CPU – from scratch - BarsMonster
http://3.14.by/en/read/homemade-cpus

======
sunkencity
Magic-1

"Made of ~200 low-scale chips, clock rate is up to 4Mhz. Have working Minux
port, homebrewcpu.com site is served by this computer."

Man that is the very _definition_ of coolness. Awesome. I wish I could build
my own CPU, port *nix to it and serve a site about building it from it.

~~~
BarsMonster
If you do so, you would eventually be invited to huge corp :-)

~~~
rpledge
Is that advice or a warning? :)

------
Luc
I have probably linked to this before on HN, but hey, love is blind:
<http://www.kilian-leonhardt.de/relaiscomputer/kurz6.htm>

It's a 4-bit computer made out of 171 relays. It's got different 8 commands,
an input register and 2 CPU registers, one of which is the accumulator.
There's memory for 16 instructions (dip switches!). As output it uses LEDs on
the registers, so you can for example program it to multiply 2 4-bit numbers,
and read out the accumulator at the end. It clicks away at 10 instructions per
second.

The guy who built it also made a 1500 relais computer which is much more
capable. You truly don't need much to build a computer - just a basic building
block and enough ingenuity.

------
joshu
Had to build a CPU from "scratch" at CMU. Of course, we were allowed to use
290x bit-slice parts. And PALs or FPGAs (we didn't use FPGAs; if you were
sufficiently clever you could get the whole thing in one FPGA.) Designed our
own ISA though. Had to be able to do a 16 bit multiply. Looked like a
multicolor explosion of wire-wrap.

One of the other groups built a fully asynchronous machine. Ours was a single
board, but theirs had a backplane (using an 80 SCSI cable.) Each unit had a
value line and a ready line, so the system advanced to the next state as the
parts were ready.

Happy days.

------
al_james
These guys are like vintage car nuts. Its like they are reliving the glory
days of simple and understandable CPUs. Those days have gone! Building your
own CPU is cool, but its a bit of a waste of talent; it does nothing to
_advance technology_ is you see what I mean.

Give me a Tesla Roadster.

~~~
RiderOfGiraffes
It may not advance today's hardware technology, but understanding these sorts
of things means you have a _deep_ understanding of many, many principles.

It's common when writing threaded software for multi-core systems to have an
""edge-race," where correct behavior can depend on exact ordering of earlier
processing. Most of the people I know who have never had a software edge-race
are people with significant hardware knowledge. They know what it's like to
have many things going on simultaneously, and have the experience to reason
about it more easily than those with a pure software background

With aggressively multi-core systems becoming more common (we are routinely
using systems with 32 cores, and then we use 30 or more of them) material like
this is becoming more relevant.

~~~
henrikschroder
As part of the computer science/engineering program I went to at university,
we had courses spanning the entire stack. Intro courses were in Scheme and C,
and later courses went on to higher-level OO and relational databases and
other paradigms. But we also had a short course in analogue electronics,
followed by one in digital electronics, both of which were extremely hands-on,
requiring us to construct simple circuits in the analogue course, but
eventually progressing up to making our own simple CPU in the digital one,
including making the microcode for it, and programming it in our own machine
code.

That was a real eye-opening moment for me when I realized I had actually been
all over the stack and had some sort of understanding of how a high-level
program gets compiled and executed and what actually happens at the lowest
level, and that that was useful for understanding the high level better.

~~~
elblanco
I second this. One of the most eye opening and impactful classes I took in my
undergrad was the digital circuits class. It finally made it click.
Breadboarding a simple ALU at a workbench out of simple logic components,
making them work off of a clock (seeing how the clock was just a final input
that forced the operation to occur blew my mind), etc. etc. then doing it
again in an FPGA was awesome. Suddenly all of the stack made sense, my
compiler class made sense (when we wrote an emulator for a fictional target
system to compile to, I kept thinking about how that system would work as a
logic diagram), the OS class made sense (thinking about how the contents of an
instruction could be swapped out for context switches in a multi-tasking
system)...

I wish that the curriculum at my school had started with that class. It would
have been a much better foundation to start off of than C++ and Prolog.

------
tectonic
Direct link to homebrewcpu: <http://homebrewcpu.com/>

~~~
kqr2
Link to previous discussion on homebrewcpu:

<http://news.ycombinator.com/item?id=743583>

------
arvinjoar
I'd like to build an Apple II from scratch, I think I would learn a lot from
it. Do you guys know if it is possible? Are there any "blueprints" or guides
to do it? Are the parts still around?

~~~
ethanmullins
You can build an Apple I from a kit:
<http://www.brielcomputers.com/replica1.html>

~~~
joshu
Not at all the same thing.

------
elblanco
This is l33t beyond all words.

