I wanna design a processor architecture.
Post
Remote status
Context
7@cjd can you please just screw around with RISC-V extensions like everyone else? 😋
I want to make every instruction asynchronous using a belt where operands are always taken off the close end of the belt, and results are written to wherever on the belt the instruction indicates. In hardware, the close end is a cache and the far end is DRAM.
Then you can do like n way hyperthreading just by interleaving belts.
Branch instructions would just have to return a result which is thrown to the belt, and that is the branch predictor context which becomes the 2nd operand of the next branch.
@cjd also, isn't that just a Turing machine .. with the principle of the single line of data, except now re-envisioned in stages of memory in a processor pipeline.
But for it to really work, there needs to be a similar design for instructions, to get rid of the icache - this would be more Turing like indeed.
@cjd with Turing machine, everything's on one tape. The current position points to the next action, essentially. You can move to a different position. Most rudimemtary actions necessary to operate on the tape.
Like I said, I'm really not sure how to do instructions. Either you prepare the belt for both possible directions, and then use skip instructions to discard what you didn't need, or you basically spawn a new thread and exit so your belt is swept up in hardware.
Replies
2*how to do branches
@cjd if you're curious about this, can't you use something like vlsi and a simulator/emulator. You could model the hardware entirely, prly. For example, the picorv32 is fully modeled I think. You could essentially just design the whole thing.