Difference between revisions of "Main Page"

From CPUdev wiki
Jump to navigation Jump to search
(add a bunch more placeholder links)
(added external interfaces to try and balance it more)
 
(2 intermediate revisions by the same user not shown)
Line 9: Line 9:
{| style="width: 100%;" |
{| style="width: 100%;" |
| style="vertical-align: top;" |
| style="vertical-align: top;" |
<div style="background-color: #fff7f2; border: solid 1px #ffddc6; padding: 0.5em; margin-bottom: 13px;">
<div style="font-weight: bold; background-color: #ffe7d6; margin: 0; border: solid 1px #ffddc6; padding: 0 0.5em 0 0.5em;">Major components and concepts</div>
* [[Instruction Set Architecture]]
* [[Control unit]]
** [[Instruction decoding]]
** [[Microcode]]
* [[ALU]]
* [[Memory bus]]
** [[RAM]]
** [[Memory-mapped IO]]
* [[External interfaces]]
** [[UART console]]
** [[GPIO]]
** [[SD card storage]]
** [[Character LCD]]
** [[PS/2 keyboard]]
** [[Audio output]]
** [[VGA video]]
** [[USB]]
</div>


<div style="background-color: #fff7f2; border: solid 1px #ffddc6; padding: 0.5em; margin-bottom: 13px;">
<!-- Left side: tutorials. Starting from the top (and skipping irrelevant ones) should get a new person going in a useful direction, kinda like a tutorial. More experienced people can go farther down the list. At some point it can split into branches -->
<div style="font-weight: bold; background-color: #ffe7d6; margin: 0; border: solid 1px #ffddc6; padding: 0 0.5em 0 0.5em;">Software</div>
* [[Writing an assembler]]
* [[Writing an emulator]]
</div>


<div style="background-color: #fff7f2; border: solid 1px #ffddc6; padding: 0.5em; margin-bottom: 13px;">
{{Box|title=Getting started|
<div style="font-weight: bold; background-color: #ffe7d6; margin: 0; border: solid 1px #ffddc6; padding: 0 0.5em 0 0.5em;">Advanced instruction set</div>
Essential knowledge:
* [[Interrupts and exceptions]]
* [[Introduction to digital logic]]
* [[Binary arithmetic]]
* [[How a computer works]]
Designing and simulating a CPU:
* [[Getting started - Logisim]]
* [[Getting started - FPGAs]]
Building a CPU in real life:
* [[Electronics primer]]
* [[Getting started - logic chips]]
* [[Getting started - transistor circuits]]
* [[Getting started - relay circuits]]
}}
{{Box|title=Basic CPU design|
Important design considerations:
* [[Programmer's model]]
* [[Harvard vs Von Neumann]]
* [[RISC vs CISC]]
* [[Number of bits]]
Hardware design:
* [[Instruction encoding]]
* [[Data path]]
* [[ALU]]
* [[Control unit]]
}}
{{Box|title=Software|
* [[Emulator]]
* [[Assembly language]]
* [[C language]]
* [[Forth language]]
}}
{{Box|title=Advanced topics|
Instruction set extensions:
* [[Exceptions and interrupts]]
* [[Floating-point unit]]
* [[Virtual memory]]
* [[Virtual memory]]
* [[Memory protection]]
Performance tricks:
</div>
* [[Instruction prefetching]]
 
* [[Pipelining]]
<div style="background-color: #fff7f2; border: solid 1px #ffddc6; padding: 0.5em; margin-bottom: 13px;">
<div style="font-weight: bold; background-color: #ffe7d6; margin: 0; border: solid 1px #ffddc6; padding: 0 0.5em 0 0.5em;">Performance optimizations</div>
* [[Prefetching]]
* [[Branch prediction]]
* [[Branch prediction]]
* [[Data cache]]
* [[Data cache]]
* [[Out-of-order execution]]
* [[Out-of-order execution]]
* [[Register renaming]]
* [[Register renaming]]
</div>
}}


| style="vertical-align: top; padding-left: 10px;" |
| style="vertical-align: top; padding-left: 10px;" |
<div style="background-color: #fff7f2; border: solid 1px #ffddc6; padding: 0.5em; margin-bottom: 13px;">
<div style="font-weight: bold; background-color: #ffe7d6; margin: 0; border: solid 1px #ffddc6; padding: 0 0.5em 0 0.5em;">Implementation technology</div>
* [[Intro to binary logic]]
** [[Logic simulators]]
* [[FPGA development]]
* [[Intro to electronics]]
** [[Logic chips]]
** [[Transistor logic]]
** [[Relay logic]]
* [[Exotic logic families]]
</div>


<div style="background-color: #fff7f2; border: solid 1px #ffddc6; padding: 0.5em; margin-bottom: 13px;">
<!-- Right side: various reference information, try to order by put most-widely-applicable stuff at the top -->
<div style="font-weight: bold; background-color: #ffe7d6; margin: 0; border: solid 1px #ffddc6; padding: 0 0.5em 0 0.5em;">CPU projects</div>
 
{{Box|title=Logic references|
* [[Relay logic]]
* [[Logic level reference]]
* [[Logic chip reference]]
}}
{{Box|title=External interfaces|
* [[UART]]
* [[I2C]] / [[SPI]]
* [[VGA]]
* [[PS/2]] (mouse and keyboard)
* [[Ethernet]]
* [[USB]]
}} <!-- looking pretty unbalanced! More stuff needed here -->
{{Box|title=CPU projects|
* [https://www.bigmessowires.com/bmow1/ Big Mess of Wires]
* [https://www.bigmessowires.com/bmow1/ Big Mess of Wires]
* [http://www.homebrewcpu.com/ Magic-1]
* [http://www.homebrewcpu.com/ Magic-1]
Line 73: Line 82:
* [https://relaycomputer.co.uk/pages/overview.html Paul Law's relay computer]
* [https://relaycomputer.co.uk/pages/overview.html Paul Law's relay computer]
* [http://zipcpu.com/about/zipcpu.html ZipCPU]
* [http://zipcpu.com/about/zipcpu.html ZipCPU]
</div>
}}


|}
|}

Latest revision as of 17:43, 6 July 2021

Homebrew CPU Wiki

This main page is mostly a placeholder for now.
To get editing permission, create an account and ping immibis on IRC. irc.libera.chat #cpudev


Basic CPU design

Important design considerations:

Hardware design:



External interfaces