Gå til innhold

ARM fortsetter sitt inntog


Anbefalte innlegg

Spennende, hvor får jeg kjøpt MIPS maskinvare, som ikke er fra midt på 90-tallet? Tror jeg vet om i underkant av 10 prominente produsenter av ARM chips, ikke en eneste for MIPS.

F.eks Loongson. 65 nm prosess på noen av brikkene.

Kineserne er de med mest trykk på MIPS64 per i dag. Jeg mener det også skal finnes en del nettverksutstyr (juniper?) som kjører dette, men en får antagelig ikke disse prosessorene til andre systemer.

 

65nm er tilgjengelig i år, men til neste år skal det komme en på 28nm. De mener business her.

Jeg hadde en semesteroppgave om MIPS der vi laget en MIPS (32-bit) implementasjon i FPGA, og skrev en virtuell MIPS maskin og MIPS-assembler. Jeg vil påstå at MIPS er relativt uegnet som noe annet enn en undervisningsmodell. Instruksjonssettet er ganske krunglete å jobbe med, spesielt i forhold til x86, men også i forhold til ARM.

At det er til de grader simplistisk er en vesentlig fordel når en skal lære om prosessorer, men når en skal skrive programmer, så er det ikke så hendig. Blant annet har ikke 32-bit MIPS muligheten til å lagre et enkelt 32-bit immediate, en må ha to load instruksjoner, og gjøre et bitshift for noe som er én instruksjon i x86. Og dette er en ganske vanlig operasjon.

Lenke til kommentar
Videoannonse
Annonse

Det er vel først når en ser på 64bit at MIPS overgår ARM. Sistnevnte har fått merkelig (dårlig ?)implementasjon mhp ytelse, men kanskje de vil ta det igjen på skalerbarhet nedover på effekt. Forøvrig er det mye rart i de fleste om ikke alle ISA, og mye kan fikses med en workaround. Men workarounds koster ofte noe ytelse og alltid noe effekt. Det var jo dels derfor man lagde IA-64, der har du all verdens immediate lengde du måtte ønske også, ikke at jeg tror 32bit immediate er så veldig etterspurt i en 32bit arkitektur, men på 64bit er det nok vanlig.

Lenke til kommentar

Jeg hadde en semesteroppgave om MIPS der vi laget en MIPS (32-bit) implementasjon i FPGA, og skrev en virtuell MIPS maskin og MIPS-assembler. Jeg vil påstå at MIPS er relativt uegnet som noe annet enn en undervisningsmodell. Instruksjonssettet er ganske krunglete å jobbe med, spesielt i forhold til x86, men også i forhold til ARM.

At det er til de grader simplistisk er en vesentlig fordel når en skal lære om prosessorer, men når en skal skrive programmer, så er det ikke så hendig. Blant annet har ikke 32-bit MIPS muligheten til å lagre et enkelt 32-bit immediate, en må ha to load instruksjoner, og gjøre et bitshift for noe som er én instruksjon i x86. Og dette er en ganske vanlig operasjon.

 

Nå er vel tankegangen bak MIPS-instruksjonssettet at det skal brukes en optimaliserende kompilator, som tar seg av instruksjonsplanlegging i forhold til målprosessorens pipeline under kompileringen, og ikke at den skal programmeres manuelt. Og når det gjelder x86 instruksjonssettet så kan det ihvertfall ikke påstås at det er noe bedre, i og med at instruksjoner forårsaker implisitte endringer i registerfilen.

 

Det er vel egentlig umulig å gjøre en direkte 32-bit immediate load på enhver prosessor som har 32-bit instruksjonsord med bare en instruksjon. x86 jukser vel dette til med en noe lenger instruksjon. Så da spørs det hva som er mest effektivt av dekode en instruksjon av variabel lengde, eller å kjøre MIPS sin «load upper immediate - or immediate»-sekvens for å laste et fullstendig 32-bits ord.

Lenke til kommentar

Ja man skal være god på bit magi for å få til 32bit immediate når instruksjonene har fast lengde på 32bit. Siden x86 har variabel instruksjonslengde så kan en få til det meste, men om en ser på kostnad så er nok kosten av å måtte laste inn en uvanlig stor immediate verdi med mer enn èn instruksjon vesentlig mindre enn å _aldri_ (common case ekstrem versjon) vite hvor lang neste instruksjon er. Nå kan en si at å låse seg til kun én lengde er litt for rigid, men det er nok vesentlig bedre enn å tillate variabel lengde. Noen ISA tillater 2 lengder. Det er en svært god tilværming. Mener AVR32 tillater 16bit og 32bit. Det gir kompakt effektivitet, men dårlig skalerbarhet oppover. IA64 tillater 41bit og 123bit instruksjoner som gir mulighet til svært mye informasjon. Her har en også 5 bit template for hver 123bit instruksjon eller for hver tredje 41bit instruksjon som forteller hva slags type instruksjon(er) det er.

Endret av Anders Jensen
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...