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