Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RISC-V switch of QtMips project #1

Open
40 of 66 tasks
ppisa opened this issue Jan 7, 2021 · 0 comments
Open
40 of 66 tasks

RISC-V switch of QtMips project #1

ppisa opened this issue Jan 7, 2021 · 0 comments
Assignees

Comments

@ppisa
Copy link
Member

ppisa commented Jan 7, 2021

  • Update memory model
    • User read and write methods with void pointer and variable buffer size (easier for mmap, for system calls emulation, ELF image writing to memory)
    • Use plain byte addressable backend - it allows to support big and little endian architectures easier and mix of endianness between emulated CPU and host
    • Update cache to work above new model
    • Update peripherals to work above new model, add endian switch to memory backend and frontend objects
  • Introduce Address a RegisterValue types to allow 64-bit RISC-V support one day
  • Move components to "src" subdirectory
  • RISC-V core
    • Rename objects and file names to be more architecture neutral or switch to RISC-V names
    • Decide source of instruction encoding (QtMips used GNU binutils, C converted by Python to Python, then Python simarch )
    • Switch field names to match RISC-V ISA documents
    • Rewrite ALU to support RISC-V operations and GPR file
    • Consider floating point data path and vector unit communication with GPR
    • Redefine signal names and InstructionFlags #27
    • Update interstage buffers/registers in machine::Core
    • instruction arguments description ArgumentDesc
    • Unit for immediate decode
    • Switch/generate RISC-V instruction description table
    • Update branch processing, switch to flush after branch, decide where to process branches (Decode or Execute after ALU)
    • Decode instruction length (Compressed code) and appropriate PC increment
    • Replace COP0 by machine registers
    • Update resolution of exceptions
    • Update unit tests
    • Update complex assembler based testcases
  • Update core visualization
    • Update existing core visualization to roughly match RISC-V
    • Consider switch of core visualization to SvgScene, old one
    • Update memory view - NOTHING TO DO
    • Update register views
    • Update instruction view, what to to with 16/32 bit resync
    • DWARF mapping between instruction address and source line
  • Update templates and examples
    • Add more advanced examples into repository.
    • Build examples with CMake ???
  • System calls emulation update
    • Switch stream/file backends to QIODevice
    • Update serial port to QIODevice
    • Update systemcalls to QIODevice
    • Update systemcalls to RISC-V codes and parameters, get rid of delay slot
    • Rewrite mmap to utilize new memory model and map real files on Linux and Windows
  • Update all documentation and teaching materials
    • Update README
    • Update B35APO pages
  • Packaging and make system
    • CMake
      • Test on Linux
      • Test on Emscripten
      • Test on Windows MingW
      • Test on MacOS
    • SUSE Open Build service
    • UBUNTU Lauchpad
    • Nix
    • Guix
    • macOS (brew)
    • ??? for Window (choco?, winget?, store?, pkg)
  • Advanced topics
    • Branch predictor
    • L2/Ln cache
    • MMU
    • Multicore
    • Extend cache states for MESI/MOESI
    • Visualization of coherence protocols
    • Visualization of instruction decode (fields)
@jdupak jdupak self-assigned this Mar 17, 2021
@jdupak jdupak pinned this issue Mar 17, 2021
jdupak pushed a commit that referenced this issue Aug 20, 2021
Enable dock widows nesting to enable show cache + memory simultaneously
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants