The Microprocessor Project: Overview

This summer, I need something to do. I’ve got a few ideas, but in particular, one desire I’ve had since I was a young teenager was to design my own computer, which I’ve now learned enough to understand means “to design my own microprocessor.” Software for it can come later, if I still like the idea after designing the hardware (or, if I’m really clever, I can try to port Linux to it, and not have to write my own software at all). However, I see now that the reason I didn’t do this sooner, and my new reason for doing this project, is that there are virtually no in-depth, beginner-level resources available on the Internet (if anyone wants to try to look at OpenSPARC and without any understanding of what it’s based on, deduce how to build a basic microprocessor, please, be my guest). To that end, today I begin my next big project: designing, simulating, testing, and maybe putting on an FPGA a real, functional, 32-bit microprocessor. Then, explaining it in detail, putting my results on the Internet, and releasing it under the GNU GPL, so that there exists a simple platform for people to play around with microprocessors, extending it with additional features or modules as they see fit. I don’t intend to create something remotely commercially viable, because I will, initialy, purposely not include features found even in the early 90s on Intel chips, in order to simplify the design process, and help explain the basic concepts. If I like what I’ve done, when the time comes, maybe I’ll add more realistic features, such as multiple pipelines (superscalar) and out-of-order execution, or I’ll design support for more esoteric features (like barrel processing), to see how readily (if at all) they are implemented and to provide some context about where microprocessors can go from the basic 5-stage pipeline.

The real goal here is educational in nature. Microprocessors are incredibly complicated devices, and so most online descriptions are terse at best. Despite that, I think people should be able to learn, for free, exactly how a microprocessor works. However, I can’t explain how an x86 chip works, for a number of reasons. First, I don’t actually know. I have a pretty good understanding of the elements from which it is built, but I’ve spent almost no time studying the ISA or reading papers on how Intel has actually implemented things. Second, I’d hate to speculate and be totally wrong, and then have people read it and think that was how it works. In contrast, I do understand the principles upon which RISC microprocessors (like MIPS and ARM) are based, so I can readily make up an instruction set that it is similar to MIPS, implement it, and then talk at great length about how it works. Hopefully, then, a younger version of me can find this online, look through it, and then be able to answer all those questions I had until college about how computers actually do things. If software and programming can be well documented and available for free to learn from, then hardware should be too.

If you would like to contribute descriptions, Verilog, or simulation code (which will mostly be written in C), please let me know by posting in the comments.

Coming soon: The Master Plan. I’ll lay out precisely what the objectives are and give an overview of how the project will progress as a whole.

Posted in The Microprocessor Project.


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.