Pregunta

Linus Torvalds solía trabajar para una compañía llamada procesador Transmeta. El procesador que hacían era un objeto basado RISC en el núcleo. Si no recuerdo mal, la idea era que el núcleo publicó un "capa de emulación del procesador" arbitraria y actualizable (podría ser x86, PowerPC, etc), lo que se tradujo los códigos de operación de alto nivel en el conjunto de instrucciones RISC núcleo.

¿Qué pasó con esta idea, y lo que en su opinión eran los pros, los contras y situaciones en las que tal enfoque podría haber tenido una ventaja (en términos de programación)?

¿Fue útil?

Solución

La empresa no va tan bien como esperaban, y finalmente fueron adquiridas por Novafora por su tecnología de ahorro de energía. ( http://www.novafora.com/pr01-28-09.html)

A partir de todas las cuentas que yo sepa, la tecnología simplemente no compitió con los sistemas existentes. Ellos estuvieron muy por debajo de sus números de rendimiento. Asimismo, si bien puede haber sido posible poner otro traductor en la parte superior de su diseño VLIW, no estoy al tanto de cualquier producto que producían que hicieron. No recuerdo el chip Crusoe ser capaz de aceptar una "traducción" microcódigo Descarga alternativa.

Yo personalmente poseía un dispositivo que utiliza un procesador Crusoe, y aunque ciertamente produjo duración de la batería, el rendimiento del dispositivo era pésimo. Parte de la culpa probablemente podría ser nivelada en la versión especial de Windows que utiliza, pero seguía siendo lento.

En el mejor, que era bueno para el escritorio remoto portátil.

En mi humilde opinión, la tecnología tiene los mismos beneficios que el software de máquina virtual es como .Net y la JVM:

  • La ventaja es que es probable que pueda acelerar el código más rápido con una solución de hardware (como IBM hace con es procesadores de aceleración Java) JIT de software puro.
  • La desventaja es que nunca se tiene la materia prima el rendimiento que los procesadores de ejecución Obtener código nativo.

Desde algunos puntos de vista que se pueda imaginar chips x86 modernos como morphing código, a pesar de los muy especializados. Traducen la arquitectura x86 en un conjunto subinstruction RISC más eficiente, y luego ejecutar esas.

Otro ejemplo de este tipo de tecnología podría ser FPGAs que se pueden programar para emular a nivel de circuito diferentes tipos de procesadores o circuitos primas. Creo que algunos sistemas Cray pueden venir con "nodos" de aceleración de este tipo.

Otros consejos

Por un lado la mayoría de los procesadores CISC traducen internamente sus códigos de operación a uops micro-ops que son similares a los ops RISC. La canalización y múltiples núcleos han cerrado la brecha en los procesadores RISC hasta el punto en que es una muy pequeña diferencia entre ellos, en su caso. Si necesita compatibilidad cruzada de la fuente C o otro montaje de extremo delantero puede utilizar LLVM. http://llvm.org/

ventajas obvias:

  • Capacidad para ejecutar cualquier sistema operativo (Sólo tiene que activar la emulación del procesador para lo que se necesita)
  • Posibilidad (con el soporte del núcleo, por supuesto) de ejecutar binarios para diferentes arquitecturas en el mismo procesador / OS y sin soporte de software.

con obvia:

  • capa de emulación adicional == == más sobrecarga procesador más rápido necesario para obtener un rendimiento equivalente para todo.

Yo diría que la reducción de costes vienen con la cantidad, así que algo como el chip de Transmeta tiene que vender una gran cantidad de volumen antes de que pueda competir en precio con chips x86 de alto volumen existentes.

Si no recuerdo mal, el punto del chip de Transmeta era que se trataba de baja potencia. Tener menos puertas de silicio para voltear hacia atrás y adelante cada ciclo de reloj ahorra energía. El código de morphing era por lo que podría ejecutar un conjunto de instrucciones complejo (CISC) sobre un chip RISC de baja potencia.

primer procesador de Transmeta, el Crusoe, no lo hizo muy bien debido a problemas aún ejecutan software de referencia. Su segundo procesador, el Efficeon, se las arregló para utilizar menos energía que el procesador Intel Atom (en la misma categoría de rendimiento), y un mejor rendimiento que el Centrino en el mismo sobre el poder.

Ahora, mirándolo desde el punto de vista del software y la flexibilidad como si, Code Morphing es sólo una forma de compilación Just-In-Time, con todos los beneficios y perjuicios de esa tecnología. Su código x86 es esencialmente ejecuta en una máquina virtual y siendo emulada por otro procesador. El mayor beneficio de la virtualización en este momento es la capacidad de compartir un único procesador entre muchas máquinas virtuales por lo que tiene menos ciclos de CPU ociosos, que es más eficiente (coste del hardware y el coste de energía).

Así que me parece que el código de morphing, al igual que cualquier forma de virtualización, se trata de ser más eficiente con los recursos.

Por otro enfoque para la virtualización asistida por hardware x86 ISA, es posible que desee leer sobre el Loongson 3 CPU.

La mayoría de los procesadores modernos implementan realmente sus conjuntos de instrucciones usando microcódigo . Hay muchas razones para esto, incluyendo problemas de compatibilidad, pero también hay otra razones.

La distinción entre lo que es "hardware" y qué es "software" es realmente difícil de hacer. máquinas virtuales modernas como la JVM o CIL (NET) bien podrían ser implementadas en hardware, pero que probablemente acaba de hacer utilizando microcódigo de todos modos.

Una de las razones para tener varias capas de abstracción en un sistema es que el programadores / ingenieros no tienen que pensar en detalles irrelevantes cuando están trabajando en un nivel más alto.

El sistema operativo y las bibliotecas del sistema también proporcionan capas de abstracción adicionales. Sin embargo, tener estas capas sólo hace que el sistema de "lento" si uno no tiene las características que proporcionan (es decir, la programación de subprocesos realizado por el sistema operativo). No es una tarea fácil de obtener su propio programador de programas específicos para vencer a la del núcleo de Linux.

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