Email or username:

Password:

Forgot your password?
Joshua Barretto

Something I've been somewhat surprised at playing with building a CPU in VCB is just how fundamentally... simple a CPU is. I've grokked a lot of single components (ALU, memory cells, etc.) for a while, but always assumed there was some 'magic glue' that turned those elements into a system that could perform useful work over time, but there's really not. Once you have a clock loop and the ability to select inputs and outputs on buses, you're golden. Everything else is just tinkering on the side.

5 comments
Joshua Barretto

Obviously this doesn't apply so much to modern CPUs with deep caches, atomics, superscalar stuff, speculative execution, etc. I'm more talking about low-power embedded chips or older things like the Z80 or early ARM/Acorn chips.

Marc

@jsbarretto for me the "magic glue" realization moment was the bus... (And thanks Ben Eater)

Joshua Barretto

@corpsmoderne Yes. I've not watched the Ben Eater videos but I hear they're good. I also had a bit of an epiphany when I realised that I don't have to build intricate circuits for every combination of operators but instead just flatten the N*M problem into an N+M problem by having buses. Obvious in hindsight, abstraction layers like that are a programmer's bread & butter, but very cool.

TheZoq2

@jsbarretto no other field has made me go so back and forth between "this is black magic" and "this is super simple"

Learning assembly: how the hell do you build a circuit to do this
Learning about microcode: aha, this is easy
Learning about pipelining: aaaand back to black magic
Building a pipelined CPU: oh, it really is that simple?
Learning about superscalar stuff: black magic again

Joshua Barretto

@thezoq2 Yeah, I'm feeling this a lot now. Rapidly oscillating between total confusion and a feeling of 'why was this not obvious?'

Go Up