diff --git a/lib/CPUs/MIPS/doc/J-MIPS.txt b/lib/CPUs/MIPS/doc/J-MIPS.txt new file mode 100644 index 0000000..1a4e552 --- /dev/null +++ b/lib/CPUs/MIPS/doc/J-MIPS.txt @@ -0,0 +1,77 @@ +----------------------------------------------------------------- +J-MIPS Features +----------------------------------------------------------------- + +- Synchrones Design +- Portable Beschreibung in VHDL +- Kompatible zur GNU Toolchain (Binutils, GCC, Newlib) +- Befehle kompatibel mit MIPS-1 ISA (z.B. MIPS R3000) +- 5-Stufige Pipeline und Hazardvermeidung durch Forwarding +- 64Bit Multiplier (32Bit Operanden), 12 Cycles Latenz +- 64Bit Divider (32Bit Operanden), 36 Cycles Latenz +- Coprocessor 0 (COP0) für Exceptionhandling +- Direct-mapped Instruction Cache mit variabler Größe, 8-words per Line +- Direct-mapped Data Cache mit variabler Größe, 8-words per Line +- J-Bus kompatible Bus Interface Unit (J-Bus ist im wesentlichen FIFO interface mit 'wichtigen' Signalnamen) +- 1,15 DMIPS/MHz mit 16Kbyte I/D-Cache (Dhrystone 2.1) + +----------------------------------------------------------------- +Known Limitations +----------------------------------------------------------------- +- keine MMU +- z.Zt. nur Little-endian. +- keine Unterstützung für Bus exceptions IBE und DBE +- kein externes Coprocessor interface (COP1..3) für z.B. FPU +- nicht alle COP0 Register/Bits vorhanden. + +----------------------------------------------------------------- +Known Bugs +----------------------------------------------------------------- +- nicht alle Cache-Sizes funktionieren +- Umschaltung (RE) zwischen Little/Big-Endian fehlerhaft +- es gibt bestimmt noch nicht entdeckte Bugs + +----------------------------------------------------------------- +Known Optimizations +----------------------------------------------------------------- +- Area: Multiplier als technologieabhängiges Primitive instanzieren +- Area: Auf Divider verzichten +- Area: Auf Multiplier verzichten +- Area vs. Speed: Bei Hazards Pipeline-stall statt Forwarding. + Durch Stalling geringerer Befehlsdurchsatz dafür weniger Logik. + Weniger Logik bedeutet vielleicht wieder auch größere Taktfrequenz. + +----------------------------------------------------------------- +Known ToDos +----------------------------------------------------------------- +- Unterstützung für Bus exceptions IBE und DBE +- Externes COP1..3 interface +- Optimierungen evaluieren und ggf. durchführen + +----------------------------------------------------------------- +Synthesis results +----------------------------------------------------------------- +Virtex-4 XC4VSX35-10 + +Config: 16Kbyte I/D-Cache + +Number of Slices 2387 15360 15% +Number of Slice Flip Flops 1784 30720 5% +Number of 4 input LUTs 3962 30720 12% +Number of FIFO16/RAMB16s 18 192 9% + +Speed: 110MHz nach Synthesis + +----------------------------------------------------------------- +Virtex-1 XCV1000-4 + +Config: 4Kbyte I/D-Cache + +Number of Slices 2045 13824 16% +Number of Slice Flip Flops 1783 27648 7% +Number of 4 input LUTs 3923 27648 15% +Number of FIFO16/RAMB16s 20 32 62% + +Speed: 30MHz nach Synthesis + +-----------------------------------------------------------------