User Tools

Site Tools


project:ledum:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
project:ledum:start [2025/03/20 16:20] joeproject:ledum:start [2025/04/25 13:13] (current) – [Streaming Setup in Brmlab] joe
Line 28: Line 28:
   - **Optimize Performance:**   - **Optimize Performance:**
     * Ensure that the CPU achieves optimal performance in terms of throughput, latency, and power consumption, without compromising correctness or security.     * Ensure that the CPU achieves optimal performance in terms of throughput, latency, and power consumption, without compromising correctness or security.
 +    * 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.     * Balance hardware features for high-performance tasks with robust security measures for sensitive operations.
   - **Establish Robust Ecosystem Support:**   - **Establish Robust Ecosystem Support:**
Line 34: Line 35:
  
  
 +===== Project Scope =====
  
 +==== In-Scope ====
 +
 +  * **CPU Architecture Design:** Define instruction sets, pipeline architecture, memory hierarchy, and integration of object capabilities.
 +  * **Formal Verification:** Apply formal methods to mathematically prove the correctness of critical parts of the architecture.
 +  * **Security & Resource Management:** Implement object capabilities as a mechanism to control access to system resources.
 +  * **Prototyping and Simulation:** Build prototypes and simulate the architecture to validate design decisions.
 +  * **Performance Evaluation:** Benchmark the new CPU's performance across several applications to assess trade-offs between correctness, performance, and security.
 +  * **Software Toolchain Development:** Develop and release supporting software tools, such as compilers, debuggers, and simulators, that work with the new object capability model.
 +
 +==== Out of Scope ====
 +
 +  * Development of end-user software applications or operating systems.
 +  * Manufacturing of physical CPU chips (to be handled post-design phase).
 +  * Integration into mass-market consumer devices (focus will be on specialized, high-assurance markets initially).
  
 ===== 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's regular meetings on Thursdays (see [[event:start]]).
 +
 +If there is enough interest, we are streaming the workshops online using [[https://meet.jit.si/ledum-wg-meetup]]. We are also trying to get our A/V streaming and editing skills to a level that allows for publishing the recordings of the workshops. Any help with such endeavor would be more than welcome.
 +
 +==== Streaming Setup in Brmlab ====
 +
 +The public laptop available in the social room, clearly labeled "Brmlab", has some rudimentary setup for online streaming of Ledum Working Group Meetings. The online session can be setup as follows:
 +
 +  - 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 "Optoma" remote clipped to the pack of cables slightly above the table. You need to press the red power button in the top left corner twice and the red light on the projector should change to blue.
 +  - Ensure the system is configured to use the external projector as secondary / separate screen.
 +  - Move the Chromium browser window to the secondary screen and put it in the full-screen mode. Beware - without Fn-Lock, the F11 key puts the laptop in the Airplane Mode.
 +  - 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" menu at the top of OBS Studio's window, check whether "LedumMeeting" is selected and select it if it is not.
 +  - Select the "Default" scene in the lower left corner of the window.
 +  - Ensure the laptop's internal camera located just above its display has its cap open.
 +  - In the sources list right to the scene selection of the previous step, check and ensure:
 +    * The "JitsiWindow" source shares the Chromium browser window opened earlier.
 +    * The "SpeakerCamera" displays the image from the front camera facing the director of the session (that is typically you).
 +    * The "HDMICapture" properly sees whatever you connect to it (typically use another laptop to double-check).
 +  - Now that everything is ready, click the "Start Virtual Camera" button in the lower right corner (fourth from the bottom). You may need to enter the password "brmbrm".
 +  - Go back to Chromium browser window and select the newly created "OBS Camera" as the primary video source for the Jitsi meeting.
 +  - Go back to OBS Studio and select the "Intro" scene and you are ready to go. 
 +
 +==== Past Workshops ====
 +
 +  * 2024-10-10 16:00 [[user:tma]] - Verilog I: Introduction to Verilog (CZ)
 +  * 2024-10-24 16:00 [[user:tma]] - Verilog II: Register Bank in Verliog (CZ)
 +  * 2024-10-31 16:00 [[user:joe]] - Lambda Calculus I: Introduction to Lambda Calculus (CZ)
 +  * 2024-11-07 18:00 [[user:tma]] - Verilog III: Advanced Verilog (CZ)
 +  * 2024-11-14 16:00 [[user:sachy]] - Assembler on Mainframes (CZ)
 +  * 2024-11-21 18:00 [[user:yokotashi]] - Introduction to Electronics (CZ)
 +  * 2024-11-28 16:00 [[user:tma]] - Verilog IV: Testbenches (CZ)
 +  * 2024-12-05 16:00 [[user:joe]] - Lambda Calculus II: Lexical Scoping and Evaluator Implementation (CZ)
 +  * 2024-12-12 16:00 [[user:ccx]] -- History of Capability Systems I (CZ)
 +  * 2025-01-09 17:00 [[user:hexo]] -- Adders and Multipliers (CZ/SK)
 +
 +==== Planned ====
 +
  
 ===== Design Topics ===== ===== 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 ==== ==== Electronic Circuit Design ====
Line 47: Line 133:
  
 ==== Miscellaneous ==== ==== Miscellaneous ====
 +=== Things to read ===
 +== Optimizations ==
 +- Compressed pointers: https://shipilev.net/jvm/anatomy-quarks/23-compressed-references/
  
 +- Read barriers pro concurent scavenger: https://blog.openj9.org/2019/03/25/concurrent-scavenge-garbage-collection-policy/ + HW support https://www.ibm.com/support/pages/pause-less-garbage-collection-java-ibm-z https://www.ibm.com/docs/en/zos/3.1.0?topic=ixg-ieagsf-guarded-storage-facility-services
 +
 +- Chinual: https://tumbleweed.nu/r/lm-3/uv/chinual.html
 +
 +- https://pqnelson.github.io/org-notes/comp-sci/lisp/machine/i/architecture.html
 ===== Current Progress ===== ===== Current Progress =====
  
Line 55: Line 149:
  
 {{:project:ledum:rawaketa-l8b-assembler.png?direct&400 |}} {{:project:ledum:rawaketa-l8b-assembler.png?direct&400 |}}
 +
 +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.
  
 <WRAP clear></WRAP> <WRAP clear></WRAP>
project/ledum/start.1742487604.txt.gz · Last modified: 2025/03/20 16:20 by joe