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