Talk:MIPS architecture/Archive 1

MIPS syscalls?
You speak about MIPS syscall... But are you sure they aren't SPIM syscall? Has the processor predefined syscalls???


 * I'm not sure what your question is. SYSCALL is an instruction implemented by the hardware. It would be used by the Operating System with different hint codes to call the relevant system call software. Since SPIM is a software emulator/simulator of the hw architecture, it would/should implement this instruction. Dyl 17:29, 28 September 2006 (UTC)


 * I'm speaking about the table entitled "MIPS system calls". It seems strange to me that MIPS has fixed system calls for print_int (1) or print_string (4).


 * Ah, sorry about my misunderstanding. MIPS didn't fix the system calls. These values are probably what's used by some OS kernel implemented on MIPS CPUs. That emulator just chose to copy what a particular OS does. If you implement both the kernel and the compilers/assemblers, you can pick your own values. Dyl 15:58, 30 September 2006 (UTC)


 * So may be we should rename the table. Something like "examples of MIPS system calls" or remove it ...

Major designers and contributors
It would be nice to list some major designers and contributors.


 * I have imperfect knowledge about this. Craig Hansen was the initial architect. Ed Hudson, John Moussouris, Tom Riordan, Chris Rowen, and Dan Freitas are often listed as some of the main implementors in the early days. Dyl 17:29, 28 September 2006 (UTC)

