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