GNU Free Documentation License . .

MIPS ()

: ,

MIPS (. Microprocessor without Interlocked Pipeline Stages)  , MIPS Computer Systems ( MIPS Technologies) RISC ( ). 32- , 64- . , MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 MIPS64, MIPS32 ( 32- ) MIPS64 ( 64- ). MIPS32 MIPS64 , .

, , , MIPS-3D, SIMD , 3D , MDMX (MaDMaX)    SIMD 64- , MIPS16e, , , , MIPS MT, .

MIPS . RISC-, Alpha.

MIPS , , Windows CE, , , , Sony PlayStation 2 Sony PlayStation Portable. 2006 SGI. 1980 1990 , Digital Equipment Corporation, NEC, Pyramid Technology, Siemens Nixdorf Tandem Computers. 1990 MIPS.

[]

[] RISC

1981 (John L. Hennessy) , MIPS. , . (, IBM 801), . , , (- ), / ( )  . . ( ) , , ; . , , / .

, , , , , , , , .   , , , , . , , . MIPS , , , .

, , , , . , , , (, , ). .

MIPS Berkley-  Berkley-RISC . , Berkley-RISC , , , . , . . , «» , , . MIPS.

MIPS , , RISC. , RISC . MIPS 32 6 , 26- , 5 , 1 3 + . , , 2 16-  . . , ( RISC), , MOS Technology 6502, .

, RISC. , , , RISC , (, ).

[]

1984 , , , MIPS Computer Systems. 1985 MIPS  R2000, 1988 R3000. 32- 1980 SG- . , , .

1991 MIPS 64- , R4000. R4000 TLB, , . , (Pentium, PowerPC, Alpha) - TLB .

, MIPS . SGI ( MIPS), 1992 SGI , . , MIPS Computer Systems MIPS Technologies.

[]

1990 MIPS . - , , CISC-, (2 : , , ). Sun Microsystems SPARC, . 1990 MIPS , 1997 48- MIPS RISC- 68k. MIPS , 1998 SGI MIPS Technologies. MIPS ,   .

1999 MIPS   32- MIPS32 ( MIPS II MIPS III, IV MIPS MIPS V) 64- MIPS64 ( MIPS V). MIPS64 NEC, Toshiba SiByte ( Broadcom) . , Philips, LSI Logic IDT. , MIPS ( ,  . .), , .

, MIPS- , . Quantum Effect Devices (. ). , MIPS R4300i SandCraft, NEC R5432, R71000  . DEC StrongARM , MIPS: SiByte, SB-1250  , MIPS (SOC) Alchemy Semiconductor ( AMD), Au-1000 SOC . Lexra , MIPS, DSP , . Lexra MIPS, , . , Lexra , MIPS. ( MIPS 4814976 (unaligned) ) , MIPS Technologies Lexra .

, , MIPS. Raza Microelectronics SandCraft, . Cavium Networks, , , 32- . , , , MIPS.

[]

, MIPS , SGI, MIPS Computer Systems, Inc., Whitechapel Workstations, Olivetti, Siemens-Nixdorf, Acer, Digital Equipment Corporation, NEC, DeskStation. , MIPS: IRIX SGI, Windows NT ( 4.0) Microsoft, Windows CE, Linux, BSD, UNIX System V, SINIX, QNX, RISC MIPS Computer Systems.

1990 , MIPS RISC IA32 Intel. Windows NT Alpha, MIPS PowerPC Microsoft, , ,  Clipper SPARC. , Intel Pentium, Microsoft Windows NT v4.0 , Alpha Intel. SGI Itanium IA32, MIPS .

[]

Ingenic JZ4730  SOC, MIPS

1990 , MIPS- : , , , , , , , xDSL , .

MIPS-, .

[]

, MIPS, IP- ( ) . ,   32 64 , 4K 6K. , FPU, SIMD, /  . .

MIPS, . Cisco, Linksys MikroTik, ADSL , -, , , , , Sony PlayStation 2 Sony PlayStation Portable. , PDA MIPS ARM-.

MIPS : IDT RC32438; ATI Xilleon; Alchemy Au1000, 1100, 1200; Broadcom Sentry5; RMI XLR7xx, Cavium Octeon CN30xx, CN31xx, CN36xx, CN38xx and CN5xxx; Infineon Technologies EasyPort, Amazon, Danube, ADM5120, WildPass, INCA-IP, INCA-IP2; Microchip Technology PIC32; NEC EMMA and EMMA2, NEC VR4181A, VR4121, VR4122, VR4181A, VR5432, VR5500; Oak Technologies Generation; PMC-Sierra RM11200; QuickLogic QuickMIPS ESP; Toshiba Donau, Toshiba TMPR492x, TX4925, TX9956, TX7901.

[] MIPS

MIPS . 1990 Silicon Graphics (SGI) . ( , Challenge, R4400, R8000 R10000) SGI . R10000 Origin 2000, 1024 , cc-NUMA (NUMAlink). Origin 2000   Origin 3000, 1024 , R14000 R16000 700 . , 2005 , SGI Intel IA-64, , MIPS .

2007 SiCortex , MIPS. MIPS64 (. Kautz graph). . Ÿ   , MIPS64, , , 1 PCI Express . , 10 , 6 .   SC5832, 972 ( 5832 MIPS64) 8,2 .

[] Loongson

: Loongson

Loongson, MIPS, , MIPS Technologies Linux. Loongson , MIPS Loongson. ( Loongson MIPS  . )

MIPS iUnika, Bestlink, Lemote Golden Delicious Computers.

[] MIPS IV

MIPS IV  , MIPS III MIPS. MIPSIV 1994 R8000. MIPS IV :

  • +
  • FMA FMS
  • : 8 .

[] MIPS V

MIPS V  , 21 1996 1996. , 3D-. 1990 MIPS SGI. MIPS V MDMX (MIPS Digital Media Extensions), , MIPS V.

MIPS V . 1997 SGI «H1» («Beast») «H2» («Capitan»), 1999 . , 1998 .

MIPS V   PS (pair-single), (32-), 64- . SIMD, , , . , PS-. , SIMD- .

[] MIPS

MIPS, ( , , , )

MIPS R2000, 1985 . , . , ; , .

R2000 big-endian, little-endian, 32- . AMD 29000 Alpha R2000 , « ». , .

R2000 , , (MMU). R2010, , 32- , 64- . R3000, 1988 . - 64 (R2000  32 ). , R3000 - . , R3000 , R3000 . R2000, R3000 : R3010. R3000 MIPS, . R3000, 40 , R3000A, 32 VUPs (VAX Unit of Performance). R3000A, R3051, 33,8688 Sony PlayStation. , R3000A: Performance Semiconductor R3400, IDT R3500, R3010. , MIPS, R3900 Toshiba; , Windows CE. - R3000 R3010, , Mongoose-V.

R4000, 1991 , MIPS 64 . (MIPS Technology 64- ) R4000 1,3  , ( 8 ). 50 , 100 . R4400 R4000, 2,2  , ( 16 ), 150 . ( MIPS II) 64- , , , , . R4000 R4400 64- 64- .


MIPS, SGI MTI, R4200, ( ) R4300i. , NEC VR4300, Nintendo 64.

R4700 Orion, , IDT Quantum Effect Devices
R4700 Orion


Quantum Effect Devices (QED), , MIPS, R4600 Orion, R4700 Orion, R4650 R5000. R4000 , -, QED - ( 2 ), . R4600 R4700 SGI Indy, Cisco ( MIPS), , 360 700. R4650 WebTV (   Microsoft TV). R5000 FPU ( ) , R4000, , , SGI Indys, R5000 , R4400 . R5000 , SGI . QED RM7000 RM9000 . 2000 QED PMC-Sierra, MIPS-. RM7000 256 - 2 - 3 . RM9xx0  SOC-, ( ) : , PCI-, Ethernet, - (, HyperTransport).

R8000 ( 1994 ) MIPS, 2 ( ) 2 . 6 : (16   16   ), , - ( - + ), - ASIC. - ( ), 4 . 1990 R8000 SGI POWER Challenge, POWER Indigo2. FPU , , R8000 , .

1995 R10000. , , R8000, (32 ) - . , , . FPU, , R10000 .

R10000. R12000 0.25 . R14000 DDR SRAM -. R16000 R16000A, ; - , , .

MIPS  R6000, -, Bipolar Integrated Technology. R6000 MIPS II. TLB - . R6000 , , Control Data, .

MIPS
() (µm) (.) (²) () () (K) (K) 2 3
R2000 816.67 1985 2.0 0.11 ? ? ? ? 32 64
R3000 1240 1988 1.2 0.11 66.12 145 4 ? 64 64 0-256 K
R4000 100 1991 0.8 1.35 213 179 15 5 8 8 1 M
R4400 100250 1992 0.6 2.3 186 179 15 5 16 16 1-4 M
R4600 100133 1994 0.64 2.2 77 179 4.6 5 16 16 512 K
R4700 133 1996  ?  ?  ? 179  ?  ? 16 16
R5000 150200 1996 0.35 3.7 84 223 10 3.3 32 32 1 M
R8000 7590 1994 0.7 2.6 299 591+591 30 3.3 16 16 4 M
R10000 150250 1996 0.35, 0.25 6.7 299 599 30 3.3 32 32 512 K16 M
R12000 270400 1998 0.25, 0.18 6.9 204 600 20 4 32 32 512 K16 M
RM7000 250600 1998 0.25, 0.18, 0.13 18 91 304 10, 6, 3 3.3, 2.5, 1.5 16 16 256 K 1 M
R14000 500600 2001 0.13 7.2 204 527 17 ? 32 32 512 K16 M
R16000 7001000 2002 0.11 ? ? ? 20 ? 64 64 512 K16 M
R24K 750+ 2003 65 nm ? 0.83 ? ? ? 64 64 4-16 M

[] MIPS I

: R, I J. 6- . , R- , , ; I- ; J- 26- .

:

31-                                 ( )                                 0-
R (6) rs (5) rt (5) rd (5) shamt (5) (6)
I (6) rs (5) rt (5) immediate (16)
J (6) (26)

[] MIPS

, , .

  • , d, t, s .
  • C .
  • .
  • .
  • MIPS32 , , , . ( ), , , . , , .


[]

MIPS 32 . . $0 0, $1 ( ). . (-) .

