Pregunta

Conozco x86 Assembly (y he trabajado con FPGA, etc.), nunca escribí para un RISC, tengo la oportunidad de tomar un curso en MIPS, pero estoy ocupado como está, entonces mi pregunta es, Sé que todo lo que aprendo es beneficioso de alguna manera, pero realmente, ¿cuánto beneficioso? (Soy un entusiasta de bajo nivel, pero ¿es obligatorio?)

(Soy consciente de mips-is-it-important , pero siento que mi caso es ligeramente diferente ya que ya conozco algún tipo de Asamblea)

Gracias.

¿Fue útil?

Solución

Una cosa interesante sobre MIPS es que debe administrar el búfer de traducción Lookaside (TLB) manualmente. No tiene que hacer eso con x86 (o la mayoría de los otros ISA que he programado). De esa manera es más RISCER que las otras CPU RISC. Una gran cantidad de redes y equipos de almacenamiento ha integrado cpus MIPS. Una startup en la que trabajé a principios de esta década hizo una CPU MIPS de 16 núcleos con aceleradores de cifrado (como dos de los coprocesadores). Ese diseño fue comprado por Juniper Networks y se utiliza en sus servicios adaptativos PIC en sus enrutadores.

Entonces, como otros han dicho, MIPS es un muy buen ejemplo de un ISA RISC, y todavía está obteniendo muchas victorias de diseño. Creo que es útil aprender.

La primera edición del siguiente libro me pareció una buena forma de aprenderlo:

http://www.amazon.com/Second-Morgan-Kaufmann-Computer- Arquitectura / dp / 0120884216 / ref = sr_1_1? Ie = UTF8 & amp; s = books & amp; qid = 1237328559 & amp; sr = 1-1

Otros consejos

Ciertamente no es un must , pero es un buen ejemplo de una arquitectura RISC-ish. Agregue a eso la arquitectura IBM 360 (¡honesto!) Y tendrá un conocimiento bastante bueno del alcance de los conjuntos de instrucciones normales.

Creo que aprender MIPS (al menos el básico) no es tan difícil, también hay el simulador SPIM que puede usar para ver el código que se ejecuta. Si te gusta la programación de bajo nivel, vale la pena intentarlo.

La otra pregunta tenía una buena justificación de una arquitectura cada vez más obsoleta: el ensamblaje de aprendizaje está en en sí útil En su caso, eso no se aplica.

Consideraría el curso solo si ya supone un conocimiento de un ensamblador (de lo contrario, pasará mucho tiempo repitiendo conceptos básicos). De lo contrario, podría ser mejor pasar el tiempo con algo más relevante (y es poco probable que sea otro ensamblador, a menos que tenga grandes expectativas de trabajar en un procesador (familia) específico pronto.

¿Por qué no aprender algo nuevo (por ejemplo, programación funcional)?

Cuando estaba en la escuela (BS CS Michigan Tech 2008), el ensamblaje MIPS (que se ejecuta en SPIM) se enseñó en la "Introducción a la arquitectura de computadoras" requerida. clase que también cubría diferentes tipos de arquitecturas, caché, DMA, etc. También aprendimos los conceptos básicos de cómo las compuertas lógicas y la memoria dinámica / estática se construyen a partir de componentes de nivel inferior como diodos, condensadores y transistores (no profundizamos mucho en eso; esta era una clase CS). Utilizamos un software de simulación lógica (básicamente compuertas AND / OR / etc. que podría arrastrar y soltar en una cuadrícula y unir) para construir un sumador, una ALU y, finalmente, un procesador RISC de 16 bits muy simple con una especificación de código de máquina, ensamblador, programas de muestra y salida de muestra.

Si es ese tipo de clase, diría que sería muy valioso. Encontré el conocimiento de esa clase increíblemente útil para comprender cosas en mi clase de sistema operativo (memoria virtual / paginación / caché, interrupciones ...), y más tarde para comprender cómo la JVM está lidiando con el código de bytes. Entender cómo los mapas de ensamblaje a mapas de código de máquina a multiplexores y ALU y registros hicieron muchas cosas que pensé que eran mágicas antes de triviales y fáciles de entender.

De lo contrario, esto es solo para agregar otro conjunto de instrucciones a su cinturón de herramientas, y MIPS podría no ser el indicado. Es es muy fácil / directo / regular en comparación con x86, por lo que no debería tener muchos problemas con la clase. ¿Valioso, sin embargo? Probablemente podría recogerlo con bastante facilidad sin tomar una clase si se siente bastante cómodo con el ensamblaje en general y por alguna razón lo necesita.

Si eres un entusiasta de bajo nivel, puede valer la pena, pero puedes enseñarte mips en un fin de semana, así que imagino que el curso será más que solo programar en mips. Si se trata de un curso de teoría de hardware informático que utiliza mips, creo que vale la pena su tiempo.

Sin embargo, si se trata solo de la programación MIPS y ya tiene un control sobre el ensamblaje x86 y los conceptos de programación de bajo nivel, diría que pase la clase. Ahorre tiempo y dinero y pase un fin de semana más o menos jugando con MIPS utilizando SPIM , que Schnaader señaló.

También recuerda que no has explorado estas cosas lo suficiente si nunca has escrito una función recursiva en el ensamblaje.

Una de mis clases nos obligó a aprender el lenguaje ensamblador MIPS. Bueno, técnicamente ... era nuestra propia arquitectura personalizada, pero fuertemente basada en MIPS. Conclusión, hazlo. Saber que el ensamblaje me ayudó indefinidamente, a pesar de que odio trabajar tan bajo para el metal.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top