assembly x86 arm mips

assembly - Procesadores MIPS: ¿Todavía están en uso? ¿Qué otra arquitectura debo aprender?



x86 arm (7)

He estado programando para x86 y x86-64 en lenguaje ensamblador durante algunos meses. Ahora, quiero pasar a algunos tipos diferentes de procesadores.

MIPS, SPARC, PowerPC, Itanium, ARM de estos, encontré que ARM está siendo ampliamente utilizado. Pero en los libros veo que los tutoriales y libros enseñan sobre MIPS más que todas estas otras arquitecturas.

¿Por qué MIPS es tan popular? ¿Los procesadores MIPS aún están en uso? ¿A qué arquitectura debería ir?

Mi pasado:

Soy un estudiante en el departamento de electrónica. También soy un programador de alto nivel.


Esto es solo especulación. La información está tomada del artículo de Wikipedia sobre MIPS .

  • MIPS se originó en un entorno académico (Stanford), no comercial. Las personas en dicho entorno son mucho más propensas a escribir libros de texto que las personas que trabajan en una empresa.
  • En la década de 1990, MIPS se convirtió en licenciable. Combinado con el rendimiento decente / bueno por dólar en el momento, esto lleva a una adopción relativamente amplia en el mercado integrado (ARM tiene la misma historia).

Logré encontrar un graph de la cuota de mercado de los procesadores integrados, aunque solo se trata de procesadores RISC durante la década de los 90. Tenga en cuenta la gran parte que es MIPS. Sospecho que ARM ha sacado MIPS del agua en términos de cuota de mercado por ahora, pero no tengo los números.


La CPU MIPS se enseña como el procesador de arquitectura RISC "básico" porque fue uno de los primeros procesadores RISC de gran éxito. SGI tenía varios sistemas informáticos construidos sobre esta familia de procesadores, como el Onyx y muchos otros. También se usó en algunas computadoras MPP (Massively Parallel Processor) a mediados / finales de 1980 hasta finales de los 90.

Como alguien mencionó anteriormente, el código era fácil de aprender y una vez que lo aprendió, fue fácil pasar a procesadores basados ​​en instrucciones RISC más "complejos" como Alpha, SPARC, ARM, IBM Power PC, por nombrar algunos. Es digno de mencionar, HP también produjo un procesador RISC en la década de 1980 que pasó a alimentar algunos de sus sistemas informáticos comerciales.

El procesador MIPS aún existe hoy, el MIPS64 I-Class, basado en el procesador MIPS-V, es la última versión del procesador que conozco; producido por Imagination Technologies. Según tengo entendido, este y los nuevos procesadores MIPS como el R14K y el R16K se basan en la arquitectura R10K.

En mi juventud, tuve la fortuna de trabajar en un procesador SGI Onyx Reality Engine II de 16 procesadores, con MIPS R10k actualizado. Habiendo trabajado principalmente en sistemas CISC UNIX SVR4 de 32 bits, me sorprendió que la mayoría de los comandos fueran exactamente iguales. Me tomó un par de días aprender las diferencias de codificación, pasando de CISC a RISC, pero después de eso, ¡¡¡fue muy fácil !!!


La Playstation 2 tenía una CPU MIPS. La PS3 usa la Celda, que se parece a una variante POWER, y la XBox 360 también usa una PowerPC.

ARM parece ser cada vez más popular en dispositivos móviles, y PowerPC todavía es enorme en sistemas integrados, especialmente automotrices. Incluso puedes encontrar el M68k ocasional si miras en el dispositivo correcto.

MIPS es probablemente popular porque es una arquitectura real, pero aún relativamente simple. Podría decirse que (¿es uno de ellos?) La primera arquitectura (s) RISC moderna. (¡Incluso yo podría resolverlo!)

Realmente depende de lo que quiere aprender y por qué. ¿Solo por diversión? Para construir un dispositivo integrado? Para escribir un compilador? Para escribir tu propio código de ensamblaje? Para estirar tu mente?


La razón por la que MIPS se enseña en las escuelas es porque es una arquitectura RISC ''clásica'' y es similar a DLX, que es el tipo de arquitectura utilizada en la Biblia por Hennessy & Patterson (los padres-dioses del RISC moderno). Es muy simple de entender en su simplicidad y una vez que lo obtiene, moverse a otras arquitecturas es bastante simple.

Si está pidiendo arquitecturas específicas para aprender, diría que a menos que esté interesado en convertirse en un tipo de hardware, puede que no ayude mucho aparte del factor de conocimiento. La mayoría de los compiladores resumen muchos de los problemas de hardware a menos que necesites escribir un código de muy bajo nivel. Por lo tanto, un PPC / SPARC / ARM / MIPS / lo que sea no hará mucha diferencia para el 90% de los programadores que existen.


