Difference between revisions of "Main Page"

From CPUdev wiki
Jump to navigation Jump to search
(Use the new Box template)
(another revision)
Line 10: Line 10:
| style="vertical-align: top;" |
| style="vertical-align: top;" |


{{Box|title=Major components and concepts|
<!-- 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 -->
* [[Instruction Set Architecture]]
 
{{Box|title=Getting started|
Essential knowledge:
* [[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]]
* [[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]]
}}
}}
{{Box|title=Software|
{{Box|title=Software|
* [[Writing an assembler]]
* [[Emulator]]
* [[Writing an emulator]]
* [[Assembly language]]
* [[C language]]
* [[Forth language]]
}}
}}
 
{{Box|title=Advanced topics|
{{Box|title=Advanced instruction set|
Instruction set extensions:
* [[Interrupts and exceptions]]
* [[Exceptions and interrupts]]
* [[Floating-point unit]]
* [[Virtual memory]]
* [[Virtual memory]]
* [[Memory protection]]
Performance tricks:
}}
* [[Instruction prefetching]]
 
* [[Pipelining]]
{{Box|title=Performance optimizations|
* [[Prefetching]]
* [[Branch prediction]]
* [[Branch prediction]]
* [[Data cache]]
* [[Data cache]]
Line 50: Line 59:


| style="vertical-align: top; padding-left: 10px;" |
| style="vertical-align: top; padding-left: 10px;" |
{{Box|title=Implementation technology|
* [[Intro to binary logic]]
** [[Logic simulators]]
* [[FPGA development]]
* [[Intro to electronics]]
** [[Logic chips]]
** [[Transistor logic]]
** [[Relay logic]]
* [[Exotic logic families]]
}}


<!-- Right side: various reference information, try to order by put most-widely-applicable stuff at the top -->
{{Box|title=Logic reference|
* [[Relay logic]]
* [[Logic level reference]]
* [[Logic chip reference]]
}} <!-- Looking pretty unbalanced! More stuff needed here -->
{{Box|title=CPU projects|
{{Box|title=CPU projects|
* [https://www.bigmessowires.com/bmow1/ Big Mess of Wires]
* [https://www.bigmessowires.com/bmow1/ Big Mess of Wires]

Revision as of 21:18, 5 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: