Heh, back in school, MIPS was used as our architectural equivalent of Java. So simple, so clean, every architecture should follow it. I wasn't a big fan, but I didn't 'get' any major deficiencies compared to other isas. What's wrong with it?
If every architecture starts to follow MIPS you would have engineers jumping out of windows
Some of the problems:
All instructions are 32 bit, that means if I want to process a 32 bit constant, I have to use multiple instructions. I can't have an instruction , the constant and only use what memory they need. I have to use multiples of 32.
Instruction have to fit in the pipeline and finish in 1 clock , if I want to do a multiply or divide I have to do it using a special pipeline for that task. Cannot do math on variables in cahce because they upset the pipeline. Everything has to be pulled from cache, set up for the pipeline, processed through using multiple clock cycles and then put back into cache.
jumps are horrible if you want to access large amounts of memory often having to use multiple instructions to get a single jump completed.
There is no stack to speak of.
subroutines support is almost zero
The cpu keeps zero track of registers, cache or the pipeline, you have to do it all for it.
Mips is like an old design that instead of innovating it in hardware they continued to try to patch the problems without really changing anything. Need 64 bit support,? instead of adding hardware to support it people can just use software tricks to address it. Need to handle longer instructions ? Add the ability to chain together old ones using more clock cycles and coding tricks.