Me gustaría agregar que hoy verán que las compañías chinas usan MIPS, incluyendo notablemente a Ingenic Semiconductor , que apunta a mercados de consumo, y Loongson Technology , que está involucrada en productos de consumo y supercomputadoras.


Si tienes experiencia en el mundo x86 (-64), entonces sí, el cambio a un procesador RISC es un buen movimiento lateral para mantener tu mente abierta. Tus preguntas son buenas.

Respondiendo a su segunda pregunta: sí, los procesadores MIPS aún están en uso. Con frecuencia son los procesadores utilizados en cosas como enrutadores y otros pequeños dispositivos informáticos como ese. También están apareciendo cada vez más en dispositivos informáticos domésticos pequeños en mercados asiáticos (Lemote, por ejemplo). Lo que aportan a la mesa sobre ARM es una relación precio / rendimiento competitiva y capacidades de 64 bits. Lo que ARM aporta a través de MIPS es una mejor relación potencia / rendimiento, si la memoria sirve, y un conjunto de opciones más flexible en la construcción de núcleos. SPARC es muy caro, pero, para ser justo, muy rápido. No sé lo suficiente sobre las otras arquitecturas mencionadas para hacer algún comentario útil. (Bueno, excepto Itanium, que es básicamente tecnología nacida muerta que no es RISC ni CISC).

Respondiendo ahora su primera pregunta: la razón por la que MIPS se destaca de forma tan destacada en los libros es que es casi un ejemplo perfecto de un sistema RISC. Es una implementación de RISC pequeña, relativamente pura, que se entiende fácilmente y que ilustra bien los conceptos de RISC. Con fines pedagógicos, es probablemente la mejor arquitectura del mundo real para mostrar la naturaleza de RISC, junto con sus verrugas. Otros procesadores considerados RISC (ARM, SPARC, Alpha, etc.) son más pragmáticos y complicados, y confunden los conceptos de RISC con algunas mejoras más de tipo CISC para obtener un mejor rendimiento u otros beneficios.

Finalmente, para responder a su pregunta final: recomendaría aprender MIPS por la misma razón por la que recomiendo a las personas que aprenden OOP recoger a Eiffel, las personas que aprenden la recuperación funcional de Haskell, y así sucesivamente. MIPS es la implementación más pura de los conceptos de RISC que está en uso real en el mundo real y se verá obligado a lidiar con la forma de pensar de RISC y solo con la forma de pensar de RISC (en su mayor parte) mientras resuelve sus problemas con ella. Esto preparará su mente para el enfoque RISC y le facilitará la recuperación rápida de ARM (mi segundo recomendado) o SPARC o cualquier otra arquitectura RISC, incluso si nunca usa MIPS directamente. (Aunque, como señalé, en realidad puede terminar compitiendo con MIPS de todos modos).


Cavium Networks y Raza Microelectronics Broadcom son dos grandes fabricantes de chips MIPS. Consulte el sitio web de MIPS Imagination Technologies para obtener más información.

Una cosa que MIPS hace y ARM no es de 64 bits.

Actualización a partir de 2013: Broadcom no parece haber presentado nuevos productos MIPS desde 2006, y Cavium parece estar en transición a ARM v8 de 64 bits. Imagination Technologies adquirió MIPS a fines de 2012. (Irónicamente, Apple, su cliente número 1, fue el primero en comercializar con ARM v8).

La escritura está en la pared para MIPS.

MIPS es el RISC más limpio y exitoso. PowerPC y ARM (32 bits) tienen tantas instrucciones adicionales (incluso algunos modos de funcionamiento, especialmente ARM de 32 bits) que casi podría llamarlas CISC. SPARC tiene algunas características raras e Itanium está compuesto completamente de características extrañas. Los dos últimos están más muertos que MIPS.

Por lo tanto, si aprende el MIPS, podrá transferir el 100% de ese conocimiento a otros RISC (intervalos de retraso de entrega o recepción), pero aún debe aprender muchas instrucciones extrañas sobre PPC, todo un montón de basura en ARM de 32 bits, y registrar ventanas en SPARC. Itanium no es RISC, por lo que es difícil decir algo, además de no aprender Itanium.

Aún no he estudiado ARM de 64 bits, pero es probable que tenga la mayoría de las cualidades positivas de MIPS, ya que es esencialmente un diseño de pizarra limpia.