Paper Processor – What is fetch, decode, and execute?
sites.google.com
sites.google.com
http://www.ugrad.cs.ubc.ca/~cs121/2015W2/Labs/Lab9/lab9.pdf http://www.ugrad.cs.ubc.ca/~cs121/2015W2/Labs/Lab9/playcpu.p...
I think this kind of knowledge is pretty important for when you're writing code, even if you work exclusively in the JVM. It helps to understand what goes on under the hood and the fundamental limitations of what your computer can do, so you know where you need to optimize.
I see no reason why we should forever stick with things the way they are, just because they seemed simple to implement at the time. The trend you mention could be a chance to reinvent computers, as it were.
[1] https://en.wikipedia.org/wiki/Mill_CPU_Architecture#The_Belt...
However, there is research in the other stuff. Here is one of the papers I found:
http://facta.junis.ni.ac.rs/eae/fu2k51/bundalo.pdf
There were also other types of logic used in digital with interesting advantages. Two good ones, one for speed and one for reliability, are below. I particularly found the computer made with diode logic to be pretty amazing.
https://en.wikipedia.org/wiki/Emitter-coupled_logic
https://en.wikipedia.org/wiki/Content-addressable_memory#Ter...
This uses levers to make a binary adder: https://www.youtube.com/watch?v=6hs6eqSdbGc
And this uses marbles to make an adder: https://www.youtube.com/watch?v=GcDshWmhF4A
I tried building a compiler for one particular computer, the RedGame 2. Which in practice meant an assembler + installer, lol. Somebody else also built an emulator and the other assembler for that computer. Also remember Ohm's computer, a 16-bit machine which was... practically vertical. There were lanes for 16 bits side by side, all of the ALU functions were stacked one above the other, and all of the registers were likewise stacked beside the ALU. It also had an assembler, and an emulator (in Bash, IIRC).
Among the interesting / odd things about Redstone computers, is just how slow signals propagate down wires compared to the gate speed. By in large, small is the only form of speed. That, and small is kindof necessary, via the sheer space constraints imposed by being inside a game. The one 64 bit ALU I saw once... was sufficiently wide that you had to stand close to the middle to keep the entire thing in simulation range. Corollary to that, is the low speeds can make the operation of the chip substantially intuitive. With the RedGame 2, a few times I would try to follow ROM reads, instruction decode, register reads, ALU ops, and right back to the condition in time to select the next instruction. That was a bit of an oddity of the RedGame, every instruction contained a conditional branch. You would use... 2 or 3 bits as an operand for what condition to check, list out two (!) instruction numbers to branch to on true/false.
I've (much more) recently mulled over building my own CPU, tho it'd be a couple months worth of work. Most recent sketch was of something of a Mill-alike. It'd be an 8-bit, with 8 belt positions, one ALU, 12 bit instructions with ~30 ops available, and maybe 128 program instructions in ROM. Not sure I could actually fit any RAM, tho... With RAM being positively huge, and any mildly compact part-analog storage taking around 5-10 seconds per read. I'm also not sure something so small it can only fit one ALU really benefits from a belt architecture, rather than a 3-operand register machine. For that matter, most Redstone computers use quite wide program ROMs instead of a Von Neumann architecture, so instruction bits are practically the cheapest part of these computers.
Not sure if that's more informative than making a more-capable ISA and writing an emulator in C.