Difference between revisions of "Main Page"

From CPUdev wiki
Jump to navigation Jump to search
(Use the new Box template)
(added external interfaces to try and balance it more)
 
(One intermediate revision by the same user not shown)
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]]
<!-- Right side: various reference information, try to order by put most-widely-applicable stuff at the top -->
** [[Logic simulators]]
 
* [[FPGA development]]
{{Box|title=Logic references|
* [[Intro to electronics]]
* [[Relay logic]]
** [[Logic chips]]
* [[Logic level reference]]
** [[Transistor logic]]
* [[Logic chip reference]]
** [[Relay logic]]
* [[Exotic logic families]]
}}
}}
 
{{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|
{{Box|title=CPU projects|
* [https://www.bigmessowires.com/bmow1/ Big Mess of Wires]
* [https://www.bigmessowires.com/bmow1/ Big Mess of Wires]

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