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/25 13:08] – [Streaming Setup in Brmlab] joe | project:ledum:start [2026/08/20 17:29] (current) – joe | ||
|---|---|---|---|
| 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 hidden ---- |
| + | name: Ledum | ||
| + | status: active | ||
| + | image: {{:project: | ||
| + | ---- | ||
| + | //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:** | + | ===== Released Repositories ===== |
| - | * Use formal methods, simulation, and rigorous testing to verify that the CPU’s architecture is functionally correct. | + | |
| - | * 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. | + | |
| + | * [[https:// | ||
| + | * [[https:// | ||
| - | ===== Project | + | ===== Project |
| - | ==== In-Scope ==== | + | ==== 2024-2027(?): first phase ==== |
| - | | + | |
| - | * **Formal Verification:** Apply formal methods to mathematically prove the correctness | + | |
| - | * **Security & Resource Management:** Implement object | + | |
| - | * **Prototyping | + | |
| - | * **Performance Evaluation:** Benchmark the new CPU's performance across several applications to assess trade-offs between correctness, | + | * status: |
| - | * **Software Toolchain Development:** Develop and release supporting software tools, such as compilers, debuggers, and simulators, that work with the new object capability model. | + | |
| + | * generator | ||
| + | | ||
| + | * emulator | ||
| + | | ||
| + | | ||
| + | | ||
| + | * basic BIOS-like (KERNAL for C64 afficionados) is in progress (by [[user:joe]]) | ||
| + | | ||
| - | ==== Out of Scope ==== | + | ==== 2028(?): second phase ==== |
| - | | + | |
| - | * Manufacturing of physical CPU chips (to be handled post-design phase). | + | * scalable, capabilities-based security model |
| - | * Integration into mass-market consumer devices | + | * features for comfortable coding in assembly for speed sensitive routines |
| + | * about 64 registers with support for tagging and hardware types (secure pointer arithmetic) | ||
| + | * instructions allowing both high code density (variable length) and fast execution (more complex decoding but better performance) | ||
| + | * in-CPU circuitry for more sophisticated calculations, | ||
| + | * fast calls to the kernel | ||
| + | * performance optimizations known in modern CPUs | ||
| + | * parallelizability, | ||
| + | * configurable balance between throughput, latency, and power consumption (without compromising security) | ||
| ===== 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:// | ||
| - | ==== Streaming Setup in Brmlab ==== | + | ==== Past Workshops |
| - | + | ||
| - | The public laptop available in the social room, clearly labeled " | + | |
| - | + | ||
| - | - Locate the aforementioned laptop. | + | |
| - | - Find its power supply adapter. | + | |
| - | - Put the laptop on a table near the pack of cables hanging down from the ceiling roughly in the middle of the room. | + | |
| - | - Connect the power supply adapter to 230V socket and to the laptop. | + | |
| - | - Power up the laptop by pressing the power button located just left of the delete key which is in the top right corner of the keyboard and double-check it is not running only on the battery. | + | |
| - | - Connect a mouse to the laptop - it is really needed for any actual directing of the session. | + | |
| - | - Go to the audio mixing table - by the time of this writing, it is located by the 3rd window pair counting from the entrance | + | |
| - | - At the table, search for and pick up: | + | |
| - | * red/black USB device for capturing HDMI output | + | |
| - | * blue USB-A to USB-A USB 3.0 cable | + | |
| - | * (probably black) HDMI cable of sufficient length (2m should be OK) | + | |
| - | - Get back to the laptop and connect the HDMI capture device to the remaining USB-A port of the laptop. | + | |
| - | - Start the Chromium browser and load the meeting URL (see above). | + | |
| - | - Grab the HDMI cable going from the projector just under the ceiling and connect it to the integrated HDMI port on the right hand side of the laptop (next to the power supply connector). | + | |
| - | - Power up the projector using the " | + | |
| - | - Ensure the system is configured to use the external projector as secondary / separate screen. | + | |
| - | - Start OBS Studio (it is installed). | + | |
| - | - If it asks for the permission to share a screen window, check it is the Chromium browser window you have just opened and allow sharing. | + | |
| - | - In the "Scene Collections" | + | |
| - | - Select the " | + | |
| - | - Ensure the laptop' | + | |
| - | - In the sources list right to the scene selection of the previous step, check and ensure: | + | |
| - | * The " | + | |
| - | * The " | + | |
| - | * The " | + | |
| - | - Now that everything is ready, click the "Start Virtual Camera" | + | |
| - | - Go back to Chromium browser window and select the newly created "OBS Camera" | + | |
| - | - Go back to OBS Studio and select the " | + | |
| - | + | ||
| - | ==== Past Workshops ==== | + | |
| * 2024-10-10 16:00 [[user: | * 2024-10-10 16:00 [[user: | ||
| Line 103: | Line 77: | ||
| * 2024-12-12 16:00 [[user: | * 2024-12-12 16:00 [[user: | ||
| * 2025-01-09 17:00 [[user: | * 2025-01-09 17:00 [[user: | ||
| + | * 2025-01-23 16:00 [[user: | ||
| + | * 2026-06-05 16:00 [[user: | ||
| + | * 2026-06-12 16:00 [[user: | ||
| + | * 2026-06-19 16:00 [[user: | ||
| + | * 2026-04-23 16:00 [[user: | ||
| + | * 2026-04-30 16:00 [[user: | ||
| + | * 2026-07-09 16:00 [[user: | ||
| - | ==== Planned ==== | ||
| - | |||
| - | |||
| - | ===== Design Topics ===== | ||
| - | ==== ISA Description ==== | ||
| - | Warning: This part may change wildly at this stage. | ||
| - | |||
| - | === Registers === | ||
| - | * 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 === | ||
| - | * 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 ==== | ||
| - | |||
| - | ==== Integrated Circuit Design ==== | ||
| - | |||
| - | ==== Tooling ==== | ||
| - | |||
| - | ==== Miscellaneous ==== | ||
| === Things to read === | === Things to read === | ||
| - | == Optimizations == | ||
| - | - Compressed pointers: https:// | ||
| - | - Read barriers pro concurent scavenger: https:// | + | ==== Optimizations ==== |
| - | - Chinual: https:// | + | * Compressed pointers: https:// |
| + | * Read barriers pro concurent scavenger: https:// | ||
| + | * Chinual: https:// | ||
| + | * https:// | ||
| - | - https:// | + | ===== Past milestones |
| - | ===== Current Progress | + | |
| - | + | ||
| - | ==== Tooling | + | |
| {{ : | {{ : | ||
| Line 153: | Line 104: | ||
| <WRAP clear></ | <WRAP clear></ | ||
| - | ~~META: | + | ==== Simulator GUI ==== |
| - | status | + | |
| - | & | + | |
| - | ~~ | + | |
| + | {{ : | ||
| + | A simple GUI was developed for simulating a SOC written in Verilog. | ||
| + | |||
| + | <WRAP clear></ | ||
project/ledum/start.1745586503.txt.gz · Last modified: 2025/04/25 13:08 by joe