Ensamblador escritor vs compilador en arquitectura VLIW

8

Leí esta oración en un libro:

En la arquitectura VLIW, el compilador y / o el escritor de ensamblaje elige instrucciones que se pueden ejecutar en paralelo.

¿Cuál es la diferencia entre el escritor de ensamblador y el compilador? ¿Un escritor de ensamblaje también significaría lo mismo que ensamblador?

Dasha Sham
fuente

Respuestas:

33

El "escritor de ensamblador" en ese libro es un desarrollador de software humano que escribe código en lenguaje ensamblador.

gnasher729
fuente
15
1. el intérprete no convierte nada al lenguaje ensamblador. 2. Cualquier herramienta que convierte el código fuente a lenguaje ensamblador es, por definición, un compilador.
gnasher729
44
@ KellyS.French un ensamblador convierte el código del lenguaje ensamblador en código de máquina, por lo que con esta definición no es un compilador. Sin embargo, si tiene una herramienta que convierte un lenguaje ensamblador en otro (por ejemplo, ARBfp1.0 al lenguaje ensamblador nativo de una GPU moderna), esta herramienta es un compilador (con esta definición).
Ruslan
1
@ gnasher729 - nitpick: según la mayoría de las definiciones, la parte del "lenguaje ensamblador" de (2) es innecesaria (en particular, cosas como el compilador de mecanografía o el compilador de java, ninguno de los cuales compila la fuente para ensamblar, pero compila a javascript o java bytecode respectivamente). Más recientemente, generalmente significa cualquier herramienta que compila un lenguaje de programación en otro lenguaje de programación (y el ensamblaje es técnicamente un lenguaje de programación).
Delioth
2
@ KellyS.French: Un compilador es un programa que traduce un programa en el lenguaje X a un programa semánticamente equivalente en el lenguaje Y. Dependiendo de cuáles son exactamente los idiomas X e Y, tenemos nombres especiales para esos compiladores, y "ensamblador" es Uno de esos nombres especiales. Pero todos son tipos especiales de compiladores. Por ejemplo, si Y = ensamblaje y X tienen un nivel más alto que Y, entonces lo llamamos ensamblador. Si Y = ensamblaje y X es inferior a Y, lo llamamos desensamblador. Si X es de nivel inferior que Y e Y! = Ensamblaje, lo llamamos un descompilador. Si X e Y son del mismo nivel, el uso reciente ...
Jörg W Mittag
2
@ KellyS.French: Supongo que la razón por la que no se habla mucho de los ensambladores en términos de compiladores es que los ensambladores son compiladores muy aburridos. En esencia, un ensamblador es solo un mapeo 1: 1 de mnemónicos legibles por humanos a códigos operativos legibles por máquina. La etapa de análisis es simple, no hay tipos, no hay optimizaciones, la generación de código es trivial. Ninguna de las cosas algorithmitic interesante que hacer es presentar compiladores: análisis de un lenguaje complejo, la verificación de tipos, la inferencia de tipos, optimizaciones, mapeo inteligente de la semántica, etc.
Jörg W Mittag
10

En la arquitectura VLIW, el compilador y / o el escritor de ensamblaje elige instrucciones que se pueden ejecutar en paralelo

El significado de esta oración es que en la arquitectura VLIW, el código ensamblador (máquina) define qué instrucción se ejecutará en paralelo, por lo que se fija en el momento en que el código ensamblador es escrito por un humano o generado por un compilador.

Esto difiere del cpus superescalar, donde las instrucciones pueden ejecutarse en paralelo, esta es una decisión tomada por la CPU cada vez que ejecuta las instrucciones.

También hay CPU que combinan ambos enfoques: Itanium2 es compatible con versiones anteriores de Itanium y contiene 3 instrucciones en la palabra VLIW. Pero, un caso, Itanium2 puede ejecutar dos de estos paquetes en el ciclo de una sola CPU, y esta decisión se toma en el momento de la ejecución.

Bulat
fuente