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