// /
Add add $d,$s,$t $d = $s + $t R 0 2016 ,
000000ss sssttttt ddddd--- --100000
Add unsigned addu $d,$s,$t $d = $s + $t R 0 2116 ,
000000ss sssttttt ddddd--- --100001
Subtract sub $d,$s,$t $d = $s  $t R 0 2216 ,
000000ss sssttttt ddddd--- --100010
Subtract unsigned subu $d,$s,$t $d = $s  $t R 0 2316 ,
000000ss sssttttt ddddd000 00100011
Add immediate addi $t,$s,C $t = $s + C () I 816 - ( : addi $1, $2, 0),
001000ss sssttttt CCCCCCCC CCCCCCCC
Add immediate unsigned addiu $t,$s,C $t = $s + C () I 916 - , ,
001001ss sssttttt CCCCCCCC CCCCCCCC
Multiply mult $s,$t LO = (($s * $t) << 32) >> 32;
HI = ($s * $t) >> 32;
R 0 1816 64-   LO and HI. , : (int HI,int LO) = (64-bit) $s * $t . . mfhi mflo LO HI .
Divide div $s, $t LO = $s / $t     HI = $s % $t R 0 1A16 32- LO, HI.[1]
Divide unsigned divu $s, $t LO = $s / $t     HI = $s % $t R 0 1B16 32- LO, HI.
Load double word ld $t,C($s) $t = Memory[$s + C] I 2316 - double word : MEM[$s+C] 7 $t .
Load word lw $t,C($s) $t = Memory[$s + C] I 2316 - word : MEM[$s+C] 3 .
Load halfword lh $t,C($s) $t = Memory[$s + C] () I 2116 - halfword : MEM[$s+C] . .
Load halfword unsigned lhu $t,C($s) $t = Memory[$s + C] () I 2516 - , .
Load byte lb $t,C($s) $t = Memory[$s + C] (signed) I 2016 - byte : MEM[$s+C].
Load byte unsigned lbu $t,C($s) $t = Memory[$s + C] (unsigned) I 2416 - , .
Store double word sd $t,C($s) Memory[$s + C] = $t I - word $t : MEM[$s+C] 7 . .
Store word sw $t,C($s) Memory[$s + C] = $t I 2B16 - word : MEM[$s+C] 3 . .
Store half sh $t,C($s) Memory[$s + C] = $t I 2916 - (halfword) : MEM[$s+C] .
Store byte sb $t,C($s) Memory[$s + C] = $t I 2816 - (byte) : MEM[$s+C].
Load upper immediate lui $t,C $t = C << 16 I F16 - 16- 16 . 2161
Move from high mfhi $d $d = HI R 0 1016 HI . mfhi ( - MIPS).
Move from low mflo $d $d = LO R 0 1216 LO . mflo ( - MIPS).
Move from Control Register mfcZ $t, $s $t = Coprocessor[Z].ControlRegister[$s] R 0 4- Z- . .
Move to Control Register mtcZ $t, $s Coprocessor[Z].ControlRegister[$s] = $t R 0 4- Z-. .
And and $d,$s,$t $d = $s & $t R 0 2416 Bitwise
000000ss sssttttt ddddd--- --100100
And immediate andi $t,$s,C $t = $s & C I C16 -
001100ss sssttttt CCCCCCCC CCCCCCCC
Or or $d,$s,$t $d = $s | $t R 0 2516 Bitwise
Or immediate ori $t,$s,C $t = $s | C I D16 -
Exclusive or xor $d,$s,$t $d = $s ^ $t R 0 2616
Nor nor $d,$s,$t $d = ~ ($s | $t) R 0 2716 Bitwise nor
Set on less than slt $d,$s,$t $d = ($s < $t) R 0 2A16 , .
Set on less than immediate slti $t,$s,C $t = ($s < C) I A16 - , .
Bitwise Shift left logical sll $t,$s,C $t = $s << C R 0 0 ( 2^{CONST} )
Shift right logical srl $t,$s,C $t = $s >> C R 0 216 ( 2^{C} ). , .
Shift right arithmetic sra $t,$s,C \scriptstyle $t = $s >> C + \left(\left(\sum_{n=1}^{\text{CONST}}2^{31-n}\right)\cdot $2>>31\right) R 0 316   ( )
Branch on equal beq $s,$t,C if ($s == $t) go to PC+4+4 °C I 416 - , .
000100ss sssttttt CCCCCCCC CCCCCCCC
Branch on not equal bne $s,$t,C if ($s != $t) go to PC+4+4 °C I 516 - , .
Jump j C PC = PC+4[31:28] . C*4 J 216 - .
Jump register jr $s goto address $s R 0 816 , .
Jump and link jal C $31 = PC + 8; PC = PC+4[31:28] . C*4 J 316 -   , $31 ; jr $31.

: MIPS, .

: « » (load lower immediate); addi (add immediate) ori (or immediate) c $0. , addi $1, $0, 100 ori $1, $0, 100 $1 100.

[]

MIPS 32 . 2 . , .

