[Libre-soc-bugs] [Bug 841] New: Idea for openpower/x86/aarch64/riscv/etc. programmable decoder

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Thu May 26 10:15:40 BST 2022


https://bugs.libre-soc.org/show_bug.cgi?id=841

            Bug ID: 841
           Summary: Idea for openpower/x86/aarch64/riscv/etc. programmable
                    decoder
           Product: Libre-SOC's first SoC
           Version: unspecified
          Hardware: Other
                OS: Linux
            Status: DEFERRED
          Severity: enhancement
          Priority: ---
         Component: Source Code
          Assignee: programmerjake at gmail.com
          Reporter: programmerjake at gmail.com
                CC: libre-soc-bugs at lists.libre-soc.org
   NLnet milestone: ---

writing this down before I forget:
i have an idea for a cpu that can execute any isa by having the decoder be
programmable, so we could build a compiler that takes qemu's source (or
similar) -- probably the guest instruction to tiny-code-gen translator -- and
spits out a binary that programs the decoder to decode that selected
instruction set. (taking qemu's source and using it to program a fully-general
decoder probably would get around patents on the instruction sets, since the
isa vendors presumably are fine with qemu decoding their instruction sets (the
vendors often contribute to qemu), and this is just another way of executing
parts of qemu).

the decoder would be made from 2 parts, a fpga-style pipeline (fast-path) that
decodes several instructions per clock along with a flag for when it needs to
fallback to the slow-path, and a turing-complete slow path that either is a
simple cpu that spits out the decoded instructions or gets the main cpu to
execute the program to decode instructions (via a super-fast interrupt).

the decoded instructions would then go into an uop-cache, so programs can still
generally run quickly even if the instructions used are complex/slow to decode.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list