MIPS Architecture

MIPS R4000 Die Photo by Pauli Rautakorpi.
MIPS R4000 Die Photo by Pauli Rautakorpi.

MIPS (originally an acronym for Microprocessor without Interlocked Pipeline Stages) is a RISC instruction set (ISA) developed by MIPS Technologies. The early MIPS architectures were 32-bit, with 64-bit versions added later. Multiple revisions of the MIPS instruction set exist, including MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32, and MIPS64.

 

Switch to the die photography section!

MIPS R4000

The R4000 is a microprocessor developed by MIPS Computer Systems that implemented the MIPS III instruction set architecture (ISA). Officially announced on 1 October 1991, it was one of the first 64-bit microprocessors and the first MIPS III implementation. In the early 1990s, when RISC microprocessors were expected to replace CISC microprocessors such as the Intel i486, the R4000 was selected to be the microprocessor of the Advanced Computing Environment (ACE), an industry standard that intended to define a common RISC platform. ACE ultimately failed for a number of reasons, but the R4000 found success in the workstation and server markets.

IDT Orion 79R4700-100G (100 MHz)

IDT R4600 (the 4700 is just a shrinked R4600) Die Picture by Pauli Rautakorpi - Published under the Creative Commons Attribution 3.0 Unported license. Slightly edited by HARDWARECOP.

79R4700-100G
Specification Details
Show


MIPS R5000

The R5000 is a microprocessor that implements the MIPS IV instruction set architecture (ISA) developed by QED. The project was funded by MIPS Technologies, Inc (MTI), also the licensor. MTI then licensed the design to Integrated Device Technology (IDT), NEC, NKK, and Toshiba. The R5000 succeeded the QED R4600 and R4700 as their flagship high-end embedded microprocessor. IDT marketed its version of the R5000 as the 79RV5000, NEC as VR5000, NKK as the NR5000, and Toshiba as the TX5000. The R5000 was sold to PMC-Sierra when the company acquired QED. Derivatives of the R5000 are still in production today for embedded systems.

NEC D30500RJ-180 (180 MHz)

IDT R4600 (the 4700 is just a shrinked R4600) Die Picture by Pauli Rautakorpi - Published under the Creative Commons Attribution 3.0 Unported license. Slightly edited by HARDWARECOP.

NEC D30500RJ-180
Specification Details
Show


Fun with MIPS Assembly: CORDIC Algorithm

CORDIC Grapher in MARS MIPS Simulator: Plot of sin/cos/tan/cot from -π/2 to π/2 with instruction counting
CORDIC Grapher in MARS MIPS Simulator: Plot of sin/cos/tan/cot from -π/2 to π/2 with instruction counting

I'm here to share my approach of implementing the CORDIC algorithm in the two-dimensional rotation mode using MIPS assembly language, utilizing floating point operations. The rotation mode of CORDIC yields capability of calculating sine, cosine and tan/cot. CORDIC in general is used in modern calculators and devices to acquire accurate values of transcendental functions (trigonometric functions such as sin, cos and exponential, as well as logarithm functions) efficiently. 

The assembly code was written on the MARS MIPS simulator. I did not optimize the code for maximum performance yet. The assembled code never ran on a real world MIPS architecture based computer.

CORDIC: 2D Rotation Mode Function

CORDIC as function in rotation mode:

 

double cordic (double angle, int iterations, int type)

 

double $f0 (double $f12, int $a0, int $a1)

 

Requires 3 transfer parameters:

  • double angle: Desired angle, floating point value in radiants between -π/2 to π/2
  • int iterations: Integer value between 0 and 30. A higher value yields higher accuracy but requires more instructions
  • int type: Desired function type. Integer value between 0 and 3. 0 = sine, 1 = cosine, 2 = tangent, 3 = cotangent

Returns 1 parameter:

  • double: Function value return of cordic(angle)

 

CORDIC: 2D Rotation Mode
CORDIC.pdf
Adobe Acrobat Document 27.9 KB

The CORDIC Grapher

CORDIC Grapher: Full plot
CORDIC Grapher: Full plot

The CORDIC Grapher. Utilizes the built in bitmap display (512 x 256 pixels) of MARS to plot/draw trigonometric functions from -π/2 to π/2.

 

The main function calls the plot procedure to plot sine, cosine, tangent and cotangent subsequently.

 

The CORDIC Grapher
CORDIC Grapher.pdf
Adobe Acrobat Document 31.7 KB

The CORDIC Grapher as an Exercise on MIPS Assembly Language (German)

Removes the floating point register and instruction dependency of the plot procedure.

 

MIPS Assembler-Übung: Der CORDIC Algorithmus.

Der erste Teil dieser Übung trainiert den Umgang mit der Load-Store-Architektur (Adressierung) des MIPS-Mikroprozessors im Zusammenhang mit einem mehrdimensionalen Feld (Array). Fortgesetzt durch einen anspruchsvolleren Teil, in dem die Prozedur plot implementiert werden soll, wird es wichtig sein, den Überblick über verwendete Register zu behalten und richtig mit der Registerverwaltung (MIPS Calling Convention) umzugehen. Mögliche Herausforderungen entstehen durch zwingend erforderliche Unterprogrammaufrufe. Abgerundet wird die Übung durch zwei kleinere Teilaufgaben, die vor allem durch Verzweigungen und Sprünge zu lösen sind. Hierbei wird erneut und noch einmal durchdachte Strukturierung und Gliederung des Programmcodes essentiell für einen effizienten Programmfluss.

 

Aufgabenstellung
Lade Dir die Aufgabenstellung zur Assembler-Übung hier herunter. Lösungsvorschläge zu den Aufgaben können im Kontaktbereich angefordert werden.
CORDIC Aufgabenstellung.pdf
Adobe Acrobat Document 281.7 KB
Übung: Vorlage
Kopiere den Inhalt dieser PDF in den MARS Simulator und speichere den Code als "cordic.asm". Dieser Code dient als Vorlage.
CORDIC Grapher Vorlage Tut.pdf
Adobe Acrobat Document 29.8 KB

RETURN TO NON X86

ARCHITECTURE SELECTION

RETURN TO THE MAIN MUSEUM PAGE