project:ledum:start
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| project:ledum:start [2025/04/14 23:30] – [Miscellaneous] Learning formattiong of this wiki by trial and error yokotashi | project:ledum:start [2026/07/11 21:50] (current) – Fixed naming "dzoe" -> "joe", added note about "BB68" bluebear | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| name=Ledum| | name=Ledum| | ||
| image=ledum: | image=ledum: | ||
| - | sw=FIXME| | + | sw=to be determined but open| |
| - | hw=FIXME| | + | hw=to be determined but open| |
| founder=[[user: | founder=[[user: | ||
| interested=[[user: | interested=[[user: | ||
| Line 12: | Line 12: | ||
| }} | }} | ||
| - | This project | + | ---- dataentry |
| + | name: Ledum | ||
| + | status: active | ||
| + | image: {{: | ||
| + | ---- | ||
| + | //Traveling at night is neither faster, nor safer. That's why we do it. (Christopher Illopoly, Cultist Simulator)// | ||
| - | ===== Project Objectives ===== | + | This project aims to design and develop a **central processing unit** (CPU) from the ground up, with all circuitry, instruction set, and ways of communication with peripherals devised completely by us. Ideally, at least one of the resulting designs should be so simple that it could be produced in silicon with primitive, 1980-style lithography. If this succeeds, we can advance to more sophisticated designs. |
| - | - **Achieve High Correctness in Design:** | + | ===== Project goals and timeline (very approximate) ===== |
| - | * Use formal methods, simulation, | + | |
| - | * Ensure that the CPU meets or exceeds industry standards for reliability and precision. | + | |
| - | - **Implement Object Capabilities Model:** | + | |
| - | * Integrate an object capabilities model into the CPU’s architecture to allow fine-grained, | + | |
| - | * Ensure that resource access control is embedded at the hardware level to improve security by default. | + | |
| - | - **Enable Scalable Security Mechanisms: | + | |
| - | * Design the CPU with scalable security features, leveraging capabilities to prevent unauthorized access and misuse of system resources. | + | |
| - | * Provide users with the flexibility to define and manage their own access control policies through object capabilities. | + | |
| - | - **Optimize Performance: | + | |
| - | * Ensure that the CPU achieves optimal performance in terms of throughput, latency, and power consumption, | + | |
| - | * Ensure, that the CPU architecture can be parallelized to achieve IPC>1 including OoO execution, although to do so isn't primary objective. | + | |
| - | * Balance hardware features for high-performance tasks with robust security measures for sensitive operations. | + | |
| - | - **Establish Robust Ecosystem Support: | + | |
| - | * Develop comprehensive software toolchains and drivers to support the object capability model. | + | |
| - | * Collaborate with industry partners to ensure broad compatibility with existing operating systems and applications. | + | |
| + | ==== 2024-2027(? | ||
| - | ===== Project Scope ===== | + | * a simple, but functional, 100% open source 16-bit CPU with an original instruction set |
| + | * here we want to learn all the needed technology for designing a complex circuitry needed for a (still simple) CPU | ||
| + | * the CPU itself, if successful, should also be a teaching tool for showing how to do these things | ||
| + | * technically inspired by the most famous old CPUs: 6502, Z80, Motorola 68000 | ||
| + | * status: | ||
| + | * tooling for building an instruction set (by [[user: | ||
| + | * generator of instruction structure and bit layout | ||
| + | * assembler and disassembler | ||
| + | * emulator | ||
| + | * instruction set is complete (by [[user: | ||
| + | * hardware capabilities and high-level schematics are complete (by [[user: | ||
| + | * Verilog sources for the detailed hardware are in progress (by [[user: | ||
| + | * basic BIOS-like (KERNAL for C64 afficionados) is in progress (by [[user: | ||
| + | * compiler for higher but still low-level C-language is being prepared (by [[user: | ||
| - | ==== In-Scope | + | ==== 2028(?): second phase ==== |
| - | * **CPU Architecture Design:** Define instruction sets, pipeline architecture, | + | |
| - | * **Formal Verification: | + | |
| - | * **Security & Resource Management:** Implement object capabilities as a mechanism to control access to system resources. | + | * features for comfortable coding in assembly for speed sensitive routines (to be fleshed out later - [[user:yokotashi]]' |
| - | * **Prototyping | + | * about 64 registers with support for tagging |
| - | * **Performance Evaluation: | + | |
| - | * **Software Toolchain Development: | + | * in-CPU circuitry for more sophisticated calculations, like divisor, hasher... |
| - | + | * fast calls to the kernel | |
| - | ==== Out of Scope ==== | + | * performance optimizations known in modern CPUs |
| - | + | * parallelizability, | |
| - | | + | * configurable balance between throughput, latency, and power consumption |
| - | * Manufacturing of physical CPU chips (to be handled post-design phase). | + | |
| - | * Integration into mass-market consumer devices | + | |
| ===== Workshops ===== | ===== Workshops ===== | ||
| - | As a part of our efforts, we have realized that different members of the team have different experience with various scientific and engineering fields and it would be very helpful to ensure that everyone has some basic understanding of all required topics. The workshops typically take place during the working group' | + | As a part of our efforts, we have realized that different members of the team have different experience with various scientific and engineering fields and it would be very helpful to ensure that everyone has some basic understanding of all required topics. The workshops typically take place during the working group' |
| - | If there is enough interest, we are streaming the workshops online using [[https:// | + | If there is enough interest, we are streaming the workshops online using [[https:// |
| ==== Past Workshops ==== | ==== Past Workshops ==== | ||
| Line 71: | Line 73: | ||
| * 2025-01-09 17:00 [[user: | * 2025-01-09 17:00 [[user: | ||
| - | ==== Planned ==== | + | === Things to read === |
| + | ==== Optimizations ==== | ||
| - | ===== Design Topics ===== | + | * Compressed pointers: https:// |
| - | ==== ISA Description ==== | + | * Read barriers pro concurent scavenger: https:// |
| - | Warning: This part may change wildly at this stage. | + | * Chinual: https:// |
| + | * https:// | ||
| - | === Registers | + | ===== Past milestones ===== |
| - | * 64 GPR | + | |
| - | * upto 64 PTR (Pointer registers) | + | |
| - | * special registers (CS:IP and several configuration registers probably) | + | |
| - | *- No flag register (flags are going either to another GPR or to a special 4-bits adjacent to every GPR), this should help future with parallelization | + | |
| - | === Pointers === | + | {{ : |
| - | * Fat Pointers supported and tested by HW | + | |
| - | * Ultra Fat Pointers supported and tested by HW, can't be dereferenced outside the CS stored inside them | + | |
| - | === Tagging === | + | {{:project: |
| - | * All RAM and registers is tagged, so ALU knows which type it's operating on and pointer cannot be created freely | + | |
| - | * Types: int, uint, float in 4, 8 ... 64 bit lengths fit in vector 64-bit long; Fat pointer, Ultra fat pointer | + | |
| - | ==== Electronic Circuit Design ==== | + | As a proof-of-concept an assembly language compiler and IDE support was implemented for a very simple Harvard architecture 8-bit CPU. A graphical emulator for the same simple CPU was created as well. The aim of these tooling efforts is to provide a unified framework for creating custom instruction sets including their assemblers and emulators. |
| - | ==== Integrated Circuit Design ==== | + | <WRAP clear></ |
| - | ==== Tooling | + | ==== Simulator GUI ==== |
| - | ==== Miscellaneous ==== | + | {{ :project:ledum: |
| - | === Things to read === | + | |
| - | == Optimizations == | + | |
| - | - Compressed pointers: https:// | + | |
| - | - Read barriers pro concurent scavenger: https:// | + | A simple |
| - | + | ||
| - | - Chinual: https:// | + | |
| - | + | ||
| - | - https:// | + | |
| - | ===== Current Progress ===== | + | |
| - | + | ||
| - | ==== Tooling ==== | + | |
| - | + | ||
| - | {{ : | + | |
| - | + | ||
| - | {{: | + | |
| - | + | ||
| - | As a proof-of-concept an assembly language compiler and IDE support was implemented for a very simple Harvard architecture 8-bit CPU. A graphical emulator for the same simple | + | |
| <WRAP clear></ | <WRAP clear></ | ||
project/ledum/start.1744673404.txt.gz · Last modified: 2025/04/14 23:30 by yokotashi