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/02 15:00] – [Project Objectives] Added IPC>1 and OoO yokotashi | project:ledum:start [2025/07/03 22:42] (current) – [ISA Description] description of process creator yokotashi | ||
---|---|---|---|
Line 56: | Line 56: | ||
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 ==== | ||
+ | |||
+ | 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. | ||
+ | - 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" | ||
+ | - 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 ==== | ==== Past Workshops ==== | ||
Line 75: | Line 109: | ||
===== 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 | ||
+ | |||
+ | === SW-implemented services === | ||
+ | * scheduler | ||
+ | * memory allocator | ||
+ | * IO allocator | ||
+ | * message broker | ||
+ | * garbage collector | ||
+ | * process creator | ||
+ | |||
+ | Notes: | ||
+ | # Any fiber can provide those services to others using it's resources. But the initial providers have all available resources and ability ru run privileged instructions if it's needed for their jobs. | ||
+ | # Process hierarchy, memory quota hierarchy and IO hierarchy are completely independent. | ||
+ | |||
+ | Terminology | ||
+ | * thread - X has asked scheduler to create it. X is it's parent and can see it's whole memory. | ||
+ | * process - X has asked process creator to create it. Process creator is it' parent and can see it's whole memory. X is it's parent process in process creator' | ||
+ | * fiber - any thread or process | ||
+ | * There may be more process creators. Therefore the same fiber may be viewed as thread (from it's process creator and it's parent threads) and as process (from another process under the same process creator). | ||
+ | * Channel - some way of communicate which is using a tagged handle normal fiber can't create from integer (similar restriction like a FP has) | ||
+ | |||
+ | == scheduler == | ||
+ | * has HW capability to change settings of the HW scheduler in the CPU | ||
+ | * shouldn' | ||
+ | * works on fibers (doesn' | ||
+ | * must know CS:IP and time-quota of every fiber | ||
+ | * contains fiber hierarchy | ||
+ | * fiber can push to it (via message containing FP) what childs it wants and how to divide it's time between them. Those information must be converted to absolute values by the scheduler, therefore they can't be used directly from fiber' | ||
+ | |||
+ | == memory allocator == | ||
+ | * starts with FP to almost all memory (except memory given to other SW services) | ||
+ | * has information about what memory is empty and used | ||
+ | * has information about memory quotas | ||
+ | * when asked through some channel if can either allocate memory and return a FP or " | ||
+ | * it manages similar hierarchic structure as scheduler or process creator, but there are channels and their associated quotas in the tree | ||
+ | |||
+ | #1 message handler will do the creation itself, but the channel will be between allocator and anyone who has the complementary handler given to the original caller | ||
+ | |||
+ | == IO allocator == | ||
+ | * it has capabilities to communicate with the IO somehow (via messages and DMA to FP?) | ||
+ | * it has information about which channel has rights to use what part of IO space | ||
+ | * any channel owner can ask for creating another channel with less rights -> therefore the structure is hierarchic | ||
+ | * any channel owner can ask for destruction of channel under it in the hierarchy | ||
+ | * any channel owner can ask it to do some IO and if it has enough rights, that IO will be done | ||
+ | * there may be more fibers behaving as IO allocator - it enables virtualization (lower allocator asks the higher one) and having non-HW IO capabilities (like to send a piece of memory to IP:port via TCP or UDP) | ||
+ | |||
+ | == message broker == | ||
+ | * creates channels and tags their handles. It may create 4 handles at once differing in the lowest 2 bits. Each pair of them is for one way of communication. The lowest bit may specify if the handle is sender or reciever. These handles are tagged, therefore no one else can create them. | ||
+ | * destroys channels after being asked to do so. | ||
+ | * it operates the mesasging HW. | ||
+ | * TODO: specify how the hw and messages itself will work | ||
+ | * TODO: How to ask a message broker for new handles with no handles? Handle 0 may be for communincation with mesage broker and working even without the proper tag? Another instruction? | ||
+ | |||
+ | == garbage collector == | ||
+ | * collect unused memory | ||
+ | * ignores the FP to the whole RAM in memory allocator | ||
+ | * collects unused handles to communincation channels too (TODO: somehow) | ||
+ | |||
+ | Weak pointers will be needed probably. | ||
+ | |||
+ | == process creator == | ||
+ | * from the scheduler' | ||
+ | * creates and destroys a processes when asked | ||
+ | * creates channels between parent and child process | ||
+ | * stores process hierarchy similarly as scheduler stores fiber hierarchy and memory allocator stores quota hierarchy | ||
+ | |||
+ | There may be more process creators. | ||
+ | The main reason for existence of process creator is possibility to create a child without being able to travel down through it's memory. Process creator will have this ability of course, but it should be small, simple and well audited. | ||
==== Electronic Circuit Design ==== | ==== Electronic Circuit Design ==== | ||
Line 83: | Line 199: | ||
==== Miscellaneous ==== | ==== Miscellaneous ==== | ||
+ | === Things to read === | ||
+ | == Optimizations == | ||
+ | - Compressed pointers: https:// | ||
+ | - Read barriers pro concurent scavenger: https:// | ||
+ | |||
+ | - Chinual: https:// | ||
+ | |||
+ | - https:// | ||
===== Current Progress ===== | ===== Current Progress ===== | ||
Line 93: | Line 217: | ||
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. | 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></ | ||
+ | |||
+ | ==== Simulator GUI ==== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | A simple GUI was developed for simulating a SOC written in Verilog. | ||
<WRAP clear></ | <WRAP clear></ |
project/ledum/start.1743606042.txt.gz · Last modified: 2025/04/02 15:00 by yokotashi