// /
FP add single add.s $x,$y,$z $x = $y + $z ( )
FP subtract single sub.s $x,$y,$z $x = $y  $z ( )
FP multiply single mul.s $x,$y,$z $x = $y * $z ( )
FP divide single div.s $x,$y,$z $x = $y / $z ( )
FP add double add.d $x,$y,$z $x = $y + $z ( )
FP subtract double sub.d $x,$y,$z $x = $y  $z ( )
FP multiply double mul.d $x,$y,$z $x = $y * $z ( )
FP divide double div.d $x,$y,$z $x = $y / $z ( )
Load word coprocessor lwcZ $x,CONST ($y) Coprocessor[Z].DataRegister[$x] = Memory[$y + CONST] I 4 word : MEM[$2+CONST] . .
Store word coprocessor swcZ $x,CONST ($y) Memory[$y + CONST] = Coprocessor[Z].DataRegister[$x] I 4 MEM[$2+CONST]. .
FP compare single (eq, ne, lt, le, gt, ge) c.lt.s $f2,$f4 if ($f2 < $f4) cond=1; else cond=0 . .
FP compare double (eq, ne, lt, le, gt, ge) c.lt.d $f2,$f4 if ($f2 < $f4) cond=1; else cond=0 . .
branch on FP true bc1t 100 if (cond == 1) go to PC+4+100 FP, .
branch on FP false bc1f 100 if (cond == 0) go to PC+4+100 FP, .

[]

MIPS, . .

Load Address la $1, LabelAddr lui $1, LabelAddr[31:16]; ori $1,$1, LabelAddr[15:0] $1 =
Load Immediate li $1, IMMED[31:0] lui $1, IMMED[31:16]; ori $1,$1, IMMED[15:0] $1 = 32-
Branch if greater than bgt $rs,$rt,Label slt $at,$rt,$rs; bne $at,$zero,Label if(R[rs]>R[rt]) PC=Label
Branch if less than blt $rs,$rt,Label slt $at,$rs,$rt; bne $at,$zero,Label if(R[rs]<R[rt]) PC=Label
Branch if greater than or equal bge etc. if(R[rs]>=R[rt]) PC=Label
Branch if less than or equal ble if(R[rs]<=R[rt]) PC=Label
Branch if greater than unsigned bgtu if(R[rs]=>R[rt]) PC=Label
Branch if greater than zero bgtz if(R[rs]>0) PC=Label
Multiplies and returns only first 32 bits mul $1, $2, $3 mult $2, $3; mflo $1 $1 = $2 * $3

[]

  • NOP ( ) ( 0x00000000, sll $0, $0, 0)
  • Break ( , )
  • ( )

[]

:

  • $0 0.
  • $31 - .
  • HI LO /, mfhi (move from high) mflo (move from low).

, .

MIPS , . , .

?
$zero $0 0 N/A
$at $1
$v0$v1 $2-$3
$a0$a3 $4-$7
$t0$t7 $8-$15
$s0$s7 $16-$23
$t8$t9 $24-$25
$k0$k1 $26-$27
$gp $28
$sp $29
$fp $30
$ra $31 N/A

( ) (). , $s- , ; $sp $fp- , . $ra, . $t- ( , ).

[]

Open Virtual Platforms OVP-sim, , , API, . , , MIPS 4K, 24K 34K. Imperas, MIPS Tchnologies MIPS-Verified. , MIPS , Linux. - , , . OVPsim Imperas ( ), .

MIPS32 ( R2000/R3000), SPIM . EduMIPS64  MIPS64, Java/Swing. MIPS64 ISA , , . .

GUI- MIPS  MARS, , Computer Organization and Design.

  Gxemul ( mips64emul), QEMU. MIPS III MIPS IV ( , ).

MIPS, , Virtutech Simics (MIPS 4Kc 5Kc, PMC RM9000, QED RM7000), VaST Systems (R3000, R4000), CoWare (MIPS4KE, MIPS24K, MIPS25Kf MIPS34K).


[] MIPS

[]

[]

[]