CISC y VLIW, e instrucción y código de operación

CISC y VLIW, e instrucción y código de operación

Dehttp://en.wikipedia.org/wiki/Instruction_set

Procesadores CISCincluir instrucciones "complejas" en su conjunto de instrucciones. Una sola instrucción "compleja" hace algo que puede requerir muchas instrucciones en otras computadoras. Dichas instrucciones se caracterizan por instrucciones que toman múltiples pasos, controlan múltiples unidades funcionales o aparecen en una escala mayor que la mayor parte de instrucciones simples implementadas por el procesador dado.

...

EnArquitecturas de palabras de instrucción muy largas (VLIW), que incluyen muchas arquitecturas de microcódigo, una sola instrucción incluye múltiples códigos de operación simultáneos y sus operandos.

CISC y VLIW me parecen el mismo concepto, en el sentido de que una instrucción incluye múltiples operaciones (es decir, códigos de operación). Entonces ¿son el mismo concepto?

¿Cómo se define una sola operación (es decir, código de operación) cuando se dice si una instrucción tiene múltiples operaciones (es decir, códigos de operación)?

Respuesta1

Los procesadores CISC modernos tienen múltiples unidades de ejecución. También tienen muchos circuitos y lógica adicionales para intentar distribuir el flujo de instrucciones entre esas unidades de ejecución.

VLIW es un intento de que el compilador haga parte de este trabajo y utilice el circuito guardado para aún más unidades de ejecución, caché u otros recursos.

Un ejemplo sería Itanium, en el que las palabras de instrucción son de 128 bits y contienen tres instrucciones. Esto permite que el compilador haga parte del trabajo de emparejar instrucciones para ejecutarlas juntas.

Respuesta2

Una instrucción es una única orden que debe realizarse de forma lógica antes de la siguiente. Si una instrucción contiene más de una operación, como en una instrucción VLIW, estas deben realizarse al mismo tiempo. Y en una instrucción VLIW, cada ranura de operación corresponde a una unidad de procesamiento de hardware (una combinación de una FPU y una ALU), que la instrucción asigna estáticamente. Mientras que en un CISC o RISC el procesador puede elegir cualquier unidad de procesamiento libre. Pero como las unidades se asignan en la instrucción con VLIW, no se puede ejecutar código para un VLIW en otro modelo con mayor o menor unidad de procesamiento ya que las instrucciones para eso tendrían más o menos espacios en sus instrucciones, aunque algunas mayores podrían permitir ejecutar código que usa un formato que tiene menos ranuras, a diferencia de un CISC o RISC donde el código puede usar automáticamente unidades de procesamiento adicionales, el código VLIW no puede usar las unidades de procesamiento adicionales sin volver a compilarse específicamente para el procesador.

Esa limitación con VLIW es lo que impulsóEjecución de gráficos de datos explícitos (EDGE).

Respuesta3

¿Cómo se define una sola operación (es decir, código de operación) cuando se dice si una instrucción tiene múltiples operaciones (es decir, códigos de operación)?

Las definiciones y sus expectativas no son del todo correctas."Código de operación"se utiliza para indicarvisibleinstrucciones, no operaciones ocultas como microoperaciones, y"instrucción"sólo debe referirse aoperaciones expuestas por el usuario. Una "operación" no corresponde a un código de operación y puede ser simple (un único código de operación) o compleja (múltiples códigos de operación) dependiendo de cómo se refiera a ella, como si desea abordar toda la operación en sí o abordar cada operación de nivel inferior. solía lograr esa gran cosa. Es como cuando haces una división, se le puede llamar una operación única. Pero la división también se puede subdividir en una serie de restas/multiplicaciones, es decir, operaciones múltiples (etapas en términos de hardware). Muchas arquitecturas RISC antiguas tienen instrucciones separadas para las distintas etapas de una división para mantener las instrucciones simples y simplificar la canalización. Pero las arquitecturas RISC modernas normalmente no hacen eso y pueden tener instrucciones muy complejas como CISC, por ejemplo rlwinmen PowerPC o ldm/stmARM.

Enarquitecturas VLIW, una sola instrucción sigue siendo 1 instrucción. Sin embargo, las instrucciones seránagrupadoscomo un lote. Por ejemplo, un lote en la arquitectura Itanium contiene 3 instrucciones que se ejecutaránal mismo tiempo. Por supuesto, cada instrucción debe tener su propio código de operación, y esos códigos de operación están disponibles para que los use el programador. Además, esas instrucciones son independientes de las demás, a diferencia de las microoperaciones que representan en conjunto una operación de alguna instrucción de nivel superior. Por ejemplo, en alguna arquitectura puede tener 2 sumas junto con una multiplicación y un xor bit a bit de cosas diferentes en un lote que no se relacionan entre sí.

Por el contrario, unCISCla instrucción essólo unoinstrucción que realiza una sola operación y tieneun código de operación. Las generaciones anteriores de CPU CISC ejecutan cada instrucción directamente, por lo que en realidad es una única instrucción irrompible. Sin embargo, en los procesadores modernos, las "operaciones" complejas se dividirán en múltiples microoperaciones más simples que se pueden realizar en ciclos de reloj más cortos. Esas microoperaciones sonno visible para los extraños, por lo que no puedes llamarlos múltiples códigos de operación. Para los usuarios, sigue siendo una única instrucción. Probablemente lo harásNunca se sabe qué microoperaciones utiliza Intel o AMD bajo el capó. Además, una instrucción CISC se puede dividir en una sola microoperación o en varias, por lo que es completamente incorrecto decir que CISC incluye múltiples operaciones en una sola instrucción.

De hecho, las arquitecturas RISC modernas también dividen las instrucciones en microoperaciones al igual que CISC, y operaciones muy simples también se combinan en una macrooperación que tampoco es visible para el usuario, por ejemplo, CMP/Jcc en x86 o DIV/REM en RISC. V y no dirás que RISC es simple. Una instrucción RISC aún puede realizar múltiples operaciones.

CISC y VLIW, uno tiene una sola instrucción con un solo código de operación ejecutándose a la vez (salvo la ejecución superescalar y fuera de orden por ahora), uno ejecuta múltiples instrucciones a la vez, entonces, ¿cómo son el mismo concepto? Debería verlo en la parte superior del conjunto de instrucciones o al menos en el mismo nivel. Comparar algo usado internamente en una CPU con algo en el conjunto de instrucciones encima de la CPU no tiene sentido.

información relacionada