-----------------------------------------------------------------
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,2 DMIPS/MHz mit 16Kbyte I/D-Cache (Dhrystone 2.1, GCC 4.3)
- Endianness umschaltbar zur Hard-reset Zeit
- Unterschiedliche Frequenzen für CPU und BUS möglich

-----------------------------------------------------------------
Known Limitations
-----------------------------------------------------------------
- keine MMU
- keine Unterstützung für Bus exceptions IBE und DBE
- kein externes Coprocessor interface (COP1..3) für z.B. FPU
- Befehle für Cop1..3 nicht implementiert: 
  CFCz, CTCz, COPz, MFCz, MTCz, LWCz, SWCz
  Benutzung dieser Befehle führt zur Exception 'RI' (Reserved Instruction)
- nicht alle COP0 Register/Bits vorhanden.

-----------------------------------------------------------------
Known Bugs
-----------------------------------------------------------------
- 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, fehlende COP-Befehle implementieren
- 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

-----------------------------------------------------------------
Performance bei 100MHz	
- GCC ohne Small-data section
- MIPS Rev. 9
-----------------------------------------------------------------
I/D-Cache	Dhrystone-2.1	RipeMD-160	Whetstone	Stanford	Queens(12x12)
1k		 32 DMIPS	 5 Mbit/s	 345 kwhets/s	47/767		2,135s
2k		 51 DMIPS	 5 Mbit/s	 534 kwhets/s	38/561		2,134s
4k		 72 DMIPS	 5 Mbit/s	 623 kwhets/s	36/259		2,121s
8k		 98 DMIPS	10 Mbit/s	1149 kwhets/s	31/228		1,938s
16k		115 DMIPS	17 Mbit/s	1234 kwhets/s	23/225		1,938s
32k		115 DMIPS	17 Mbit/s	1285 kwhets/s	24/218		1,938s
64k		115 DMIPS	17 Mbit/s	1285 kwhets/s	20/221		1,938s

-----------------------------------------------------------------
Performance bei 100MHz	
- GCC mit Small-data section
- MIPS Rev. 9
-----------------------------------------------------------------
I/D-Cache	Dhrystone-2.1	RipeMD-160	Whetstone	Stanford	Queens(12x12)
16k		117 DMIPS	17 Mbit/s	1236 kwhets/s	24/230		1,811s

-----------------------------------------------------------------
Performance bei 100MHz	
- GCC mit Small-data section
- MIPS Rev. 10
-----------------------------------------------------------------
I/D-Cache	Dhrystone-2.1	RipeMD-160	Whetstone	Stanford	Queens(12x12)
16k		120 DMIPS	17 Mbit/s	1242 kwhets/s	25/219		1,803s


