[HN Gopher] Simple CPU Design
___________________________________________________________________
Simple CPU Design
Author : _benj
Score : 172 points
Date : 2025-01-22 15:07 UTC (7 hours ago)
(HTM) web link (simplecpudesign.com)
(TXT) w3m dump (simplecpudesign.com)
| artemonster wrote:
| how awesome that this exists. I was learning how CPU works and
| designing my own CPU w emulator like 20 years ago as a teenager
| by googling into obscure forums, blog posts and homemade cpu
| webring. I made an experiment not long ago "would I be able to
| find in google by myself all learning materials to do that
| again". The outcome of that experiment deeply unsettled me.
| Google just gives you shit and total garbage. Half of the results
| are AI generated, other half is sloppily written half assed
| abstract pseudo tutorial like nonsense on medium or other paid-
| for-engagement platform. My children would not be able to
| reproduce such self learning without watching some youtubers
| doing it or by accessing some curated paid course or by
| accidental stumbling upon "gems" like this i.e. from HN. We
| desperately need back old google and old internet and somehow
| save and preserve humanitys knowledge.
| spencerflem wrote:
| I agree. Its hard though, SEO people are malicious, persistent
| and with modern tech, have incredible tools.
|
| And with hand curation, its hard to feel like its 'worth it'
| when instead of being able to build a community, your results
| are scraped and shown out of context.
|
| If you have any thoughts on how to get that sort of culture
| back I'm open to it
| acegopher wrote:
| I pay for kagi.com and they seem to be fighting that battle.
| I also frequent their "small web"
| (https://blog.kagi.com/small-web) initiative.
| artemonster wrote:
| tbh I have dreamt about what could be possible if we were
| making some sort of "closed doors" internet branch. You can
| access with a single account bound to you, invite only,
| something like PGP with a web of trust. Good "legacy"
| internet websites can be chained and indexed through some
| sort of thematical webring, with a good search and comment
| functionality added on top, as a global HN. Any external
| content is opt-in and vetted. Internal content with user
| rating system (not googles SEO algorithm ranked), i.e.
| allowing users to downvote nonsense bullshit into hell.
| robots on internal content are allowed through strictly
| controlled API that also pays original authors. Browsing
| automatically costs some "tokens" that are being paid towards
| owners of sites you visit so at least semi useful sites can
| sustain themselves and good ones make money, without spamming
| everything with ad banners or being incentivized to do
| ragebait-clickbait content. But thats all nonsense dreams,
| nobody will be willing to pay for browsing internet, even if
| high quality.
| spencerflem wrote:
| In the same vein, I feel like the 'fair source' movement
| makes sense - pay a fixed percent of profit and get access
| to a massive collection of licenced software.
|
| Just like with yours though, allocating it fairly is
| centralized and very hard to make everyone happy. And
| nobody wants to pay for something that used to be free.
| robinsonb5 wrote:
| Part of me thinks we need a new protocol, and a new lightweight
| web built around markdown with absolutely no (client side)
| active content allowed.
|
| What I'm not sure about is how to combat bad actors / spammers
| / low-effort pages and AI slop. I'm leaning towards some kind
| of git-like storage with history as a mandatory part of the
| protocol, and some kind of cryptographic web-of-trust
| endorsement system.
| linguistbreaker wrote:
| I'm starting to use Claude.ai more and more instead of
| googling. For the moment this seems to cut through the noise
| of the modern web.
| spencerflem wrote:
| I believe that it does, I'm worried long term that it will
| discourage people from making and curating webpages
| themselves though.
| linguistbreaker wrote:
| Definitely a possibility - hopefully AI will similarly
| empower creation of better content instead of AI slop
| noise.
|
| In fact I wonder if Claude.ai could come up with similar
| CPU teaching tools and a syllabus based on some of the
| great resources linked in this discussion.
| spencerflem wrote:
| I mean, probably, but only because it was trained on this
| already.
|
| For new things though, why would you bother posting them
| to the internet if you can't use it to build an audience
| or make a connection.
| linguistbreaker wrote:
| and possibly not even credited for the content you
| created...
|
| True
| spencerflem wrote:
| Sounds kinda like Gemini on top of IPFS/Dat/Hypercore. Imo
| some cool things but I'm not sure the problem is a technical
| one.
|
| Content addressing has some real benefits in allowing
| something like the internet archive to be transparent (ie: it
| doesn't matter who hosts it). But that's mostly solving
| linkrot.
|
| Searching through everything is still as hard as ever, and if
| the incentives are the same will be just as gamed. And people
| would have to make good content in the first place which is
| hard to justify without a good audience at the same time
| LeftHandPath wrote:
| I am glad you followed up on this, to see if you could do it
| again! That matches my experience.
|
| I remember feeling like the big tech corps had turned
| "consumer" into a pejorative and started relentlessly abusing
| their customers circa 2016 or so... Especially microsoft, post
| Windows 8. Consumer devices don't need to work. That's for pro
| devices. Consumer devices just need to sell ads, soak up user
| time, and let businesses market their goods for consumption!
|
| The majority of search results from late 2019 or so and onwards
| have only degraded. Even on other platforms, like YouTube --
| you get 4-5 real results, and the rest are "suggested for you",
| even if you've logged out. Google and Youtube both feel like
| "consumer" search engines, where advertising and eyeball time
| trump usefulness and user authority (i.e. the user being able
| to ask for what they want, and get it).
| recursivedoubts wrote:
| I teach the introduction to computing class at MSU and agree
| entirely: most students need to start with the absolutely most
| simple introduction to computing possible.
|
| My favorite two models are:
|
| The Scott CPU
|
| https://www.youtube.com/watch?v=cNN_tTXABUA (great book, website
| is now offline unfortunately:
| https://web.archive.org/web/20240430093449/https://www.butho...)
|
| An extremely simple non-pipelined 8 bit CPU. The emulator lets
| you step through tick by tick and see how the machine code is
| driving an operation. I spend one lecture showing each tick of a
| bitwise AND and following the data around from the instruction
| into the instruction register, how the instruction selects the
| general purpose registers, runs it through the ALU and then moves
| the data back from the accumulator into a register. It's one of
| my favorite lectures of the year.
|
| The Little Man Computer - https://www.101computing.net/LMC/
|
| A higher level Von Neumann style computer that helps introduce
| students gently to assembly where they can fully understand the
| "machine code" since it's just decimal. We then build an
| emulator, assembler and compiler for an extension to LMC that
| introduces the notion of a stack to support function calls.
|
| It's a fun one semester class, not as intense as NAND-to-Tetris
| but still an overview of how computing works.
| cowsaymoo wrote:
| My love is from the BU intro computing class from a number of
| years ago which was using the Harvey Mudd Miniature Machine
|
| https://www.cs.hmc.edu/~cs5grad/cs5/hmmm/documentation/docum...
| recursivedoubts wrote:
| very cool machine!
| redundantly wrote:
| Your class sounds amazing. Do you have any of your lectures
| online?
| jakesomething wrote:
| I made a Little Man Computer simulator this year that I use to
| teach students, but it uses binary and 2's complement which
| helps them learn that too: https://www.mathsuniverse.com/lmc
| mhh__ wrote:
| My first introduction to this stuff was also the little man
| computer. I won't say when as it might make some readers feel
| old, but very fond memories of playing around with it.
|
| Similarly fond memories of the teacher letting me just do my
| own thing at the back of the classroom after noticing I was
| writing an interpreter rather than hard-coding all the logic in
| the task.
|
| Probably hard to state just how good of an introduction he was
| to programming, actually. Not a codeforces-style geek but was
| constantly drilling the value of writing beautiful code that is
| as simple as possible to a bunch of 14 year olds of which
| probably only me and a friend were listening. Maybe it's not
| coincidence that amongst my friends/mutuals from that age there
| are core maintainers for I think three for pretty big languages
| uticus wrote:
| nice - reminds me of the excellent "Computer Organization &
| Design" by Patterson and Hennesy https://a.co/d/9U9Adl9
| cjfd wrote:
| I considered trying to do a simple CPU design from logic gates
| too. But I ended up wondering about some of the performance
| characteristics. Maybe some people who are knowledgeable are
| reading this. What I am wondering about is the switching speed of
| logic gates as compared to the signal speed in the electric
| connections for a realistic CPU. I.e., how many logic gate
| lengths (assume logic gates to be square) does an electric signal
| travel in an electric connection in the time that is needed for a
| logic gate to invert its output. Another one that seems relevant
| is how much spacing electric connections need compared to the
| size of a logic gate.
| ofrzeta wrote:
| does this answer your question? https://monster6502.com/
|
| "The MOnSter 6502 runs at about 1/20th the speed of the
| original, thanks to the much larger capacitance of the design.
| The maximum reliable clock rate is around 50 kHz. The primary
| limit to the clock speed is the gate capacitance of the MOSFETs
| that we are using, which is much larger than the capacitance of
| the MOSFETs on an original 6502 die."
| timthorn wrote:
| If you want to go a step further, here's one built from
| discrete transistors: https://www.megaprocessor.com/
| uticus wrote:
| even just building logic gates out of transistors is half the
| battle. for that, the referenced site also has
| https://www.megaprocessor.com/stepping-stones.html
| elvircrn wrote:
| I started this journey a while back using Tanenbaum's MIC-1
| during my Uni days with a another colleague. Still have it online
| if anyone is interested: https://github.com/elvircrn/mic-1.
| nxobject wrote:
| As much as I really benefited from being able to internalize
| system architectures like these many times over... I do wish now,
| as someone who ended up in software, that there were similar
| hand-holdy third guides to implementing the "core" of out-of-
| order superscalar execution engines, too. They're crucial to
| understanding how modern processors _kinda actually work to a
| zeroth order approximation_, even though it's impossible to
| convey the engineering scope of modern CPUs to those who need
| hand-holding, but I
| ranger207 wrote:
| At Georgia Tech I had one class (CS 2110) that dealt with
| implementing a simple in-order non-pipelined processor, one
| class that dealt with implementing a pipelined processor (CS
| 2210), then two classes (CS 4290 and CS 3220 IIRC) that dealt
| with implementing an out-of-order processor (4290 was more
| theory and also covered caches; 3220 was entirely implementing
| it on an FPGA). So, that sort of thing does exist, but IDK if
| most universities will let you take single classes like that
| allenrb wrote:
| That sounds like a great sequence! Offhand, I don't think
| there were any OOO microprocessors when I did computer
| architecture at Tech (Go Jackets!)
| robinsonb5 wrote:
| There's a nice little web forum (remember those?) for people
| interested in toy / experimental CPUs at anycpu.org
|
| I'm not active there any more, but I used to be when I was
| developing my own toy CPU:
| https://github.com/robinsonb5/EightThirtyTwo
| avmich wrote:
| A nice non-Turing-tarpit minimalistic MCPU:
| https://github.com/cpldcpu/MCPU .
| helij wrote:
| I just have to say. Such a beautiful and accessible website. No
| fluff, no ads, no distractions. I love it!
| JLCarveth wrote:
| No HTTPS either
| wyager wrote:
| For anyone interested in a "not-so-simple" CPU design, I have a
| couple old college assignments from a CPU design class that may
| be fun to peruse:
|
| This one is a 4-stage pipelined CPU:
| https://github.com/wyager/Lambda16
|
| This one is a superscalar out-of-order CPU:
| https://github.com/wyager/Lambda17
|
| Both are written in Clash, which is a subset of Haskell that
| compiles to target FPGAs. It's an incredibly OP HDL.
|
| I don't think I ever ran the second one on an actual FPGA,
| because at the time values of type `Char` wouldn't synthesize,
| but I think the Clash compiler fixed that at some point.
___________________________________________________________________
(page generated 2025-01-22 23:00 UTC)