MIPS | |
---|---|
Udvikler | MIPS Technologies Inc. |
Lidt dybde | 64 (32→64) |
Fremlagde | 1985 |
Arkitektur | RISC |
Type | register-register |
SK kodning | fast |
Transition Implementering | sammenlignet med to registre |
Byte rækkefølge | Bi-endian (big→bi) |
Udvidelser | MDMX, MIPS-3D, MIPS16e, MIPS MT |
Registre | |
generelle formål | 31 (R0=0) |
Ægte | 32 (til dobbelt, bruges registrepar i 32-bit versioner af processoren) |
Mediefiler på Wikimedia Commons |
MIPS (forkortelse for navnet på det tilsvarende Stanford University -projekt . Microprocessor without Interlocked Pipeline Stages [1] ) er et system af instruktioner og mikroprocessorarkitekturer udviklet af MIPS Computer Systems (i øjeblikket Wave Computing [2] ) i overensstemmelse med RISC- processordesignet koncept (det vil sige til processorer med et forenklet instruktionssæt). Tidlige processormodeller havde et 32-bit maskinord , senere dukkede 64-bit versioner op. Der er mange processormodifikationer, herunder MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 og MIPS64, hvoraf MIPS32 (til 32-bit implementering) og MIPS64 (til 64-bit implementering) er gyldige. MIPS32 og MIPS64 definerer både et sæt kontrolregistre og et sæt instruktioner.
Der er flere instruktionssæt: MIPS32, MIPS64, microMIPS og nanoMIPS. Derudover er yderligere instruktionssæt og processormodeller tilgængelige, for eksempel MIPS-3D, som inkluderer et sæt SIMD -instruktioner til behandling af flydende kommanumre, designet til at løse simple 3D - problemer, MDMX (MaDMaX) - med endnu bredere muligheder - et SIMD-instruktionssæt og brug af 64-bit flydende kommaregistre til at arbejde med heltal, MIPS16e, som komprimerer instruktionsstrømmen for at reducere mængden af hukommelse, der optages af programmer, og MIPS MT, som giver en multi-threaded behandlingstilstand.
MIPS-arkitektur studeres ofte i kursusprogrammet "Computerarkitektur" på universiteter og tekniske lyceumer. Disse processorer havde betydelig indflydelse på senere RISC-arkitekturer, især Alpha .
I øjeblikket bruges forskellige implementeringer af MIPS hovedsageligt i indlejrede systemer, såsom smartphones , routere , gateways , og indtil 2010'erne i spilkonsoller såsom Sony PlayStation 2 og Sony PlayStation Portable . Indtil udgangen af 2006 blev de også brugt i SGI -computere . I slutningen af 1980'erne og 1990'erne blev denne arkitektur meget brugt af mange virksomheder, blandt dem Digital Equipment Corporation , NEC , Pyramid Technology, Siemens Nixdorf og Tandem Computers . Fra midten til slutningen af 1990'erne var hver tredje mikroprocessor på markedet en MIPS-processor.
I 1981 begyndte et team ledet af John L. Hennessy fra Stanford University at arbejde på et projekt kaldet MIPS. Hovedideen var at øge processorydelsen ved at bruge en udvidet pipeline . Konceptet med at bruge pipelinen som en kerneteknologi var kendt længe før (for eksempel i IBM 801 ), men det udnyttede ikke sit fulde potentiale. CPU'en indeholder flere specielle underenheder såsom instruktionsdekodere, heltals ALU (aritmetisk logisk enhed), load/storage units (hukommelseshåndtering) osv. I en traditionel ikke-optimeret implementering bør en enkelt instruktion i et program være (næsten altid) afsluttet før en anden starter; mens i en pipelinet arkitektur kan sekventielle instruktioner udføres parallelt. For eksempel, når en matematisk instruktion indtastes i en flydende kommablok, kan hukommelsesindlæsnings-/lagerblokken kalde den næste instruktion på samme tid.
En af de største forhindringer ved brugen af pipelinen var det faktum, at nogle instruktioner, såsom division, tager meget længere tid at udføre, og som følge heraf skal CPU'en vente, før den sender den næste instruktion til pipelinen. Den eneste løsning på dette problem er at bruge en række låse for at tillade visse stadier af rørledningen at vise, at de er optaget, og i dette tilfælde suspendere kommandoer opstrøms i gevindet. Hennessy-gruppen så disse låse som en enorm ydeevnebarriere, da det var nødvendigt at få adgang til alle CPU-modulerne, hvilket tager ekstra tid og begrænser urhastigheden. Hovedaspektet ved MIPS-designet var at passe hver underfase af hver instruktion, inklusive caching, i én cyklus, og dermed undgå behovet for låse og tillade kun én cyklus at passere til rørledningen.
Selvom en sådan implementering ville eliminere nogle meget nyttige operationer såsom multiplikation og division, er det klart, at systemets overordnede ydeevne ville blive væsentligt forbedret, da chipsene kunne køre ved højere clockhastigheder. At opnå høj hastighed ved hjælp af låse ville være vanskeligt, da den tid, der kræves til at indstille låsene, er proportional med urfrekvensen, som igen afhænger af krystallens størrelse. Det er grunden til, at udelukkelsen af de førnævnte operationer er blevet et omstridt spørgsmål.
En anden forskel mellem MIPS-arkitekturen og konkurrerende Berkeley-arkitekturer er Berkeley - RISC 's evne til at håndtere subrutineopkald. For at øge udførelsen af en sådan generel opgave, brugte Berkeley-RISC en teknik kaldet et registervindue , som ikke desto mindre begrænsede den maksimale dybde af opkald på flere niveauer. Hvert subrutineopkald krævede sit eget sæt registre, hvilket gjorde det nødvendigt at øge antallet. Hvorimod hardwareimplementeringen af denne mekanisme optog ekstra plads i CPU-chippen. Men Hennessy mente, at en mere "grundig" compiler kunne finde gratis registre til at videregive parametre til funktionen, og at blot at øge antallet af registre ikke kun kunne forenkle denne opgave, men også øge ydeevnen af alle operationer. Derfor blev det besluttet at opgive denne teknologi i MIPS.
MIPS-arkitekturen var i nogle henseender den mest typiske for RISC . For at gemme bits i instruktionskoden har RISC reduceret antallet af instruktioner, der skal kodes. I MIPS, ud af 32 bits af et ord, bruges kun 6 til hovedkoden, og resten kan indeholde enten en enkelt 26-bit hopadresse eller op til 5 felter, der indstiller fra 1 til 3 registre + registerskiftlængde . Der er en række andre formater, for eksempel når 2 registre indstilles direkte af et dedikeret 16-bit felt osv. Denne fordeling gjorde det muligt for processoren at indlæse instruktionen og de data, den havde brug for i én maskincyklus, mens den var i ældre arkitekturer (som ikke var RISC ), for eksempel, såsom MOS Technology 6502, krævede separate cyklusser for at indlæse hovedkoden og dataene.
Dette var en af de store præstationsforbedringer, som RISC tilbyder. Imidlertid har andre arkitekturer opnået lignende hastigheder på andre måder (såsom CPU-køer).
I 1984, overbevist om den kommercielle efterspørgsel efter hans design, forlod Hennessy Stanford og grundlagde MIPS Computer Systems. I 1985 blev den første kommercielle implementering af MIPS-mikroprocessoren, R2000, frigivet, afsluttet i 1988 og kaldt R3000. Disse 32-bit processorer dannede grundlaget for virksomhedens produktlinje i 1980'erne og blev primært brugt i SG-serien af arbejdsstationer. Nye kommercielle projekter var ikke i tråd med Stanfords forskning, da næsten alle låsene blev udført i hardware, og multiplikations- og divisionsoperationerne var fuldt implementeret.
I 1991 blev den først introduceret som en 64-bit MIPS mikroprocessor - model R4000. R4000 har en udvidet TLB , hvor indgangen ikke kun indeholder den virtuelle adresse, men også den virtuelle adresseplads-id. En sådan buffer eliminerer de vigtigste ydeevneproblemer for mikrokernen, som er ret langsom i konkurrerende arkitekturer ( Pentium , PowerPC , Alpha ) på grund af behovet for at skylle TLB'en under hyppige kontekstskift.
MIPS havde imidlertid økonomiske vanskeligheder med at bringe forarbejdningsvirksomheder på markedet. Projektet var så vigtigt for SGI (en af de få store købere af MIPS på det tidspunkt), at SGI i 1992 købte rettighederne til virksomheden med en garanti for, at designet af mikroprocessorer ikke ville ændre sig. Efter at være blevet et datterselskab, fik MIPS Computer Systems navnet MIPS Technologies.
I begyndelsen af 1990 begyndte MIPS at licensere deres designs til tredjeparter. Ideen var heldig på grund af kernens enkelhed, som fandt mange applikationer, hvor meget mindre effektive CISC- arkitekturer tidligere blev brugt , med det samme antal og samme pris på kredsløb (disse to kriterier er tæt beslægtede: prisen på en CPU, afhænger som regel af antallet af kredsløb og kontakter). Sun Microsystems gjorde et lignende forsøg på at licensere SPARC - kerner, men Sun var ikke så heldig. I slutningen af 1990'erne var MIPS blevet den vigtigste virksomhed inden for indlejrede processorer, og i 1997 tillod 48 millioner forsendelser af MIPS-baserede processorer RISC-arkitekturer til at erstatte den populære 68k-processorfamilie. MIPS var så populær, at SGI i 1998 overførte nogle af aktiverne til MIPS Technologies. Til dato kommer halvdelen af MIPS' omsætning fra udviklingslicenser, og det meste af den anden halvdel kommer fra kontrakter om udvikling af kerner til produktion af tredjeparter.
I 1999 formaliserede MIPS deres licenssystemer omkring to hoveddesigns - 32-bit MIPS32 (baseret på MIPS II med nogle ekstra funktioner i MIPS III, MIPS IV og MIPS V) og 64-bit MIPS64 (baseret på MIPS V). MIPS64 blev licenseret af hver af NEC , Toshiba og SiByte (efterfølgende erhvervet af Broadcom) umiddelbart efter udgivelsen. De fik hurtigt selskab af Philips , LSI Logic og IDT. Succes fulgte efter succes, og i dag er MIPS-processorer et af de mest eftertragtede produkter på markedet for computer-type enheder (PDA'er, set-top-bokse osv.), sammen med andre udviklere, der forgæves forsøger at erstatte dem.
Få år efter at MIPS-arkitekturen blev licenseret, begyndte den at tiltrække flere og flere nye processorudviklingsvirksomheder. Det første af disse firmaer var Quantum Effect Devices (se næste afsnit). Udviklingsteamet, der samlede MIPS R4300i, grundlagde SandCraft, som forsynede NEC med den nye R5432-processor og lidt senere modellerede R71000, en af de første specialfremstillede processorer til det indlejrede marked. Grundlæggerteamet hos DEC StrongARM delte sig til sidst op i to nye MIPS-baserede processorvirksomheder: SiByte, som gjorde SB-1250 til et af de første højtydende chipsystemer baseret på MIPS ( SOC ) og Alchemy Semiconductor (senere erhvervet af AMD) , som producerede Au-1000 SOC til lavenergiapplikationer. Lexra brugte en MIPS-lignende arkitektur, tilføjede DSP til audiochipmarkedet og multistreamingunderstøttelse til netværksmarkedet. Da Lexra ikke købte en licens til MIPS, udbrød der hurtigt retssager mellem de to selskaber. Den første blev hurtigt indløst, efter at Lexra lovede ikke at promovere sine processorer som ligner MIPS. Den anden proces (om MIPS-patentet 4814976 til behandling af instruktionen om ikke-tilpasset hukommelsesadgang) var mere langvarig og påvirkede begge virksomheders forretning negativt, og efter dens afslutning udstedte MIPS Technologies en gratis licens til Lexra og betalte en stor monetær kompensation.
Efter denne udvikling trådte to virksomheder ind på markedet med speciale i at skabe multi-core-enheder ved hjælp af MIPS-arkitekturen. Raza Microelectronics Corporation købte produktionslinjen fra det mindre succesrige SandCraft og begyndte derefter at producere otte-core-enheder til telekommunikations- og netværksmarkedet. Cavium Networks, der oprindeligt var en leverandør af processorbeskyttelse, begyndte også at producere otte- og senere 32-kerne-arkitekturer til de samme markeder. Begge virksomheder designede kernerne selv og licenserede kun designene i stedet for at købe færdige MIPS-processordesigns.
Producenter, der har bygget arbejdsstationer ved hjælp af MIPS-mikroprocessorer, omfatter SGI , MIPS Computer Systems, Inc., Whitechapel Workstations, Olivetti, Siemens-Nixdorf, Acer, Digital Equipment Corporation , NEC og DeskStation. Operativsystemer porteret til MIPS-arkitekturen inkluderer SGI 's IRIX , Microsofts Windows NT (op til version 4.0) , Windows CE , Linux , UNIX ( System V og BSD ), SINIX, QNX og virksomhedens eget -operativsystemRISC OS
Der var spekulationer i begyndelsen af 1990'erne om, at MIPS sammen med andre kraftfulde RISC-processorer snart ville overhale Intels IA32 - arkitektur . Dette blev lettet af understøttelse af de to første versioner af Windows NT til Alpha , MIPS og PowerPC af Microsoft , og i mindre grad Clipper- og SPARC-arkitekturerne. Men så snart Intel udgav de seneste versioner af Pentium- familien af CPU'er , holdt Microsoft Windows NT v4.0 op med at understøtte alt undtagen Alpha og Intel. Efter SGI's beslutning om at flytte til Itanium- og IA32-arkitekturerne, holdt MIPS-processorer næsten helt op med at blive brugt i personlige computere.
I 1990'erne blev MIPS-arkitekturen bredt anvendt på det indlejrede marked : til netværk, telekommunikation, videospil, spillekonsoller, printere, digitale set-top-bokse, digitale tv'er, xDSL- og kabelmodemmer og PDA'er.
Det lave strømforbrug og temperaturegenskaber ved indlejrede MIPS-arkitekturer og det brede udvalg af interne funktioner gør denne mikroprocessor universel til mange enheder.
I de senere år er de fleste af de teknologier, der bruges i forskellige generationer af MIPS, blevet foreslået som IP-kerner (byggeklodser) til indlejrede processorimplementeringer. Desuden foreslås begge typer kerner - baseret på 32 og 64 bit, kendt som 4K og 6K. Sådanne kerner kan kombineres med andre byggeklodser såsom FPU'er , SIMD- systemer , forskellige I/O-enheder osv.
De engang kommercielt succesrige MIPS-kerner har nu fundet forbruger- og industriapplikationer. Disse kerner kan findes i de nye Cisco- , Linksys- , ZyXEL- og MikroTik -routere , kabel- og ADSL - modemmer, smart cards , laserprintermekanismer, digitale set-top-bokse, robotter, PDA'er, Sony PlayStation 2 og Sony PlayStation Portable. I mobiltelefon- og PDA-applikationer formåede MIPS dog ikke at fjerne den konkurrerende ARM -arkitektur, der var solidt etableret der .
MIPS-baserede processorer omfatter: IDT RC32438; ATI Hilleon; Alkymi Au1000, 1100, 1200 ; Broadcom Sentry5; RMI XLR7xx, Cavium Octeon CN30xx, CN31xx, CN36xx, CN38xx og CN5xxx; Infineon Technologies EasyPort, Amazon, Donau, ADM5120, WildPass, INCA-IP, INCA-IP2; Mikrochipteknologi PIC32 ; NEC EMMA og EMMA2, NEC VR4181A, VR4121, VR4122, VR4181A, VR5432, VR5500; Eg Technologies Generation; PMC-Sierra RM11200; QuickLogic QuickMIPS ESP; Toshiba Donau, Toshiba TMPR492x, TX4925, TX9956, TX7901; KOMDIV-32 , KOMDIV-64 ; Multicore .
En af de mest interessante anvendelser af MIPS-arkitekturen er deres brug i multiprocessor-computing supercomputere. I begyndelsen af 1990'erne omfokuserede Silicon Graphics ( SGI ) sin forretning væk fra grafikterminaler og ind på markedet for højtydende computere. Succesen med virksomhedens tidlige strejftog i serversystemer (nemlig Challenge-serien baseret på R4400, R8000 og R10000) motiverede SGI til at skabe et meget mere kraftfuldt system. Brug af R10000 gjorde det muligt for virksomheden at designe Origin 2000-systemet, der til sidst kunne udvides til 1024 CPU'er ved hjælp af sin egen cc-NUMA-forbindelse (NUMAlink). Senere affødte Origin 2000 et nyt system - Origin 3000, som kom ud med de samme maksimale 1024 CPU'er, men brugte R14000 og R16000 chips under udvikling med en frekvens på op til 700 MHz. Men i 2005, da SGI tog den strategiske beslutning om at flytte til Intel IA-64-arkitekturen, blev MIPS-baserede supercomputere udgået.
I 2007 introducerede SiCortex Corporation en ny multiprocessor personlig supercomputer baseret på MIPS-arkitekturen. Dens udvikling var baseret på MIPS64 og højtydende sammenkobling ved hjælp af Kautz - graftopologien . Dette system er ekstremt effektivt og beregningsmæssigt kraftfuldt. Dens unikke aspekt er en multi-core-behandlingsknude, der integrerer seks MIPS64-kerner, en hukommelsescontroller-switch, DMA intersystem-kommunikation, et 1 Gb LAN og PCI Express - controllere. Og alt dette på en enkelt chip, der bruger 10 watt strøm, men som maksimalt udfører 6 milliarder flydende kommaoperationer i sekundet. Den mest kraftfulde konfiguration af sådan en supercomputer er SC5832-versionen, som består af 972 noder (i alt 5832 MIPS64-kerner) og udfører 8,2 billioner flydende kommaoperationer i sekundet.
Loongson udgav i håbet om at omgå MIPS-patentet sin arkitektur, som var fuldstændig magen til udviklingen af MIPS Technologies og blev understøttet af Linux . Da produktionen af Loongson-processorer var billigere, var MIPS i stand til at genoplive på markedet for personlige computere over for Loongson. (Senere købte Loongson en licens til MIPS - se hovedartikel)
MIPS-baserede processorer bruges også i netbooks fra iUnika, Bestlink, Lemote og Golden Delicious Computers.
MIPS IV - den fjerde generation af arkitekturen, er en udvidet version af MIPS III og er kompatibel med alle eksisterende MIPS-modeller. Den første implementering af MIPS IV blev introduceret i 1994 under navnet R8000 . MIPS IV inkluderet:
MIPS V, den femte version af arkitekturen, blev introduceret den 21. oktober 1996 på 1996 Microprocessor Forum . Denne model er designet til at forbedre ydeevnen af 3D-grafikapplikationer . I midten af 1990'erne var de fleste ikke-indlejrede MIPS-mikroprocessorer grafikterminaler fra SGI . Udviklingen af MIPS V blev suppleret med heltals multimedieudvidelser MDMX (MIPS Digital Media Extensions), som blev introduceret samme dag som MIPS V.
Implementeringer af MIPS V blev aldrig implementeret. I 1997 introducerede SGI mikroprocessorer kaldet "H1" ("Beast") og "H2" ("Capitan"), som skulle produceres i 1999. Men de blev hurtigt slået sammen, og til sidst i 1998 blev disse projekter aflyst.
MIPS V tilføjede en ny datatype, PS (par-enkelt), som er to dobbeltpræcisions (32-bit) flydende decimaltal gemt i et 64-bit flydende kommaregister. For at arbejde med denne datatype i SIMD -tilstand blev der tilføjet forskellige varianter af aritmetik, sammenlignende operationer på flydende kommatal samt en betinget springinstruktion. Der er nye instruktioner til indlæsning, rekonfigurering og konvertering af PS-data. Det er den første arkitektur, der er i stand til at implementere floating point-behandling i SIMD -tilstand med tilgængelige ressourcer.
Den første kommercielle MIPS mikroprocessor var R2000, introduceret i 1985. Det implementerede operationerne multiplikation og division, som blev udført i flere cyklusser. Multiplikations- og divisionsenheden var ikke tæt integreret i processorkernen, selvom den var placeret på den samme chip; af denne grund blev instruktionssystemet udvidet med instruktioner til indlæsning af resultaterne af multiplikation og opdeling i generelle registre, disse instruktioner blokerede pipelinen.
R2000-mikroprocessoren kunne indlæses både i big-endian-tilstand og i little-endian-tilstand, indeholdt 32 32-bit registre til generelle formål. Ligesom AMD 29000- og Alpha-processorerne havde R2000-mikroprocessoren ikke et separat tilstandsflagregister, da udviklerne betragtede det som en potentiel flaskehals. Programtælleren er ikke direkte tilgængelig.
R2000-mikroprocessoren understøttede tilslutningen af op til fire coprocessorer, hvoraf den ene er indbygget og giver undtagelseshåndtering samt hukommelsesstyring (MMU). Om nødvendigt kunne R2010-chippen, en aritmetisk coprocessor, tilsluttes som en anden coprocessor, som indeholdt toogtredive 32-bit registre, der kunne bruges som seksten 64-bit dobbeltpræcisionsregistre. Den næste i familien var R3000 , som dukkede op i 1988. Den indeholdt en 64 KB datacache (R2000 - 32 KB). Derudover gav R3000 cache-kohærens, når den kørte i multiprocessor-konfigurationer. På trods af at R3000 multiprocessor-understøttelsen har en række mangler, er der skabt flere brugbare multiprocessorsystemer baseret på R3000. Hvad angår R2000, blev der for R3000 oprettet en aritmetisk coprocessor i form af en separat VLSI: R3010. R3000-mikroprocessoren var den første kommercielt succesrige MIPS-processor med over en million fremstillede processorer. En accelereret version af R3000, der kører ved 40 MHz, kaldet R3000A, opnåede 32 VUP'er (VAX Unit of Performance). En videreudvikling af R3000A, R3051-mikroprocessoren, der opererer ved 33,8688 MHz, blev brugt i Sony PlayStation-spillekonsollen. Andre producenter introducerede også processorer, der var kompatible med R3000A: Performance Semiconductor udviklede R3400, mens IDT skabte R3500, som begge havde en integreret R3010 matematisk coprocessor. Toshibas R3900 var den første system-on-a-chip, der brugte MIPS-arkitekturen; denne chip blev brugt i en bærbar computer med Windows CE. En strålingstolerant variant af R3000 med en integreret R3010 til rumfartøjsapplikationer blev udviklet og fik navnet Mongoose-V .
R4000-serien, udgivet i 1991, udvidede MIPS-processorer til 64 bit. (MIPS Technology var det første firma, der udgav processorer med 64-bit arkitektur) R4000 består af 1,3 millioner transistorer, har en indbygget datacache og instruktionscache (begge 8 KB hver). I denne processor er det 50 MHz eksterne ur fordoblet, og det interne ur er 100 MHz. R4400-processoren er baseret på R4000, består af 2,2 millioner transistorer, har en indbygget data-cache og en instruktionscache (begge 16 KB hver) og en intern clock-frekvens på 150 MHz. Instruktionssættet for disse processorer (MIPS II-specifikationen) er blevet udvidet med 64-bit floating-point indlæsnings- og skriveinstruktioner, enkelt- og dobbeltpræcisions kvadratrodsinstruktioner, betingede afbrydelsesinstruktioner og atomoperationer, der er nødvendige for at understøtte multiprocessorkonfigurationer. R4000- og R4400-processorerne har 64-bit databusser og 64-bit registre.
MIPS, nu en afdeling af SGI kaldet MTI, udviklede de billige R4200-processorer, der tjente som grundlag for fremtidige (endnu billigere) R4300i. Et derivat af denne processor, NEC VR4300, blev brugt i Nintendo 64-spilkonsollerne.
Quantum Effect Devices (QED), et uafhængigt firma grundlagt af MIPS-udviklerne, udviklede R4600 Orion-, R4700 Orion-, R4650- og R5000-serien af processorer. Hvis R4000 øgede clockhastigheden, men ofrede mængden af cachehukommelse, så var QED meget opmærksom på cachehukommelsens kapacitet (som kan tilgås på kun 2 cyklusser) og den effektive brug af krystaloverfladen. R4600- og R4700-processorerne blev brugt i lavprisversioner af SGI Indy-arbejdsstationen, såvel som i tidlige Cisco-routere (baseret på MIPS), såsom 36x0- og 7x00-serien. R4650-mikroprocessoren blev brugt i WebTV set-top-bokse (i øjeblikket Microsoft TV). I R5000 FPU var flydende punkt (enkelt præcision) planlægning mere fleksibel end i R4000, og som et resultat havde de R5000-baserede SGI Indys-arbejdsstationer bedre grafikydeevne end en R4400 med samme clockhastighed og grafikhardware. For at understrege forbedringen efter at have kombineret R5000 og det gamle grafikkort, gav SGI det et nyt navn. Lidt senere udviklede QED RM7000- og RM9000-familien af processorer til netværks- og laserprintermarkedet. I august 2000 blev QED opkøbt af halvlederproducenten PMC-Sierra, og sidstnævnte fortsatte med at investere i MIPS-arkitekturer. RM7000-processoren inkluderede 256 KB on-chip L2-cache og en controller til yderligere L3-cache. RM9xx0-processorer blev skabt - en familie af SOC-enheder, der omfatter sådanne perifere komponenter (på nordbroen) som: en hukommelsescontroller, en PCI-controller, en Ethernet-controller samt hurtige I/O-enheder (for eksempel en høj- performance bus såsom HyperTransport).
R8000 (introduceret i 1994) var den første MIPS superskalararkitektur, der var i stand til 2 heltal (eller flydende komma) og 2 hukommelsesadgangsinstruktioner pr. cyklus. Dette design brugte 6 skemaer: en enhed til heltalsinstruktioner (16 KB for instruktioner og 16 KB for datacache), til flydende komma-instruktioner, tre sekundære RAM-cache-deskriptorer (to for sekundær cache-adgang + én til bussporing ), samt en ASIC cache controller. Arkitekturen har to fuldt pipelinede multiplic-add (dobbelt-præcision) enheder, der kan streame data til 4MB off-chip sekundær cache. I midten af 1990'erne lancerede R8000-processorerne POWER Challenge SGI-serverne og blev senere tilgængelige på POWER Indigo2-arbejdsstationerne. Selvom ydeevnen af denne FPU var den mest velegnede for forskere, kunne dens begrænsede heltalsydeevne og høje pris ikke tiltrække de fleste brugere, så R8000 var på markedet i kun et år, og selv nu kan den næsten ikke findes.
I 1995 blev R10000 [3] frigivet . Denne processor blev tilbudt i et enkelt-chip-design, kørte med en højere clock-hastighed end R8000 og inkluderede også en stor (32 KB) primær data- og instruktionscache. Det var også superskalært, men denne store innovation var defekt. Men selv med en enklere FPU har den væsentligt forbedrede heltalsydeevne, lavere pris og højere lagertæthed gjort R10000 til det foretrukne valg for de fleste brugere.
Alle senere designs var baseret på R10000 -kernen . R12000 brugte en 0,25 mikron fremstillingsproces for at gøre chippen mindre og opnå højere clockhastigheder. Den reviderede R14000 havde en højere clockhastighed ud over at understøtte DDR SRAM til off-chip cache. Følgende blev udgivet R16000 og R16000A, hvis clockfrekvens også blev øget; de havde yderligere L1-cache indbygget, og deres produktion krævede mindre matricer end før.
Andre medlemmer af MIPS-familien inkluderer R6000, en ESL-implementering af Bipolar Integrated Technology. R6000 tilhører MIPS II-processorgenerationen. Dens TLB og cache-enhed er væsentligt forskellige fra andre medlemmer af denne familie. R6000 leverede ikke de lovede fordele, og selvom det viste sig at være noget nyttigt til Control Data-computere, forsvandt det hurtigt fra det almindelige marked.
MIPS mikroprocessorerModel | Frekvens (MHz) | År | Udviklingsteknologi (µm) | Transistorer (millioner) | Krystalstørrelse (mm²) | Antal stifter | Effekt, W) | Spænding (V) | Datacache (KB) | Instruktionscache (KB) | Niveau 2 cache | Niveau 3 cache |
---|---|---|---|---|---|---|---|---|---|---|---|---|
R2000 | 8-16.67 | 1985 | 2.0 | 0,11 | ? | ? | ? | ? | 32 | 64 | INGEN | INGEN |
R3000 | 12-40 | 1988 | 1.2 | 0,11 | 66,12 | 145 | fire | ? | 64 | 64 | 0-256 KB Ekstern | INGEN |
4000 kr | 100 | 1991 | 0,8 | 1,35 | 213 | 179 | femten | 5 | otte | otte | 1 MB eksternt | INGEN |
4400 kr | 100-250 | 1992 | 0,6 | 2.3 | 186 | 179 | femten | 5 | 16 | 16 | 1-4 MB eksternt | INGEN |
4600 kr | 100-133 | 1994 | 0,64 | 2.2 | 77 | 179 | 4.6 | 5 | 16 | 16 | 512 KB Ekstern | INGEN |
4700 kr | 133 | 1996 | ? | ? | ? | 179 | ? | ? | 16 | 16 | Ekstern | INGEN |
R5000 | 150-200 | 1996 | 0,35 | 3.7 | 84 | 223 | ti | 3.3 | 32 | 32 | 1 MB eksternt | INGEN |
8000 kr | 75-90 | 1994 | 0,7 | 2.6 | 299 | 591+591 | tredive | 3.3 | 16 | 16 | 4 MB eksternt | INGEN |
R10.000 | 150-250 | 1996 | 0,35, 0,25 | 6.7 | 299 | 599 | tredive | 3.3 | 32 | 32 | 512 KB—16 MB Ekstern | INGEN |
R12000 | 270-400 | 1998 | 0,25, 0,18 | 6.9 | 204 | 600 | tyve | fire | 32 | 32 | 512 KB—16 MB Ekstern | INGEN |
RM7000 | 250-600 | 1998 | 0,25, 0,18, 0,13 | atten | 91 | 304 | 10, 6, 3 | 3,3, 2,5, 1,5 | 16 | 16 | 256 KB Intern | 1 MB eksternt |
14.000 kr | 500-600 | 2001 | 0,13 | 7.2 | 204 | 527 | 17 | ? | 32 | 32 | 512 KB—16 MB Ekstern | INGEN |
R16000 | 700-1000 | 2002 | 0,11 | ? | ? | ? | tyve | ? | 64 | 64 | 512 KB—16 MB Ekstern | INGEN |
24.000 kr | 750+ | 2003 | 65 nm | ? | 0,83 | ? | ? | ? | 64 | 64 | 4-16 MB eksternt | INGEN |
Instruktioner er opdelt i tre typer: R, I og J. Hver instruktion starter med en 6-bit kode. Ud over kode definerer instruktioner af R-type tre registre, et registerskiftstørrelsesområde og et funktionsområde; I-type instruktioner definerer to registre og en umiddelbar værdi; J-type instruktioner består af en opcode og en 26-bit grenadresse.
Følgende er en tabel over brugen af de tre instruktionsformater i kernearkitekturen:
Type | −31− format (i bits) −0− | |||||
---|---|---|---|---|---|---|
R | kode (6) | rs(5) | rt(5) | rd(5) | skidt (5) | funktion (6) |
jeg | kode (6) | rs(5) | rt(5) | direkte (16) | ||
J | kode (6) | adresse (26) |
Disse monteringssprogsinstruktioner har en direkte hardwareimplementering, i modsætning til pseudo-instruktioner, som er oversat til rigtige sammensatte instruktioner før montering.
MIPS har 32 registre til heltalsoperationer. For at udføre aritmetiske beregninger skal dataene være i registre. Register $0 gemmer altid 0, og register $1 er reserveret til samling (for at holde pseudo-instruktioner og store konstanter). Tabellen nedenfor viser, hvilke bits der svarer til hvilke dele af instruktionen. En bindestreg (-) angiver en neutral tilstand.
Kategori | Navn | Instruktions syntaks | Betyder | Format/Kode/Funktion | Noter/Kodning | ||
---|---|---|---|---|---|---|---|
Aritmetik | Tilføje | tilføj $d,$s,$t | $d = $s + $t | R | 0 | 20 16 | Tilføjer to registre, afbryder ved overløb 000000ss sssttttt ddddd --- --100000 |
Tilføj usigneret | tilføj $d,$s,$t | $d = $s + $t | R | 0 | 21 16 | Som ovenfor, men ignorerer overløb 000000ss sssttttt ddddd --- --100001 | |
Trække fra | under $d,$s,$t | $d = $s − $t | R | 0 | 22 16 | Trækker to registre fra, udfører et overløbsafbrydelse 000000ss sssttttt ddddd --- --100010 | |
trække usigneret fra | subu $d,$s,$t | $d = $s − $t | R | 0 | 23 16 | Som ovenfor, men ignorerer overløb 000000ss sssttttt ddddd000 00100011 | |
Tilføj straks | tilføj $t,$s,C | $t = $s + C (signeret) | jeg | 8 16 | - | Bruges til at tilføje fortegnskonstanter (også for at kopiere et register til et andet: addi $1, $2, 0), udfører en overløbsafbrydelse 001000ss sssttttt CCCCCCCC CCCCCCCC | |
Tilføj øjeblikkelig usigneret | addiu $t,$s,C | $t = $s + C (signeret) | jeg | 9 16 | - | som ovenfor, men ignorerer overløb, C forbliver underskrevet 001001ss sssttttt CCCCCCCC CCCCCCCC | |
Formere sig | mult $s,$t | LO = (($s * $t) << 32) >> 32; HI = ($s * $t) >> 32; |
R | 0 | 18 16 | Multiplicerer to registre og skriver 64-bit resultatet til to specielle hukommelsesfelter, LO og HI. På samme måde kan du skrive resultatet af operationen på formen: (int HI,int LO) = (64-bit) $s * $t. Se mfhi og mflo for adgang til LO- og HI-registrene. | |
Dele | div $s, $t | LO = $s / $t HI = $s % $t | R | 0 | 1A16 _ | Opdeler et register med et andet og skriver 32-bit resultatet til LO og resten til HI [4] . | |
Opdel usigneret | divu $s, $t | LO = $s / $t HI = $s % $t | R | 0 | 1B 16 | Opdeler et register med et andet og skriver 32-bit resultatet til LO og resten til HI. | |
Dataoverførsel | Indlæs dobbeltord | ld$t,C($s) | $t = Hukommelse[$s + C] | jeg | 23 16 | - | indlæser et dobbeltord fra: MEM[$s+C] og de næste 7 bytes i $t og det næste register. |
indlæse ord | lw $t,C($s) | $t = Hukommelse[$s + C] | jeg | 23 16 | - | indlæser ord fra: MEM[$s+C] og de næste 3 bytes. | |
Indlæs halvord | h $t,C($s) | $t = Hukommelse[$s + C] (signeret) | jeg | 21 16 | - | indlæser halvord fra: MEM[$s+C] og næste byte. Skiltet forlænges til kassens bredde. | |
Indlæs halvord usigneret | lhu $t,C($s) | $t = Hukommelse[$s + C] (usigneret) | jeg | 25 16 | - | Som ovenfor, men uden tegnforlængelse. | |
indlæs byte | lb $t,C($s) | $t = Hukommelse[$s + C] (signeret) | jeg | 20 16 | - | indlæser byte fra: MEM[$s+C]. | |
Indlæs byte usigneret | lbu $t,C($s) | $t = Hukommelse[$s + C] (usigneret) | jeg | 24 16 | - | Som ovenfor, men uden tegnforlængelse. | |
gemme dobbeltord | sd $t,C($s) | Hukommelse[$s + C] = $t | jeg | - | gemmer to ordtyper fra $t og det næste register i: MEM[$s+C] og de næste 7 bytes. Rækkefølgen af operanderne kan være forvirrende. | ||
gemme ord | sw $t,C($s) | Hukommelse[$s + C] = $t | jeg | 2B16 _ | - | gemmer ord i: MEM[$s+C] og de næste 3 bytes. Rækkefølgen af operanderne kan være forvirrende. | |
Opbevar halvdelen | sh $t,C($s) | Hukommelse[$s + C] = $t | jeg | 29 16 | - | gemmer den første halvdel af registret (halvord) til: MEM[$s+C] og den næste byte. | |
Gem byte | sb $t,C($s) | Hukommelse[$s + C] = $t | jeg | 28 16 | - | gemmer den første fjerdedel af et register (byte) til: MEM[$s+C]. | |
Indlæs øverste øjeblikkeligt | lui $t,C | $t = C << 16 | jeg | F 16 | - | Indlæser en 16-bit operand i de højere 16 bits i det specificerede register. Den maksimale værdi af konstanten 2 16 −1 | |
Flyt fra høj | mfhi$d | $d = HI | R | 0 | 10 16 | Placerer værdien fra HI i et register. Brug ikke multiplikations- og dividerinstruktionerne inde i mfhi-instruktionen (denne handling er ikke defineret på grund af MIPS-pipeline). | |
Flyt fra lavt | mflo $d | $d = LO | R | 0 | 12 16 | Placerer værdien fra LO i et register. Brug ikke gange og dividere instruktioner inde i en mflo instruktion (denne handling er ikke defineret på grund af MIPS pipeline). | |
Flyt fra kontrolregister | mfcZ $t, $s | $t = Coprocessor[Z].ControlRegister[$s] | R | 0 | Flytter en 4-byte-værdi fra Z-kontrolregister-coprocessoren til et almindeligt register. Skilteudvidelse. | ||
Flyt til kontrolregister | mtcZ $t, $s | Coprocessor[Z].ControlRegister[$s] = $t | R | 0 | Flytter en 4-byte værdi fra det generelle register til Z-kontrolregisterets coprocessor. Skilteudvidelse. | ||
logisk | Og | og $d,$s,$t | $d = $s & $t | R | 0 | 24 16 | bitvis konjunktion 000000ss sssttttt ddddd --- --100100 |
Og straks | og $t,$s,C | $t = $s & C | jeg | C 16 | - | 001100ss sssttttt CCCCCCCC CCCCCCCC | |
Eller | eller $d,$s,$t | $d = $s | $t | R | 0 | 25 16 | Bitvis disjunktion | |
Eller øjeblikkeligt | eller $t,$s,C | $t = $s | C | jeg | D16 _ | - | ||
Eksklusiv eller | xor $d,$s,$t | $d = $s ^ $t | R | 0 | 26 16 | ||
Heller ikke | heller ikke $d,$s,$t | $d = ~ ($s | $t) | R | 0 | 27 16 | Bitvis heller ikke | |
Indstillet på mindre end | slt $d,$s,$t | $d = ($s < $t) | R | 0 | 2A 16 | Kontrollerer, om et register er mindre end et andet. | |
Indstil på mindre end øjeblikkeligt | slti $t,$s,C | $t = ($s < C) | jeg | A 16 | - | Kontrollerer, om et register er mindre end en konstant. | |
bitskifte | Skift til venstre logisk | sll $t,$s,C | $t = $s << C | R | 0 | 0 | flytter C bits til venstre (multiplicerer med to potenser ) |
Skift til højre logisk | srl $t,$s,C | $t = $s >> C | R | 0 | 2 16 | flytter C bits til højre (dividerer med to potenser ). Bemærk, at denne instruktion kun fungerer som tos komplementdeling, hvis værdien er positiv. | |
Skift til højre aritmetik | sra $t,$s,C | R | 0 | 3 16 | skifter C bits - (deler sig i to komplementære binære kode) | ||
Betinget forgrening | Gren på lige | beq $s,$t,C | hvis ($s == $t) gå til PC+4+4 °C | jeg | 4 16 | - | Springer til instruktionen på den angivne adresse, hvis de to registre er ens. 000100ss sssttttt CCCCCCCC CCCCCCCC |
Gren på ikke lige | bne $s,$t,C | hvis ($s != $t) gå til PC+4+4 °C | jeg | 5 16 | - | Springer til instruktionen på den angivne adresse, hvis de to registre ikke er ens. | |
Ubetinget spring | Hoppe | jC | PC = PC+4[31:28] . C*4 | J | 2 16 | - | Udfører et ubetinget spring til instruktionen på den angivne adresse. |
hoppe register | jr$s | goto adresse $s | R | 0 | 8 16 | Springer til adressen indeholdt i det angivne register. | |
hop og link | jal C | $31 = PC + 8; PC = PC+4[31:28] . C*4 | J | 3 16 | - | Som en procedure - bruges til at kalde en subrutine, register $31 modtager og returnerer en adresse; afkastet fra subrutinen koster jr $31. Returadressen vil være PC + 8, ikke PC + 4, på grund af brugen af delay slot (delay slot): enhver greninstruktion i arkitekturen (før introduktionen af nye MIPS32 / MIPS64 instruktioner i 2014) er altid forudgået af udførelsen af instruktionen efter den, og først derefter den faktiske overgang. Dette gjorde det muligt at indlæse pipelinen mere jævnt - mens overgangsinstruktionen hentede instruktionen på overgangsadressen, stod processoren ikke ledig, men udførte instruktionen efter den, hvilket dog medfører vanskeligheder med at læse og korrekt forstå assembler-kode og kræver, at compilere tages i betragtning. |
Bemærk: I MIPS montagesprogkode kan forskydningen for forgreningsinstruktioner repræsenteres af markeringer andre steder i koden.
Bemærk: Der er ingen tilsvarende "kopi til register" (indlæs straks lavere) kommando; dette kan gøres ved at bruge funktionerne addi (add immediate) eller ori (eller immediate) med register $0. For eksempel, både addi $1, $0, 100 og ori $1, $0, 100 indlæser begge $1 med værdien 100.
MIPS har 32 flydende kommaregistre. Registrene er forbundet med 2 for dobbelt præcisionsberegninger. Ulige registre kan ikke bruges til aritmetik eller forgrening, de kan kun delvist angive dobbelt præcision i et par registre.
Kategori | Navn | Instruktions syntaks | Betyder | Format/Kode/Funktion | Noter/Kodning | ||
---|---|---|---|---|---|---|---|
Aritmetik | FP tilføje single | add.s $x,$y,$z | $x = $y + $z | Tilføjelse af flydende komma (enkelt præcision) | |||
FP trække enkelt | sub.s $x,$y,$z | $x = $y - $z | Flydende komma subtraktion (enkelt præcision) | ||||
FP multiplicere enkelt | mul.s $x,$y,$z | $x = $y * $z | Flydende komma multiplikation (enkelt præcision) | ||||
FP dele enkelt | div.s $x,$y,$z | $x = $y / $z | Flydende kommainddeling (enkelt præcision) | ||||
FP tilføje dobbelt | add.d $x,$y,$z | $x = $y + $z | Tilføjelse af flydende komma (dobbelt præcision) | ||||
FP trækker det dobbelte fra | sub.d $x,$y,$z | $x = $y - $z | Flydende komma subtraktion (dobbelt præcision) | ||||
FP gange dobbelt | mul.d $x,$y,$z | $x = $y * $z | Flydende komma multiplikation (dobbelt præcision) | ||||
FP dividere dobbelt | div.d $x,$y,$z | $x = $y / $z | Flydende kommainddeling (dobbelt præcision) | ||||
Dataoverførsel | Indlæs tekstbehandler | lwcZ $x,CONST($y) | Coprocessor[Z].DataRegister[$x] = Hukommelse[$y + CONST] | jeg | Indlæser 4 bytes typeord fra: MEM[$2+CONST] i coprocessorens dataregister. Skilteudvidelse. | ||
Gem tekstbehandler | swcZ $x,CONST($y) | Hukommelse[$y + CONST] = Coprocessor[Z].DataRegister[$x] | jeg | Skriver 4 bytes fra coprocessordataregisteret til MEM[$2+CONST]. Skilteudvidelse. | |||
hjerne teaser | FP sammenligne enkelt (eq, ne, lt, le, gt, ge) | c.lt.s $f2,$f4 | if ($f2 < $f4) cond=1; ellers betingelse=0 | Sammenligning med mindre end floating point instruktioner. enkelt præcision. | |||
FP sammenligne dobbelt (eq, ne, lt, le, gt, ge) | c.lt.d $f2,$f4 | if ($f2 < $f4) cond=1; ellers betingelse=0 | Sammenligning med mindre end floating point instruktioner. Dobbelt præcision. | ||||
forgrening | gren på FP sand | bc1t 100 | hvis (kond == 1) gå til PC+4+100 | hvis formatet er FP, udføres en forgrening. | |||
gren på FP falsk | bc1f 100 | hvis (kond == 0) gå til PC+4+100 | hvis formatet ikke er FP, laves en gren. |
Disse instruktioner accepteres af MIPS assembly sprog, men de er ikke rigtige. Samleren oversætter dem til faktiske instruktionssekvenser.
Navn | Instruktions syntaks | Oversættelse til en almindelig instruktion | betyder |
---|---|---|---|
Indlæs adresse | la $1, LabelAddr | lui $1, LabelAddr[31:16]; eller $1,$1, LabelAddr[15:0] | $1 = Adressemarkering |
Indlæs øjeblikkeligt | li$1, IMMED[31:0] | lui $1, IMMED[31:16]; eller $1, $1, IMMED[15:0] | $1 = 32-bit direkte værdi |
Filial hvis større end | bgt $rs,$rt,Label | slt $at,$rt,$rs; bne $at,$nul,Label | if(R[rs]>R[rt]) PC=Label |
Filial hvis mindre end | blt $rs,$rt,Label | slt $at,$rs,$rt; bne $at,$nul,Label | if(R[rs]<R[rt]) PC=Label |
Filial, hvis den er større end eller lig | bge | etc. | if(R[rs]>=R[rt]) PC=Label |
Filial, hvis mindre end eller lig | ble | if(R[rs]<=R[rt]) PC=Label | |
Filial, hvis større end usigneret | bgtu | if(R[rs]=>R[rt]) PC=Label | |
Gren, hvis den er større end nul | bgtz | if(R[rs]>0) PC=Label | |
Multiplicerer og returnerer kun de første 32 bits | mul $1, $2, $3 | mult $2, $3; $1 | $1 = $2 * $3 |
Hardwarearkitekturen definerer følgende kriterier:
Dette er de eneste begrænsninger, som hardwarearkitekturen sætter for brugen af registre til generelle formål.
Forskellige MIPS-enheder implementerer specielle opkaldskonventioner, der begrænser brugen af registre. Opkaldskonventioner understøttes fuldt ud af softwarepakken, men kræves ikke af hardwaren.
RegistreNavn | Nummer | Ansøgning | skal du reservere? |
---|---|---|---|
$nul | $0 | gemmer altid 0 | N/A |
$ kl | $1 | midlertidigt register for samlesprog | INGEN |
$v0-$v1 | $2-$3 | funktions- og udtryksværdier | INGEN |
$a0—$a3 | $4-$7 | funktionsargumenter | INGEN |
$t0—$t7 | $8-$15 | midlertidig | INGEN |
$s0—$s7 | $16-$23 | gemte midlertidige værdier | JA |
$t8—$t9 | $24-$25 | midlertidig | INGEN |
$k0—$k1 | $26-$27 | reserveret til operativsystemets kerne | INGEN |
$gp | 28 USD | global pointer | JA |
$sp | 29 USD | stak pointer | JA |
$fp | 30 USD | ramme pointer | JA |
$ra | 31 USD | retur adresse | N/A |
Beskyttede registre (efter konvention) kan ikke ændres ved system- eller procedure- (funktions)kald. For eksempel skal $s-registre gemmes på stakken ved den procedure, der skal bruge dem; konstanter øges til $sp- og $fp-registrene, og i slutningen af proceduren dekrementeres registrene igen. Det modsatte eksempel er $ra-registret, som automatisk ændres, når det kaldes af en funktion. $t-registre skal gemmes af programmet, før en procedure kaldes (hvis programmet har brug for data modtaget efter opkaldet).
Blandt de åbne virtuelle platforme er der en gratis OVP-sim-emulator tilgængelig til ikke-kommerciel brug, som er et bibliotek af processor- og platformsmodeller, samt API'er, der giver brugeren mulighed for at designe deres egne modeller. Modelbiblioteket er en åben ressource skrevet i C og inkluderer 4K, 24K og 34K MIPS kerner. Disse modeller er skabt og vedligeholdt af Imperas, som har indgået et samarbejde med MIPS Technologies for at teste emulatoren og markere den som MIPS-verificeret. Eksempelplatforme baseret på MIPS inkluderer både selve hardwaren og platforme til indlæsning af umodificerede binære Linux-mappings. Disse emulatorplatforme er effektive til læring og er også tilgængelige, gratis og nemme at bruge. OVPsim, udviklet og vedligeholdt af Imperas, kører med høj hastighed (hundrede af millioner af instruktioner i sekundet), og er anvendelig til at beskrive multi-core arkitekturer.
Der er en frit tilgængelig MIPS32-emulator (tidligere versioner kunne kun emulere R2000/R3000) udgivet under navnet SPIM til undervisningsbrug. EduMIPS64 er en cross-platform grafisk MIPS64 processor emulator skrevet i Java /Swing. Det understøtter mange MIPS64 ISA'er og giver brugeren mulighed for visuelt at se, hvad der sker i pipelinen, når CPU'en udfører et assemblersprogsprogram. Projektet har udelukkende pædagogiske formål og er meget brugt i nogle computerarkitekturkurser rundt om i verden.
En anden GUI-emulator af MIPS-processorer er MARS, også udviklet til uddannelsesformål, og er især effektiv i forbindelse med Hennessys Computer Organization and Design -bog .
Mere avancerede versioner af de gratis emulatorer er Gxemul (tidligere kendt som mips64emul-projekterne) samt QEMU-projekterne. De efterligner forskellige modeller af MIPS III og MIPS IV mikroprocessorer (som et supplement til computersystemer, der bruger dem).
Kommercielle emulatordesigns er primært tilgængelige til indlejret brug af MIPS-processorer, såsom Virtutech Simics (MIPS 4Kc og 5Kc, PMC RM9000, QED RM7000), VaST Systems (R3000, R4000) og CoWare (MIPS4KE, MIPS254K og MIPS254K og MIPS254K, MIPS254K og MIPS254K).
Mikrocontrollere | ||||||||
---|---|---|---|---|---|---|---|---|
Arkitektur |
| |||||||
Producenter |
| |||||||
Komponenter | ||||||||
Periferi |
| |||||||
Grænseflader | ||||||||
OS | ||||||||
Programmering |
|
Processorarkitekturer baseret på RISC- teknologier | |
---|---|