Home | History | Annotate | Line # | Download | only in mips
README.models revision 1.5.18.2
      1  1.5.18.2  jdolecek # $NetBSD: README.models,v 1.5.18.2 2017/12/03 11:36:25 jdolecek Exp $
      2  1.5.18.2  jdolecek 
      3  1.5.18.2  jdolecek MIPS models and architecture levels
      4  1.5.18.2  jdolecek -----------------------------------
      5  1.5.18.2  jdolecek 
      6  1.5.18.2  jdolecek Since this is a complex and confusing topic and there's a shortage of
      7  1.5.18.2  jdolecek information (especially, a shortage of reliable information), I'm
      8  1.5.18.2  jdolecek creating this document as a reference for people doing MIPS stuff on
      9  1.5.18.2  jdolecek NetBSD (and elsewhere).
     10  1.5.18.2  jdolecek 
     11  1.5.18.2  jdolecek Citations appear in []. With luck all important facts have citations.
     12  1.5.18.2  jdolecek 
     13  1.5.18.2  jdolecek 
     14  1.5.18.2  jdolecek ------------------------------------------------------------
     15  1.5.18.2  jdolecek 1. Architecture levels.
     16  1.5.18.2  jdolecek 
     17  1.5.18.2  jdolecek These architecture levels exist:
     18  1.5.18.2  jdolecek 
     19  1.5.18.2  jdolecek         32-bit     64-bit
     20  1.5.18.2  jdolecek 
     21  1.5.18.2  jdolecek         MIPS-I
     22  1.5.18.2  jdolecek         MIPS-II
     23  1.5.18.2  jdolecek                    MIPS-III
     24  1.5.18.2  jdolecek                    MIPS-IV
     25  1.5.18.2  jdolecek                    MIPS-V
     26  1.5.18.2  jdolecek         MIPS32     MIPS64
     27  1.5.18.2  jdolecek         MIPS32r2   MIPS64r2
     28  1.5.18.2  jdolecek         MIPS32r3   MIPS64r3
     29  1.5.18.2  jdolecek         MIPS32r4   MIPS64r4
     30  1.5.18.2  jdolecek         MIPS32r5   MIPS64r5
     31  1.5.18.2  jdolecek         MIPS32r6   MIPS64r6
     32  1.5.18.2  jdolecek 
     33  1.5.18.2  jdolecek Note that while MIPS32 is a 32-bit subset of MIPS64, each
     34  1.5.18.2  jdolecek corresponding pair of MIPS32rN and MIPS64rN are comparable in age and
     35  1.5.18.2  jdolecek properties. Later revisions (further down the list) are mostly supersets
     36  1.5.18.2  jdolecek of earlier revisions, although some exceptions exist.
     37  1.5.18.2  jdolecek 
     38  1.5.18.2  jdolecek 
     39  1.5.18.2  jdolecek ------------------------------------------------------------
     40  1.5.18.2  jdolecek 2. CPU models.
     41  1.5.18.2  jdolecek 
     42  1.5.18.2  jdolecek For vintage MIPS these are the standard models as of fall 1996 [idt96
     43  1.5.18.2  jdolecek A-198] and the corresponding architecture levels. (There were many
     44  1.5.18.2  jdolecek additional models put out by licensees or by the MIPS company itself,
     45  1.5.18.2  jdolecek which have model numbers with fewer zeros.)
     46  1.5.18.2  jdolecek 
     47  1.5.18.2  jdolecek 	R2000		MIPS-I (32-bit)		[idt96 1-5]
     48  1.5.18.2  jdolecek 	R3000		MIPS-I (32-bit)		[idt96 1-5]
     49  1.5.18.2  jdolecek 	R4000		MIPS-III (64-bit)	[idt96 A-197]
     50  1.5.18.2  jdolecek 	R4200		MIPS-III (64-bit)	[idt96 A-197]
     51  1.5.18.2  jdolecek 	R4300		MIPS-III (64-bit)	[idt96 A-197]
     52  1.5.18.2  jdolecek 	R4400		MIPS-III (64-bit)	[idt96 A-197]
     53  1.5.18.2  jdolecek 	R4600		MIPS-III (64-bit)	[idt96 A-197]
     54  1.5.18.2  jdolecek 	R5000		MIPS-IV (64-bit)	[idt96 1-5]
     55  1.5.18.2  jdolecek 	R6000		MIPS-II ??
     56  1.5.18.2  jdolecek 	R8000		MIPS-IV (64-bit)	[idt96 1-5]
     57  1.5.18.2  jdolecek 	R10000		MIPS-IV (64-bit)	[idt96 1-5]
     58  1.5.18.2  jdolecek 	R1x000		MIPS-IV (64-bit)
     59  1.5.18.2  jdolecek 
     60  1.5.18.2  jdolecek For later models than this I currently have no information.
     61  1.5.18.2  jdolecek 
     62  1.5.18.2  jdolecek 
     63  1.5.18.2  jdolecek ------------------------------------------------------------
     64  1.5.18.2  jdolecek 3. CPU models present in various systems.
     65  1.5.18.2  jdolecek 
     66  1.5.18.2  jdolecek These are the CPU models found in various systems NetBSD does and
     67  1.5.18.2  jdolecek doesn't support. This table also notes endianness; MIPS chips are
     68  1.5.18.2  jdolecek bi-endian but are wired up one way or the other on motherboards.
     69  1.5.18.2  jdolecek 
     70  1.5.18.2  jdolecek    algor (little-endian [buildsh])
     71  1.5.18.2  jdolecek 	Algorithmics P-4000i			??
     72  1.5.18.2  jdolecek 	Algorithmics P-4032			??
     73  1.5.18.2  jdolecek 	Algorithmics P-5064			??
     74  1.5.18.2  jdolecek 	Algorithmics P-6032			??
     75  1.5.18.2  jdolecek    arc (little-endian [buildsh])
     76  1.5.18.2  jdolecek 	Acer PICA				??
     77  1.5.18.2  jdolecek 	MIPS Magnum 4000			??
     78  1.5.18.2  jdolecek 	NEC Image RISCstation			??
     79  1.5.18.2  jdolecek 	NEC Express RISCserver			??
     80  1.5.18.2  jdolecek 	NEC RISCserver 2200			??
     81  1.5.18.2  jdolecek 	NEC RISCstation 2200			??
     82  1.5.18.2  jdolecek 	NEC RISCstation 2250			??
     83  1.5.18.2  jdolecek 	NEC Express5800/230 R4400 PCI		presumably R4400 (MIPS-III)
     84  1.5.18.2  jdolecek 	NEC Express5800/240 R4400 EISA		presumably R4400 (MIPS-III)
     85  1.5.18.2  jdolecek 	DeskStation Tyne			??
     86  1.5.18.2  jdolecek    cobalt (little-endian [buildsh])
     87  1.5.18.2  jdolecek 	Qube ... ??				??
     88  1.5.18.2  jdolecek 	RaQ ... ??				??
     89  1.5.18.2  jdolecek    emips (big-endian [buildsh])
     90  1.5.18.2  jdolecek 	... ??					??
     91  1.5.18.2  jdolecek 	(see http://research.microsoft.com/en-us/projects/emips/ )
     92  1.5.18.2  jdolecek    evbmips
     93  1.5.18.2  jdolecek    	Loongson 2F ( gdium, lemote etc. )	more or less LE MIPS-III with
     94  1.5.18.2  jdolecek    						some extensions
     95  1.5.18.2  jdolecek    	xburst ( as in, jz4780, found on CI20 )	LE MIPS32R2 with extensions
     96  1.5.18.2  jdolecek 	... ??					?? (various-endian)
     97  1.5.18.2  jdolecek    ews4800mips (big-endian [buildsh])
     98  1.5.18.2  jdolecek 	EWS4800/350				??
     99  1.5.18.2  jdolecek 	EWS4800/350F				??
    100  1.5.18.2  jdolecek 	EWS4800/360AD				??
    101  1.5.18.2  jdolecek 	EWS4800/360ADII				??
    102  1.5.18.2  jdolecek 	EWS4800/360SX				??
    103  1.5.18.2  jdolecek 	EWS4800/360EX				??
    104  1.5.18.2  jdolecek 	EWS4800/360				??
    105  1.5.18.2  jdolecek 	... ??					??
    106  1.5.18.2  jdolecek    hpcmips (big-endian [buildsh])
    107  1.5.18.2  jdolecek 	see http://wiki.netbsd.org/ports/hpcmips/processor_comparison/
    108  1.5.18.2  jdolecek    mipsco (big-endian [buildsh])
    109  1.5.18.2  jdolecek 	Various MIPS Computer Systems, Inc.	see [mipscolist]	
    110  1.5.18.2  jdolecek 	Bull DPX/Prostation M-20		??
    111  1.5.18.2  jdolecek    newsmips (big-endian [buildsh])
    112  1.5.18.2  jdolecek 	NWS-3470D				R3000 (MIPS-I) [portpage]
    113  1.5.18.2  jdolecek 	NWS-3410				R3000 (MIPS-I) [portpage]
    114  1.5.18.2  jdolecek 	NWS-3460				R3000 (MIPS-I) [portpage]
    115  1.5.18.2  jdolecek 	NWS-3710				R3000 (MIPS-I) [portpage]
    116  1.5.18.2  jdolecek 	NWS-3720				R3000 (MIPS-I) [portpage]
    117  1.5.18.2  jdolecek 	NWS-3800 series				??
    118  1.5.18.2  jdolecek 	NWS-4000 series				R4600 (MIPS-III) [portpage]
    119  1.5.18.2  jdolecek 	NWS-5000				R4[04]00 (MIPS-III) [portpage]
    120  1.5.18.2  jdolecek    playstation2 (little-endian [buildsh])
    121  1.5.18.2  jdolecek 	playstation2				R5900
    122  1.5.18.2  jdolecek 	(almost all of MIPS-III + movn/movz) [linux-mips wiki R5900]
    123  1.5.18.2  jdolecek    pmax (little-endian [buildsh])
    124  1.5.18.2  jdolecek 	DECstation/system 2100 and 3100		R2000 (MIPS-I) [portpage]
    125  1.5.18.2  jdolecek 	DECsystem 5100				R3000 (MIPS-I) [portpage]
    126  1.5.18.2  jdolecek 	Personal DECstation 5000/20, /25, /33	R3000 (MIPS-I) [portpage]
    127  1.5.18.2  jdolecek 	Personal DECstation 5000/50		R4000 (MIPS-III) [portpage]
    128  1.5.18.2  jdolecek 	DECstation/system 5000/120, /125, /133	R3000 (MIPS-I) [portpage]
    129  1.5.18.2  jdolecek 	DECstation/system 5000/150		R4000 (MIPS-III) [portpage]
    130  1.5.18.2  jdolecek         DECstation/system 5000/200		R3000 (MIPS-I) [portpage]
    131  1.5.18.2  jdolecek 	DECstation/system 5000/240		R3000 (MIPS-I) [portpage]
    132  1.5.18.2  jdolecek 	DECstation/system 5000/260		R4400 (MIPS-III) [portpage]
    133  1.5.18.2  jdolecek 	DECsystem 5900				R3000 (MIPS-I) [portpage]
    134  1.5.18.2  jdolecek 	DECsystem 5900-260			R4400 (MIPS-III) [portpage]
    135  1.5.18.2  jdolecek 	DECsystem 5500				R3000 (MIPS-I) [portpage]
    136  1.5.18.2  jdolecek    sbmips
    137  1.5.18.2  jdolecek 	BCM91250A (Swarm) evaluation board	Broadcomm BCM1250 [portpage]
    138  1.5.18.2  jdolecek    sgimips (big-endian [buildsh])
    139  1.5.18.2  jdolecek 	4D/20					??
    140  1.5.18.2  jdolecek 	4D/25					??
    141  1.5.18.2  jdolecek 	Indigo					R3000 (MIPS-I) [portpage]
    142  1.5.18.2  jdolecek 	Indigo (R4x00)				R4?00 (MIPS-III) [portpage]
    143  1.5.18.2  jdolecek         4D/30					??
    144  1.5.18.2  jdolecek 	4D/35					??
    145  1.5.18.2  jdolecek         Indigo2 (R4x00)				R4?00 (MIPS-III) [portpage]
    146  1.5.18.2  jdolecek         Challenge M				??
    147  1.5.18.2  jdolecek         Indy (R4x00)				R4?00 (MIPS-III) [portpage]
    148  1.5.18.2  jdolecek         Indy (R5000)				R5000 (MIPS-IV) [portpage]
    149  1.5.18.2  jdolecek         Challenge S (R4x00)			R4?00 (MIPS-III) [portpage]
    150  1.5.18.2  jdolecek 	Challenge S (R5000)			R5000 (MIPS-IV) [portpage]
    151  1.5.18.2  jdolecek 	R10000 Power Indigo2			R10000 (MIPS-IV) [portpage]
    152  1.5.18.2  jdolecek 	Octane					R1x000 (MIPS-IV) [portpage]
    153  1.5.18.2  jdolecek         O2 (R5000)				R5000 (MIPS-IV) [portpage]
    154  1.5.18.2  jdolecek 	O2 (RM5200)				RM5200 (MIPS-IV) [portpage]
    155  1.5.18.2  jdolecek 	O2 (R7000)				R7000  (MIPS-IV) [portpage]
    156  1.5.18.2  jdolecek 	O2 (R10000)				R10000 (MIPS-IV) [portpage]
    157  1.5.18.2  jdolecek 	O2 (R12000)				R12000 (MIPS-IV) [portpage]
    158  1.5.18.2  jdolecek 	O2 (R14000)				R14000 (MIPS-IV) [portpage]
    159  1.5.18.2  jdolecek 	Fuel					R1x000 (MIPS-IV) [portpage]
    160  1.5.18.2  jdolecek 	Tezro					R1x000 (MIPS-IV) [portpage]
    161  1.5.18.2  jdolecek 	... ??
    162  1.5.18.2  jdolecek 
    163  1.5.18.2  jdolecek 
    164  1.5.18.2  jdolecek ------------------------------------------------------------
    165  1.5.18.2  jdolecek 4. FPU properties
    166  1.5.18.2  jdolecek 
    167  1.5.18.2  jdolecek TBD... this is complex and messy (XXX / ??)
    168  1.5.18.2  jdolecek 
    169  1.5.18.2  jdolecek 
    170  1.5.18.2  jdolecek ------------------------------------------------------------
    171  1.5.18.2  jdolecek 5. Exception handling properties
    172  1.5.18.2  jdolecek 
    173  1.5.18.2  jdolecek TBD... (XXX / ??)
    174  1.5.18.2  jdolecek 
    175  1.5.18.2  jdolecek 
    176  1.5.18.2  jdolecek ------------------------------------------------------------
    177  1.5.18.2  jdolecek 6. MMU properties
    178  1.5.18.2  jdolecek 
    179  1.5.18.2  jdolecek TBD... (XXX / ??)
    180  1.5.18.2  jdolecek 
    181  1.5.18.2  jdolecek 
    182  1.5.18.2  jdolecek ------------------------------------------------------------
    183  1.5.18.2  jdolecek 7. Cache properties
    184  1.5.18.2  jdolecek 
    185  1.5.18.2  jdolecek TBD... (XXX / ??)
    186  1.5.18.2  jdolecek 
    187  1.5.18.2  jdolecek 
    188  1.5.18.2  jdolecek ------------------------------------------------------------
    189  1.5.18.2  jdolecek 8. Instruction ordering properties and hazards
    190  1.5.18.2  jdolecek 
    191  1.5.18.2  jdolecek TBD... (XXX / ??)
    192  1.5.18.2  jdolecek 
    193  1.5.18.2  jdolecek In the absence of the SYNC instruction before MIPS-II [idt96 A-172,
    194  1.5.18.2  jdolecek mips32insn 215], apparently on a R3000 you can force pending memory
    195  1.5.18.2  jdolecek writes to complete by doing an uncached read. [idt96 11-13]
    196  1.5.18.2  jdolecek 
    197  1.5.18.2  jdolecek Apparently also on some models but not others the state of the write
    198  1.5.18.2  jdolecek buffer is wired to the coprocessor 0 condition bit and you can also do
    199  1.5.18.2  jdolecek this by using the otherwise useless bc0f instruction (branch on
    200  1.5.18.2  jdolecek coprocessor 0 false) to loop. [no citation, I found this in passing
    201  1.5.18.2  jdolecek the other day with Google while looking for something else]
    202  1.5.18.2  jdolecek 
    203  1.5.18.2  jdolecek 
    204  1.5.18.2  jdolecek ------------------------------------------------------------
    205  1.5.18.2  jdolecek 9. Pipeline hazards
    206  1.5.18.2  jdolecek 
    207  1.5.18.2  jdolecek TBD... (XXX / ??)
    208  1.5.18.2  jdolecek 
    209  1.5.18.2  jdolecek On MIPS-I a load instruction requires an explicit one-cycle wait
    210  1.5.18.2  jdolecek before using the result. This restriction was lifted in MIPS-II,
    211  1.5.18.2  jdolecek with the addition of an interlock in the pipeline. [idt96 A-2]
    212  1.5.18.2  jdolecek 
    213  1.5.18.2  jdolecek A multiply should not be started within two cycles of a MFHI or MFLO
    214  1.5.18.2  jdolecek instruction, as an interrupt that requires restarting the MFHI or MFLO
    215  1.5.18.2  jdolecek might (will) get the result from the subsequent multiply. At least on
    216  1.5.18.2  jdolecek MIPS-I. [idt96 2-4]  I guess this is true for divides as well.
    217  1.5.18.2  jdolecek 
    218  1.5.18.2  jdolecek 
    219  1.5.18.2  jdolecek ------------------------------------------------------------
    220  1.5.18.2  jdolecek 10. Coprocessor 0 hazards
    221  1.5.18.2  jdolecek 
    222  1.5.18.2  jdolecek TBD... (XXX / ??)
    223  1.5.18.2  jdolecek 
    224  1.5.18.2  jdolecek 
    225  1.5.18.2  jdolecek ----------------------------------------------------------------------
    226  1.5.18.2  jdolecek 11. Deprecated/removed material.
    227  1.5.18.2  jdolecek 
    228  1.5.18.2  jdolecek When the exception handling model was changed for MIPS-III
    229  1.5.18.2  jdolecek (introducing the ERET instruction) the RFE instruction supporting the
    230  1.5.18.2  jdolecek old model was removed.  [idt96 A-134]
    231  1.5.18.2  jdolecek 
    232  1.5.18.2  jdolecek Coprocessor 3 (that is, the ability to have a third coprocessor, which
    233  1.5.18.2  jdolecek had never been used for anything) was removed in MIPS-III [idt96 A-197].
    234  1.5.18.2  jdolecek 
    235  1.5.18.2  jdolecek The branch likely instructions (e.g. BEQL) were added in MIPS-II
    236  1.5.18.2  jdolecek [mips32insn 56] and deprecated not long after, at least by MIPS32
    237  1.5.18.2  jdolecek [mips32insn 57] and were removed in release MIPS32 Release 6
    238  1.5.18.2  jdolecek [mips32newinsn2a 71].
    239  1.5.18.2  jdolecek 
    240  1.5.18.2  jdolecek SSNOP as a special NOP was deprecated in MIPS32/64 Release 6
    241  1.5.18.2  jdolecek [mips32newinsn2a 375] and sequences using SSNOP should include the
    242  1.5.18.2  jdolecek new EHB which counts as an SSNOP on older implementations
    243  1.5.18.2  jdolecek [mips32newinsn2a 174] ... and possibly SYNC/SYNCI ???
    244  1.5.18.2  jdolecek [mips32newinsn2a 394-401]
    245  1.5.18.2  jdolecek 
    246  1.5.18.2  jdolecek ... ??
    247  1.5.18.2  jdolecek 
    248  1.5.18.2  jdolecek ------------------------------------------------------------
    249  1.5.18.2  jdolecek 12. Conditional compilation in NetBSD
    250  1.5.18.2  jdolecek 
    251  1.5.18.2  jdolecek TBD... (XXX / ??)
    252  1.5.18.2  jdolecek 
    253  1.5.18.2  jdolecek 
    254  1.5.18.2  jdolecek ------------------------------------------------------------
    255  1.5.18.2  jdolecek References:
    256  1.5.18.2  jdolecek 
    257  1.5.18.2  jdolecek [buildsh] The MACHINE/MACHINE_ARCH architecture table in NetBSD
    258  1.5.18.2  jdolecek 	build.sh.
    259  1.5.18.2  jdolecek 
    260  1.5.18.2  jdolecek [idt96] "IDT MIPS Microprocessor Family Software Reference Manual",
    261  1.5.18.2  jdolecek 	Integrated Device Technology, Version 2.0, dated October 1996.
    262  1.5.18.2  jdolecek 
    263  1.5.18.2  jdolecek [linux-mips wiki] https://www.linux-mips.org/wiki/
    264  1.5.18.2  jdolecek 
    265  1.5.18.2  jdolecek [mips32intro] "MIPS32(TM) Architecture For Programmers Volume I:
    266  1.5.18.2  jdolecek 	Introduction to the MIPS32(TM) Architecture", MIPS
    267  1.5.18.2  jdolecek 	Technologies, Document Number MD00082, Revision 0.95, dated
    268  1.5.18.2  jdolecek 	March 2001. This was apparently an external review version or
    269  1.5.18.2  jdolecek 	something and has been available on the Internet; the final
    270  1.5.18.2  jdolecek 	version, and later revisions, never were. (AFAIK)
    271  1.5.18.2  jdolecek 
    272  1.5.18.2  jdolecek [mips32insn] "MIPS32(TM) Architecture For Programmers Volume II: The
    273  1.5.18.2  jdolecek 	MIPS32(TM) Instruction Set", MIPS Technologies, Document Number
    274  1.5.18.2  jdolecek 	MD00086, Revision 0.95, March 12, 2001. Ditto.
    275  1.5.18.2  jdolecek 
    276  1.5.18.2  jdolecek [mips32newinsn2a] "MIPS32(R) Architecture For Programmers Volume II-A:
    277  1.5.18.2  jdolecek 	The MIPS32(R) Instruction Set Manual", Imagination, Document
    278  1.5.18.2  jdolecek 	Number MD00086, Revision 6.02, dated December 10, 2014.
    279  1.5.18.2  jdolecek 
    280  1.5.18.2  jdolecek [mips32priv] "MIPS32(TM) Architecture For Programmers Volume III: The
    281  1.5.18.2  jdolecek 	MIPS32(TM) Privileged Resource Architecture", Document Number
    282  1.5.18.2  jdolecek 	MD00090, Revision 0.95, dated March 2001. Ditto.
    283  1.5.18.2  jdolecek 
    284  1.5.18.2  jdolecek [portpage] The port page for this NetBSD port on wiki.netbsd.org, or a
    285  1.5.18.2  jdolecek 	subpage. Ideally these references should be replaced with
    286  1.5.18.2  jdolecek 	something less self-referential.
    287  1.5.18.2  jdolecek 
    288  1.5.18.2  jdolecek [mipscolist] List of MIPS Computer Systems, Inc. machines hosted on the
    289  1.5.18.2  jdolecek 	NetBSD web server: https://www.netbsd.org/ports/mipsco/models.html
    290  1.5.18.2  jdolecek 
    291