Microprocessor support in R3000
The microprocessor support in the R3000 may have been flawed (I don't really know), but it was NOT generally unused. SGI produced a very popular range of high performance graphics workstations featuring multiple R3000s (the 4D 2x0, 4D/3x0 and 4D/4x0 series) and SGI was far and away MIPS' largest buyer at that point (1990-1993). I also know that Ardent produced a four processor R3000 machine (the Ardent Titan 3000). I am loathe to admit it but DEC did too. The 58x0 series was shameful—DEC didn't really have a fast enough bus for four R3000s, let alone two, so the machines literally got slower as you added more CPUs. Not to mention that the whole thing relied on a VAX processor for the ROM.


 * Surely you mean 'multiprocessor'? However, I would like to know some more about this, does anyone have any external links where the supposed flaws are explained? Pipatron 10:17, 30 November 2006 (UTC)

Question: What is the `flaw' of R3000 multiprocessor support? The content in the article doesn't elaborate it. Is it about atomic operation? Lack of ll/sc support? —Preceding unsigned comment added by 220.135.250.105 (talk) 07:55, 14 November 2008 (UTC)

MDMX not clear
If MDMX is an integer SIMD instruction set why does it use 64-bit floating point registers ? Please make it clear in the text. --Hdante 9 July 2005 06:16 (UTC)


 * The idea was that if you were dealing with digital media code, it's unlikely you would be doing floating-point at the same time. MDMX was a cheap way of adding media operations without changing the compilers much (adding a new register set). In the long run, this wasn't too popular nor aggressive enough. Dyl 17:29, 28 September 2006 (UTC)

MIPS wasn't the first to add media operations without extending the register set. PA-RISC MAX predates MIPS V and MDMX. Sparc's VIS extensions use the same approach. —Preceding unsigned comment added by 98.237.242.250 (talk) 20:48, 16 August 2009 (UTC)

Sort of biased, but…
The article tends to be pretty pro-MIPS without putting it in the context of what other chips have been its contemporaries; for instance, it doesn't mention the ARM architecture at all - and I'd be more than a little surprised to hear that the two arches didn't have comparable numbers of devices out there. (I suspect that there's more ARMs, actually.)

There's also the inconsistently-applied moniker MIPS itself; for instance, while the Sony Playstation does have an actual MIPS Technololgies CPU, the PS2's core has an R5900 made by Toshiba. I think it might be a good idea to separately delineate the mips model (e.g. the R1000) from the mips architecture (e.g. MIPS32.) --moof 12:51, 26 March 2006 (UTC)


 * I think the level of boosterism is at the same level on the ARM article. That article doesn't mention other architecture neither. eg. A little architecture from Intel/AMD or low-end microcontrollers . Besides, neither article is trying to quantify the volume leaders (which ARM would currently win). Dyl 02:36, 7 April 2006 (UTC)


 * I wrote a substantial portion of the article, and did so basically in isolation of articles on the other designs noted above. This was really a function of the way I wrote the article; I simply gathered references about the topic, and wrote.
 * I can understand, in retrospect, why this would end up with a somewhat myopic view. I hope I don't go too far by suggesting that if you had access to information on only one thing, anything from apples to chipsets, it's likely that any article created from those sources alone would likely end up that way.
 * So, I'd be happy to hear from a few other people too, is this article too tightly focused on MIPS, to the point where it seems like boosterism? And it's not the first time someone has mentioned this about an article I was prime on, which is the basis for my concern. Maury 21:16, 9 June 2006 (UTC)

Instruction Set Summary
The article uses the non-standard term of CONST, while all MIPS official documentation uses the term IMMEDIATE. Using the official term would be better IMHO. Dyl 15:37, 2 May 2006 (UTC)

Influence on later RISC ISAs
I've just WP:BOLDly changed the last sentence of the Lede section from
 * The design of the MIPS CPU family, together with SPARC, another early RISC architecture, greatly influenced later RISC designs like DEC Alpha.

to:
 * The design of the MIPS CPU family greatly influenced later RISC architectures such as DEC Alpha.

Why? Our DEC Alpha article says (quite rightly, I believe) that the Alpha was indeed greatly influenced by MIPS, but does not mention SPARC. I'd guess that the Power Architecture was influenced by MIPS to at least some extent, but not much by SPARC. The only later architecture which could be regarded as showing much SPARC influence is IA-64, and there's a good case that IA-64 is not a RISC architecture; my "such as DEC Alpha" wording is intended to avoid that issue.

This is a lot of fuss over a small issue, but I've done it anyway. Cheers, CWC (talk) 08:28, 29 September 2006 (UTC)

Trivia
Regarding the recent edit to the Trivia section, I'm of the opinion that the piece of information doesn't belong here; rather, it belongs with the information for the Mips character, which can be found at Super Mario 64; the note about the connection between Mips the rabbit and MIPS the processor architecture is found there. Trivia indicates it would be more appropriate there, too. This is why I removed the section a second time. – Mipadi 12:26, 18 October 2006 (UTC)

VPEs, TCs, ...
DDJ article, "Multi-core Performance In Single-Core Using Multi-threaded Virtual Multiprocessors" -- Robocoder ( t|c ) 19:04, 10 December 2006 (UTC)

Opcode format unclear
There's a table with the opcode format and register numbers "rt", "rs" and "rd", but there is no explanation what these registers actually are. I suspect that "rt" is the target register of an instruction, "rs" is the source and "rd" an additional data register. —The preceding unsigned comment was added by 131.234.158.246 (talk) 13:25, 20 February 2007 (UTC).


 * It's pretty unclear in the MIPS manual too. They're supposedly "source", "destination" and "target". rt can behave as a source or destination depending on the instruction. Unfortunately there's a few instructions which just do whatever they feel like - like mfc0, which reads from rd and writes to rt. I think it's best to treat them as arbitrary labels. Asuffield 14:43, 20 February 2007 (UTC)

rd is destination, rs and rt are arguments. 128.163.7.129 17:20, 4 October 2007 (UTC)

Processor speeds
For the "MIPS microprocessor specifications" table, there is a note that differences in the amount of secondary cache can change (and certainly, 2Mb R12000s and 4Mb R14000s were common SGI configurations (on the Octane and Fuel respectively)) but also note that there were 900MHz R16000 Fuel and 4x1GHz R16000 Tezro variations - so 800MHz is certainly not the limit here!

87.112.6.190 19:36, 8 March 2007 (UTC)

Mipsel
Please add a definition for mipsel

NigelHorne 16:46, 30 March 2007 (UTC)


 * mipsel = MIPS, endian-little. mipseb = MIPS, endian-big. Letdorf (talk) 15:19, 25 August 2008 (UTC).

Delay slot
Why doesn't this article mention the delay slot, something somewhat unique to MIPS? -- Myria 17:38, 14 April 2007 (UTC)

I agree - my recollection is that the instruction after a branch is always executed and there must be a delay of one instruction between loading and using a register. These details were hidden even from assembly language programmers because the toolchain re-ordered instructions or inserted no-ops. This was therefore a precursor to out-of-order execution. -- Chris St John 15:54, 4 December 2007 —Preceding unsigned comment added by 62.254.208.197 (talk)

Yes. I always used ".set noreorder" in GNU "as" to disable this mode because I didn't like it. I think it's an important part of the MIPS architecture, and can help with optimizing for the platform. You can also do stupid things like absolute value in 2 instructions: bgtz a0, label \ label: \ subu a0, zero, a0 -- Myria (talk) 20:57, 15 December 2007 (UTC)

NEC
"The VR4181 microprocessor is the second NEC device to use the ultra-low power 66-MHz VR4110 CPU core based on advanced 0.25-micron technology. The VR4110 CPU has an optimized five-stage pipeline, 4-KB instruction cache, 4-KB data cache, multiply-and-accumulate (MAC) unit, and memory management unit that enable high performance in a compact, low-cost chip.

"The VR4181 microprocessor complies with the MIPS I, II, and III instruction set architectures (ISAs) and MIPS16 application-specific extension (ASE). The MIPS16 ASE compliance enables the VR4181 to incorporate 16-bit-long instruction format with conventional 32-bit-long instruction support, which results in compact code size, smaller memory foot print, and lower system cost."

If this article is not going to try to list all the MIPS-based cpu chips, there should be a linked WP article that does list and organize as many as possible.-69.87.203.47 13:14, 19 April 2007 (UTC)

Pipeline definition
As stated in the "History" (RISC Pioneer) chapter of the main article, MIPS' basic concept was related to that of pipeline, so I was thinking that maybe we should pay more attention to pipeline definition, or introduction, if it wasn't meant to give a proper definition here. (On a side note, I don't think the definition given on the instruction pipeline is very good either, I will try to persuade the community to change that one as well).

As is stands now, the article says: "Generally a pipeline spreads out the task of running an instruction into several steps, starting work on "step one" of an instruction before the preceding instruction is complete."

In my opinion this is not exactly what a pipeline does. Pipeline is not about one instruction (being executed in one go or in a few steps), but about overlapping the execution of a few instructions. The inherent parallelism (internal CPU modules working in parallel) is worth mentioning along with the fact that (and more important then) the traditional approaches "leaving large areas of the CPU idle".

I will come up with some modified first paragraph of "RISC Pioneer", but I wait to see what the general opinion is about this.

--Adsp 21:31, 16 May 2007 (UTC)

OK, what about this: "Generally in a pipeline architecture, successive instructions in a program sequence will overlap in execution. Modules inside CPU work in parallel so that CPU will load and start executing  an instruction before the preceding instruction is complete. In contrast, traditional designs of the era waited to complete an entire cycle (Strg+Klick)">cycle (Strg+Klick)">cycle (Strg+Klick)">instruction cycle before moving on, thereby leaving large areas of the CPU idle as the process continued.

--Adsp 13:49, 21 May 2007 (UTC)

Add Tandem Computers to list of manufacturers
I think that Tandem Computers should be added to the list of computer manufacturers listed under "loosing the desktop". For sure Tandem systems where not desktops :-) but I think that having been used in the NonStop fault tolerant architecture is an interesting piece of information related to the MIPS processors. --Apistore 14:31, 22 May 2007 (UTC)

R6000 did not deliver?
The article said "The R6000 did not deliver the promised performance benefits". This might not be true. The R6000 was very fast by the standards of the day (circa 1990 i think.) The big problem was delivering enough working chips. It used an exotic technology called ECL which ran hot and had problems with a high proportion of failed chips. I think there was no problem selling all the working chips they actually managed to get made. It was about as fast as the early R4000s that were not delivered until well after the R6000. In fact the R4000 designers used a R6000 for computationally intensive tasks in the design of the R4000. MIPS abandonned ECL after the R6000 experience and went back to CMOS for later chips. (All this from memory, as an outsider. I'm sure it was all public knowledge at the time, but maybe not published anywhere respectable.) 198.142.39.182 03:20, 7 June 2007 (UTC)
 * The R6000 sure did run fast when it ran, but finding a real-world running system with one was a bit of a trick :-) I do think that the "performance benefits" statement from the article could be rephrased, but it would be blatantly false to claim that the R6000 ran well.  It (along with ECL in general) was a good idea on paper but never really progressed beyond the very high end, mostly due to cost as I understand it.  I am not aware of anyone besides CDC shipping R6000 machines to the general public, and a post from mid '91 I found on google groups claims that CDC said they only had 48(!) R6000 systems installed at that point.  With that astonishingly low real-world volume, I really don't see how the R6000 can be considered anything but a total failure, especially when compared to the R3000 or R4000. 208.66.211.217 05:40, 15 October 2007 (UTC)

XMT
Univeristy of Maryland - College Park has a team working on XMT, an Explicitly Multi Threaded MIPS core. --Rektide 19:35, 1 October 2007 (UTC)


 * Does the XMT have capabilities beyond the MTI 34K core, which is a commercially available multi-threaded MIPS CPU? Dyl 05:47, 2 October 2007 (UTC)


 * XMT's current physical incarnation is as 64 simple in order cores specifically built to do data parallel computation, and their simulations target 64 "functional groups" consisting of 64 processors surrounding a shared memory pool . Rektide (talk) 17:29, 5 March 2009 (UTC)

Opcode versus Assembly
The article seems to confuse opcodes and assembly language. I have attempted to fix this to some degree. —Preceding unsigned comment added by 128.163.7.129 (talk) 17:22, 4 October 2007 (UTC)

Higher speed R3000 and R4000 Chips?
The source for Ultrix supports detection of 45, 50, 55 and 60MHz R3000 chips as well as 133 and 150MHz versions of what appear to be straight R4000 chips (labeled as "supported"). Does anyone know if any of these actually shipped? 208.66.211.217 05:03, 15 October 2007 (UTC)

false statement : However, as Intel quickly released faster versions of their Pentium class CPUs, Microsoft Windows NT v4.0 dropped support for anything but Intel
this is untrue, there was a Windows 4.0 release for DEC Alpha too. —Preceding unsigned comment added by 62.212.109.174 (talk) 09:51, 2 November 2007 (UTC)

How can a controller become a MIPS controller?
This article describes some MIPS controllers. But there is missing a definition, what a MIPS controller really is. Is it sufficient, if he has got the assembly instruction set of MIPS? ... or what more? -- 84.132.61.173 (talk) 04:26, 21 November 2007 (UTC)
 * "Controller" is an old name for the System-on-a-chip -- Alecv (talk) 12:10, 21 November 2007 (UTC)
 * Thank you for the answer. But sadly this does not answer the question. I know what a "controller" is and work with some of them. The question was, what a MIPS controller is. And the article does not explain that. It only explains, which controllers are MIPS controllers. Imagine, somebody tells you, that this object is a car. But he does not tell you, that a car is used for driving. Thus you do not know, that you have to learn driving to use the object. This article si similar. Supposed I know, that I have got a MIPS MK4 compatible Controller. How does this information help me, to use it? -- 84.132.74.53 (talk) 13:11, 8 March 2008 (UTC)

Description of addu / addiu is wrong (I think)
Sorry if this is the wrong place or format for this - first time I've had reason to question anything here.

The description of add / addu etc looks wrong to me. I believe the difference between add and addu is that the latter does not trap on overflow to bit 31. And I'm not sure, but I think that on a 64-bit processor, these adds are always 32-bit adds, and the result is always sign-extended to 64 bits, even for addu. But I'm less sure about that second bit.

And for addiu, I belive the constant is sign-extended, but then an addu is performed (ie no trap on overflow).

Seems to be missing sltu and sltiu (unsigned comparisons) - again, sltiu takes a signed 16-bit constant, then does an unsigned comparsion. I think.

Also missing sllv, srlv, srav, which shift by an amount in a register, rather than a constant.

And missing some conditional branches for register-zero (bgez, etc) Says bgtz is a pseudo instruction, but my mips book lists it as a real instruction (top 6 bits %000111)

And the conditional traps (TEQ, etc)

--217.45.130.237 (talk) 18:38, 12 December 2007 (UTC)

PIC32
The Microchip PIC32 family seems to be MIPS based. I don't really know much about this family, but it seems like they deserve a mention in here. Does anyone know more? --Mr z (talk) 01:39, 17 January 2008 (UTC)
 * sez [[MIPS_architecture|

MIPS32]] m4k core. --moof (talk) 15:53, 17 January 2008 (UTC)

MIPS based Supercomputers
I added a section on MIPS based supercomputers to showcase the fact that the MIPS architecture has not been relegated to merely relatively low performance embedded applications. I am not an experienced editor however, and don't know how to upload images and create reference links. I humbly request that an experienced editor add links to the relevant SGI and SiCortex documentation and images. Links to the relevant supporting documentation and system pictures are here:

SGI Origin 3000 product info: http://www.sgi.com/products/remarketed/origin3000/

SiCortex Technical Summary http://sicortex.com/var/ezwebin_site/storage/original/application/125e5be6a574a4c0f4dd1ad475344e49.pdf

SC5832 thumbnail: http://regmedia.co.uk/2006/11/19/sicortexbig.jpg Node board thumbnail: http://regmedia.co.uk/2006/11/19/sicorboard.jpg

These images were sent out to the media in an open press release so I assume there is no copyright issue in using them on Wikipedia.

Since the SiCortex system is currently the only MIPS based supercomputer on the market, I think it would be proper to show a thumbnail of the SC5832 chassis. Considering the uniqueness of the system architecture, and the ingenious chip level integration, the 27 chip node board should be included as well. Maybe show both thumbnails, one on top the other with a short caption for each: "SC5832 Supercomputer" for the system chassis thumbnail, and "SiCortex processing board: 27 node chips containing 162 MIP64 cores"

69.155.191.69 (talk) 20:02, 8 April 2008 (UTC) Stan Hoeppner, St. Louis, MO

Unsigned vs. Signed Add/Subtract is a Misnomer
The MIPS ISA supports these six instructions:


 * Add (Add)
 * Add Unsigned (Addu)
 * Add Immediate (Addi)
 * Add Immediate Unsigned (Addiu)
 * Subtract (Sub)
 * Subtract Unsigned (Subu)

There is confusion all over the MIPS implementing world about the meaning of unsigned in these instructions. At least, the current v2.50 of The MIPS32 Instruction Set clearifies that this is a misnomer: The unlabeled (signed) varianst behave the same as the unsigned ones. The only difference is that in unlabeled (signed) commands that result in an overflow, an overflow trap is executed, whereas the unsigned commands silently ignore the overflow. This misnomer is present for decades now, and Wikipedia should stand front row fighting this confusion. This was not introduced in later-than-MIPS-I ISAs, but the clarification might have been added later on.


 * There is no point in having registered Add vs. Add Unsigned: There is no difference adding signed vs. unsigned if there is no room for sign extension (the result is computed over all 32 bits anyway)
 * The same applies to Sub vs. Sub Unsigned
 * As the constant is known at compile/assemble time for Add Immediate vs. Add Immediate Unsigned, there is no reason for sign-extending it. If sign extension of the operand would have been the idea behind separating two commands, it would have been far more practical to call these two operations Add Immediate and Subtract Immediate which was obviously not done. Contrary, always applying sign extension to the immediate operand CONST implicitly allows a Subtract Immediate to be converted into an Add Immediate with negated value, and following the nomenclature of the other four instruction commands, enabling or disabling the trap is far more useful than saving one additional bit of the constant operand.
 * Just a final clue: If this was a correction of recent MIPS architectural changes, wouldn’t they have changed the name of these commands to clearify things instead of changing behavior and making a note about the misnomer, leaving alone the question why they should have changed the instruction set in this very fundamental area of arithmetics?

The emm (talk) 16:20, 19 August 2008 (UTC)


 * Having consulted my MIPS documentation, I think that your edits are justified. I apologize for my hasty reverts. Rilak (talk) 11:24, 20 August 2008 (UTC)
 * Thanks for the confirmation! The emm (talk) 12:09, 20 August 2008 (UTC)

How about we just agree that the 'u' really stands for 'unchecked' ?? I guess the confusion arose because the check is a signed-arithmetic overflow check, so you need the addu for doing unsigned. Thus it sort of makes sense to call it unsigned, but even that is weak because e.g. C compilers need to ignore overflow in both signed and unsigned ops, so would use addu for all. 216.191.144.135 (talk) 16:25, 27 October 2008 (UTC)

Immediate pointers?
I've just removed a statement to the effect that pointers could be stored in the instructions themselves. I'll admit my MIPS assembler is rather rusty but I'm pretty sure that isn't the case. For a start the immediate values are limited to 16 bits so you could only ever address 64KB in this way. What you do get is 16 bits to specify an offset from a pointer in memory - you can't have a complete pointer in the instruction itself. I suppose that you could access the first 64KB directly in this manner (using $0) but that doesn't strike me as particularly useful since it would still be a fixed location. CrispMuncher (talk) 17:28, 3 March 2009 (UTC).


 * I'm no MIPS expert either and I didn't wrote the original text, only tried to make it a little more coherent. My take on your statement above somewhat depends on whether you reagard constant jump-destination addresses as pointers or not; definitions vary, some argue (C-programmers mainly) that pointers are variable addresses, per definition, some argue they are synonyms. Myself, I don't care much for rigid and narrow definitions of single common words, even in narrow contexts. HenkeB (talk) 00:44, 4 March 2009 (UTC)

You would conventionally pair LUI with the data access instruction, using the sign extended 16bit offset of the LW/SW/etc opcode to give you full 32bit immediate addressing. E.g. LUI a0,0xdeae; SW $0,0xbeef(a0) (Writes zero to 0xdeadbeef) 221.127.24.80 (talk) 04:33, 22 August 2009 (UTC)

XBurst
XBurst redirects here - it would be extremely helpful if the XBurst CPU would be even named in the article —Preceding unsigned comment added by 78.52.134.70 (talk) 01:35, 30 March 2009 (UTC)


 * Why is there a redirect for an implementation even redirecting here in the first place? The title of this article is "MIPS architecture", not "Big indiscriminate list of MIPS implementations". Rilak (talk) 04:15, 30 March 2009 (UTC)

Proposal: Divest the article of content about MIPS implementations
I propose that the content about MIPS implementations be divested as a new article titled "MIPS implementations". My rationale for this is that the title of this article is "MIPS architecture". Therefore the scope of the article is the MIPS architecture. So how well is the architecture covered? The article has a selection of MIPS I instructions, and it gives some description of the MIPS architecture, but it is not primarily about the architecture. It does not tell me that MIPS II added branch on likely instructions, that MIPS IV added multiply instructions, or that MIPS V was designed for 3D graphics with its instructions for operating on the paired-single floating-point data type. It tells me next to nothing about the architecture. Instead, it is a summary of notable MIPS implementations cluttered with indiscriminate tidbits about non-notable implementations here and there. How does this inform anyone about the architecture? It does not. It informs people about its implementations. Once the implementation-related content is removed, there will be space to furnish the article with the history of the architecture and a description of its versions. What is the community's opinion of this proposal? Rilak (talk) 06:05, 23 June 2009 (UTC)


 * The proposed split into 2 articles seems like a good idea to me. Dyl (talk) 02:03, 18 August 2009 (UTC)

MFC/MTC vs CFC/CTC
In the opcode description for MFC/MTC it describes the operation as copying from/to a co-processors control register, this is the function of CFC/CTC. To interact with a co-processors data-registers you would use the MFC/MTC/LWC/SWC opcodes. 221.127.24.80 (talk) 04:29, 22 August 2009 (UTC)

Why MIPS V section?
It seems like it is in the wrong place in the article, at wrong level, and probably should be removed -- why a top level section for a version never used when there aren't sections for MIPS I/II/II/IV/32/64? Mike Linksvayer (talk) 22:43, 8 October 2009 (UTC)

Archiving
Does anyone object to me setting up automatic archiving for this page using MizaBot? Unless otherwise agreed, I would set it to archive threads that have been inactive for 60 days.--Oneiros (talk) 22:04, 14 December 2009 (UTC)
 * ✅--Oneiros (talk) 16:15, 30 December 2009 (UTC)

Replace the "MIPS assembly language" section?
Reading that section, two things should become apparent:
 * Assembly language concerns and syntax is not particularly relevant to understanding the architecture (syntax does not correspond to the instruction formats)
 * It feels like I am reading the reference manual: there are separate entries for each instruction, the operation is described in both prose and in "psuedo-code", and "trivial" details such as the opcode and function code are included. It is definitely not assessable to the layperson.

Therefore, I propose that the section in question be replaced by a section called "MIPS I" that describes the ISA in prose. The new section will describe all essential aspects of the ISA in a structured manner that makes it easy to locate information and to understand. It will be positioned before the "MIPS IV" section and will serve as a base to complement the following sections about later versions of the architecture. Is this a good or a bad idea? Can the idea be refined? How will it be implemented? Any comments in general? Rilak (talk) 07:58, 18 January 2010 (UTC)


 * I'm the kind of person that use Wikipedia for everything, and I actually use the table of instructions in a school project I'm working on. I've even looked at the opcodes and instruction format description. I would vote to keep this information. However, as it is available from lots of other sources, I guess it can be removed if it doesn't fit into the encyclopedic style of Wikipedia, or whatever. 75.80.168.77 (talk) 21:06, 21 May 2010 (UTC)

Mips32 & Mips64?
There's almost no mention of those two architectures (the two least old ones) on the MIPS architecture page). Nor is there a mention of any of its implementations in the MIPS microprocessors list! What's up with that? You could think MIPS died out with MIPS V according to wikipedia. 109.67.11.228 (talk) 09:10, 18 November 2010 (UTC)

Earl Killian article subject to deletion
I wrote an article about computer scientist Earl Killian who was heavily involved with MIPS architecture. He has 26 patents. My sense is that he is an important player in the computer industry and worthy of inclusion in Wikipedia. If people reading this are familiar with MIPS and Earl Killian would like to weigh in on the discussion, please make your views known here. --Tomwsulcer (talk) 16:40, 27 November 2010 (UTC)

success followed success: vague and imprecise language
"Success followed success, and today the MIPS cores are one of the most-used heavyweight* cores in the marketplace for computer-like devices (hand-held computers, set-top boxes, etc.)." I see several problems with this statement. First, "computer-like devices" implies devices which people use like PCs/Macs. A tablet (like an iPad) and netbook fit this definition. A set-top box (Tivo, satellite/cable box, etc.) does not, because it's function and interface are more like an "electronic appliance" than a general-purpose PC. Second, the embedded applications market is marked by many niches. In mobile-handsets (cellphones, smartphones), ARM is the de-facto standard. MIPs retains a good marketshare in cable/satellite boxes (thanks to Broadcom). But in other types of electronic appliances, the ARM arhitecture again dominates (most home wifi-routers/cable/DSL-modems.) —Preceding unsigned comment added by 99.60.55.64 (talk) 16:00, 18 December 2010 (UTC)

Wrong description
The description of the instruction addiu stated that the immediate field is zero-extended. It's wrong. In the book "Computer organization and design" by Patterson and Hennessy 3rd edition page 222 says: "The MIPS instruction add immediate unsigned addiu sign-extends its 16-bit immediate field" so I changed zero-extended by sign-extended. —Preceding unsigned comment added by 201.199.228.21 (talk) 01:25, 7 March 2011 (UTC)

Who uses SPIM?
"It has educational purposes and is used in some": Who? Answering that question, I can give an example and say that students at Universidade de Aveiro, Portugal use (or at least used - I'm a former student) SPIM in Computers' Architecture classes to explain what pipeline is, how it improves performance and as a brief introduction to RISC assembly. 62.28.52.30 (talk) 17:22, 10 February 2011 (UTC) zebarnabe

SPIM used in Computer Organization and also the Architecture class as of this semester (Fall 2011) for Johns Hopkins University.For the same reasons listed by zebarnabe Maxximillian (talk) 22:00, 4 September 2011 (UTC)

Coprocessor instruction opcodes and encoding
I have found an article describing the coprocessor instructions and their format. Don't know if it's reliable/accurate but maybe someone who knows better can update all the coprocessor/floating point parts...? Article is here: http://www.d.umn.edu/~gshute/spimsal/talref.html, see "Coprocessor Instructions (Opcode 0100xx)" at the bottom of the page. Thank you. — Preceding unsigned comment added by 84.162.170.227 (talk) 16:35, 1 August 2011 (UTC)

footnote 12 link goes to a login page
Footnote 12 is mostly this link: http://www.mdronline.com/mpr/h/2006/0626/202602.html which brings me to a login page. Anybody know where that information can be accessed easily? Thanks, -- JasonWoof (talk) 04:13, 12 September 2011 (UTC)


 * There are subscribe and buy article links on that very page. Sounds easy enough to me.  Just because we provide a reference to something doesn't mean that reference must be available easily or for free. Crispmuncher (talk) 07:04, 12 September 2011 (UTC).

N64 calling convention name
Was the N64 calling convention (use first four temporaries for arguments 4-7) named after the Nintendo 64 platform? --Damian Yerrick (talk | stalk) 18:04, 6 December 2011 (UTC)

"Load-store" vs. "register-based"
The paragraph in question used to say


 * MIPS is a register based architecture, meaning the CPU uses registers to perform operations on. Other architectures exist, such as stack-based processors and accumulator-based processors.

and now says


 * MIPS is a load-store architecture, meaning it performs arithmetic and logic operations between CPU registers. Other architectures exist, such as stack-based processors and accumulator-based processors.

If "register-based" is distinguished from "stack-based" and "accumulator-based", into which category do, for example, IBM System/360 and its successors, the PDP-10, the PDP-11, VAX, m68k, and x86 belong? They're not "stack-based", as they don't have an arithmetic stack (code for the PDP-11 and VAX can use auto-increment and auto-decrement addressing modes in a stack-machine fashion, but that's not the only way arithmetic can be done). I wouldn't call them "accumulator-based", as they don't have a single accumulator through which all arithmetic must be done (the PDP-10 documentation called its registers "accumulators", but they're really just general-purpose registers).

However, they're not load-store architectures, as they support memory-to-register arithmetic.

So what do we call those CISC architectures that primarily use registers for arithmetic operations, but support memory-to-register arithmetic and, in some cases, memory-to-memory arithmetic? Guy Harris (talk) 01:15, 10 June 2016 (UTC)


 * I think they might be called 'memory-register' based; 68k/x86 are definitely not load-store, whilst MIPS is. I changed this as I think load-store is the most specific term here.  I guess you're suggesting we should list that term as part of the 'others' ? I didn't yet because I wasn't quite sure what the *exact* accepted term is. I generally just think about 'load-store' and 'everything else' lol.Fmadd (talk) 01:35, 10 June 2016 (UTC)


 * These days, most of the "everything else" instruction sets are register-memory; the only machines with a single accumulator these days are, I think, some small micro controllers and some virtual machines like the BPF virtual machine, and the only stack machines are the Unisys A series, perhaps some Forth chips, and virtual machines like the JVM (and any chips that implement some or all of the JVM).  At least for general-purpose computing, the vast majority of machines that aren't load-store are GPR register-memory machines. Guy Harris (talk) 02:59, 10 June 2016 (UTC)


 * Ok I fixed it, but I was thinking it might be better to delete this whole paragraph and rely on the reader to click 'RISC' in the intro, and just to be safe add the term 'load/store' there.

move MIPS architecture to MIPS instruction set
Because it is an instruction set. There is an article covering microarchitectures: List of MIPS microprocessor cores. ScotXW (talk) 11:38, 9 March 2014 (UTC)


 * "Architecture" does not only mean "microarchitecture". Guy Harris (talk) 07:03, 1 April 2017 (UTC)


 * There was no reason to move this article. Firstly, instruction set is merely a synonym (arguably a poor one) for architecture, which is itself a contraction of computer architecture. MIPS is a computer architecture. Two classic books on MIPS, Gerry Kane and Joe Heinrich's MIPS RISC Architecture and Dominic Sweetman's See MIPS Run supports this. Further more, the vendors themselves, MIPS Technologies and Imagination Technologies have always consistently referred to MIPS as an architecture. WP:COMMONNAME recommends using the most common alternative name when disambiguation is needed, which means "MIPS architecture" is preferable to "MIPS instruction set", which is verbose and less common. Secondly, architecture can be synonymous with microarchitecture, depending on the context, but I don't see any problem with this in the article when it was moved on 2014-04-16 or now. This article has never covered MIPS microarchitectures in detail, it was always about the MIPS architecture, with some coverage of MIPS implementations, which is relevant to the goal of covering the architecture: an architecture exists to be implemented. Given the reasons for moving this article are poor, I'm moving this article to the previous title. 50504F (talk) 04:33, 1 April 2017 (UTC)


 * (Actually, with ARM, "architecture" vs. "instruction set" is a bit more complicated. There's the overall "ARM architecture", which has multiple versions, the most recent of which is 8.1.  There are three "architecture profiles" for later versions of the architecture - "A" or "application", "R" or "real-time", and "M" or "microcontroller".  The "A" profile for version 8.x has two "execution states", "AArch64" and "AArch32"; earlier versions of the "A profile, and the "R" and "M" profiles, support only a 32-bit execution state.  AArch64 supports the A64 instruction set, which is an instruction set with 31 64-bit registers; AArch32 supports the A32 and T32 instruction sets, which are the v8 versions of the original ARM instruction set and the Thumb/Thumb-2 instruction set, respectively.  An OS running the kernel code in the AArch64 execution state can run applications in both AArch64 and AArch32 execution states.


 * So you have one architecture with three instruction sets.


 * MIPS isn't quite so complicated. Unlike ARM, which has at least as much difference, if not more difference, between its 32-bit and 64-bit instruction sets than x86 does, the two MIPS (instruction-set) architectures are fairly similar.  But, yes, there are two of them, according to Imagination Technologies - MIPS32 and MIPS64.  The original MIPS Technologies, and SGI, may not have called the 32-bit and 64-bit versions separate instruction sets, just different versions of the same instruction set, with MIPS III having introduced 64-bit support.) Guy Harris (talk) 07:27, 1 April 2017 (UTC)


 * My previous comment was in response to the OP, which implied that architecture and instruction set are not synonyms. There are reasonable definitions of instruction set that define it as a synonym of architecture, and others that define it as a subtopic of architecture. I'm sure there are others, but my point was that MIPS architecture isn't technically inaccurate, which the OP implied was: it's an instruction set, thus it isn't an architecture. 50504F (talk) 07:43, 1 April 2017 (UTC)

Comment: Just in case my original argument against the move to MIPS instruction set was insufficient, I've taken the time to research the official MIPS documentation and reliable secondary sources where MIPS is the primary topic.

Imagination Technologies' MIPS Architecture For Programmers Volume I-A: Introduction to the MIPS64 Architecture (doc. no. MD00083, rev. 6.01, 2014-08-20) states on p. 21: "Imagination's MIPS32 and MIPS64 architectures are high performance, industry-standard architectures that provide a robust and streamlined instruction set..."

Dominic Sweetman's See MIPS Run, 2nd ed. states on p. 19: "The rather grandiose word architecture is used in computing to describe the abstract machine you program, rather than the actual implementation of that machine. That's a useful distinction—and one worth defending from the widespread misuse of the term in marketing hype." It goes on to say: "In general, a CPU architecture consists of an instruction set and some knowledge about registers. The terms instruction set and architecture are pretty close to synonymous, and you can get both at once in the acronym ISA (Instruction Set Architecture)."

In See MIPS Run, 1st ed., p. 19 says essentially the same thing. Given the manual and this book, the current article title is not only unnecessarily verbose, it's also erroneous: MIPS is an architecture, and its convention is that "instruction set" means what it's literally means&mdash;a set of instructions; thus the "MIPS instruction set" are those instructions that are in the MIPS architecture.

The WP:Article titles policy is also against the current title. WP:PRECISION states that article titles should be precise. MIPS instruction set is not, it gives the impression that the article is only about MIPS instructions, when it is also about the MIPS architecture. WP:COMMONNAME and WP:ATDAB states that article titles should prefer popular, recognizable, natural names and descriptive disambiguation (amongst other things). MIPS instruction set doesn't meet any these criteria, MIPS architecture meets all of them. Finally WP:TITLECHANGES states: "If an article title has been stable for a long time, and there is no good reason to change it, it should not be changed." This article was created at MIPS architecture on 2001-11-05 @ 10:58. It was moved to MIPS instruction set on 2014‎-04-16 @ 17:45. For some 13 years, there wasn't any issue with MIPS architecture, until it was moved because of the erroneous belief that MIPS isn't an architecture but an instruction set. The fact that there wasn’t any objection to the MIPS instruction set move until some four years later isn't necessarily a sign that there was support for the move because there was no explicit support for it. 50504F (talk) 08:27, 15 April 2017 (UTC)

Move Pseudo Instruction
The "move" pseudo instruction is translated into addu by many assemblers. Just thought that the article could mention this as the table given is kinda inaccurate otherwise and led us to waste a lot of time ( designing a processor for an assignment). — Preceding unsigned comment added by 103.27.8.110 (talk) 19:11, 20 April 2017 (UTC)

Requested move 1 April 2017

 * The following is a closed discussion of a requested move. Please do not modify it. Subsequent comments should be made in a new section on the talk page. Editors desiring to contest the closing decision should consider a move review. No further edits should be made to this section. 

The result of the move request was: page moved. (non-admin closure) TonyBallioni (talk) 14:39, 24 April 2017 (UTC)

MIPS instruction set → MIPS architecture – See Talk:MIPS architecture/Archive 1 50504F (talk) 04:41, 1 April 2017 (UTC) --Relisting. Winged Blades Godric 10:58, 9 April 2017 (UTC)  --Relisting. Yashovardhan (talk) 12:34, 17 April 2017 (UTC)


 * Comment--Pinging --the two participants in the prev. discussion. Winged Blades Godric 10:58, 9 April 2017 (UTC)


 * Do you know Wally from Dilbert? User:ScotXW t@lk 14:10, 9 April 2017 (UTC)


 * This seems like the correct move to me under WP:CONSISTENCY. ARM is detailed at ARM architecture, PDP-11 at PDP-11 architecture, and so on. MIPS obviously isn't a microarchitecture, in that it doesn't specify the format of the processor, but it can be considered an architecture. Support. Laurdecl talk 23:00, 21 April 2017 (UTC)


 * The above discussion is preserved as an archive of a requested move. Please do not modify it. Subsequent comments should be made in a new section on this talk page or in a move review. No further edits should be made to this section.