MIPT-MIPS / MIPT-V 2019
98% test coverage!
RISC-V
- Test infrastructure by Pavel Kryukov
- I instructions implemented by Pavel Kryukov
- M instructions implemented by Yaheni Sharamed
- C instructions decoder by Rustem Yunusov
- Print of 128 bit numbers by Andrey Agrachev
System simulation
- Several options of precise trap modeling by Vsevolod Pukhov
- Build with 'vanilla' GDB 8.3 source files by Pavel Kryukov
- GDB-driven manipulations with registers and program counter by Pavel Kryukov
Branch prediction
- Decoupling of BTB and BP pipelines by Yan Logovsky and Pavel Kryukov
- Early detection of branch target mispredictions by Yan Logovsky
- Performance improvement for MIPS likely branches by Rustem Yunusov
- Calculation of branch misprediction rate by Yaheni Sharamed
- Bypass of return address to execution by Yaheni Sharamed
- Bug fixes:
- Do not flush pipeline on target mispredict for not taken branch (Yan Logovsky)
- Allow update of BTB from short mispredicts and long mispredicts (Rustem Yunusov)
Cache improvements by Andrey Agrachev
- Infrastructure for cache replacement policies
- Pseudo-LRU replacement policy
- Use of Google Dense Hash for simulation speed
Execution pipeline improvement by Egor Bova
- Initial support for multi-wide writeback stage
MIPS
- Generation of MIPS traps by Vsevolod Pukhov
- Unit tests for MIPS instructions by Egor Bova. Bug fixes:
- Treat
dadd
anddaddu
as MIPS III instructions - Fix of 64-bit multiplication on x86 targets and/or VS builds
- Branch-and-link instructions should link even if not taken
- Use only LSB of the variable shift RHS operand (#709)
- Treat
- Decoding of CP1 (floating point) instructions by Egor Bova.
- Support of branch delay slot by Pavel Kryukov and Andrey Agrachev
- Big-endian MIPS by Pavel Kryukov
Complete refactoring of port system by Pavel Kryukov
- Dynamic type matching
- Self-cleaning
- Arena allocations with optimizations for POD-based data structures
- Type erasure for ports to reduce amount of templates
- Translation of port templates in a separate translation unit
- As a result, 1.5x simulation speed and 2x compilation speed boosts
New manuals
- Branch prediction pipelines by Rustem Yunusov (in progress)
External PRs:
- Boost: boostorg/multiprecision#129
- GDB: 444b3fa, 8f0a214, dc7e818, 7516c26
- LLVM:
- POPL: badaix/popl#16
- RISC-V:
- Visual Studio: