CISC e VLIW e instrução e opcode

1

De link

CISC processors include "complex" instructions in their instruction set. A single "complex" instruction does something that may take many instructions on other computers. Such instructions are typified by instructions that take multiple steps, control multiple functional units, or otherwise appear on a larger scale than the bulk of simple instructions implemented by the given processor.

...

In very long instruction word (VLIW) architectures, which include many microcode architectures, a single instruction includes multiple simultaneous opcodes and their operands.

O CISC e o VLIW parecem-me o mesmo conceito, em que uma instrução inclui múltiplas operações (isto é, opcodes). Então, eles são o mesmo conceito?

Como você define uma única operação (ou seja, opcode) é, ao dizer se uma instrução tem operação múltipla (ou seja, opcodes)?

    
por Ben 28.01.2014 / 04:17

3 respostas

4

Os modernos processadores CISC têm várias unidades de execução. Eles também têm muitos circuitos extras e lógica para tentar distribuir o fluxo de instruções entre essas unidades de execução.

A VLIW é uma tentativa de fazer com que o compilador faça um pouco desse trabalho e use o circuito salvo para ainda mais unidades de execução, cache ou outros recursos.

Um exemplo seria o Itanium, no qual as palavras de instrução são 128bits e contêm três instruções. Isso permite que o compilador faça parte do trabalho de emparelhar as instruções para executar juntas.

    
por 28.01.2014 / 06:06
2

Uma instrução é uma ordem única que deve ser feita logicamente antes da próxima. Se uma instrução contiver mais de uma operação, como em uma instrução VLIW, elas devem ser feitas ao mesmo tempo. E, em uma instrução VLIW, cada slot de operação corresponde a uma unidade de processamento de hardware (uma combinação de FPU e ALU), as quais são atribuídas estaticamente pela instrução. Onde, como em um CISC ou RISC, o processador pode escolher qualquer unidade de processamento livre. Mas como as unidades são atribuídas na instrução com VLIW, não é possível executar código para uma VLIW em outro modelo com unidades de processamento maiores ou menores, pois as instruções para isso teriam mais ou menos slots em suas instruções, embora algumas maiores possam permite executar código que usa um formato que tenha menos slots, diferente de um CISC ou RISC onde o código pode usar automaticamente unidades de processamento adicionais, o código VLIW não pode usar as unidades de processamento extra sem ser especificamente recomendado para o processador.

Essa limitação com o VLIW é o que solicitou Execução explícita do gráfico de dados (EDGE) .

    
por 28.01.2014 / 04:42
0

How do you define a single operation (i.e. opcode) is, when telling if an instruction has multiple operation (i.e. opcodes)?

As definições e suas expectativas não estão corretas. "Opcode" é usado para indicar instruções visíveis , não operações ocultas como micro-operações, e "instrução" deve referir-se apenas a operações expostas pelo usuário . Uma operação pode ser simples ou complexa, dependendo de como você se refere a ela, como se você quisesse abordar toda a operação em si, ou cada operação de nível inferior usada para alcançar essa grande coisa. É como quando você faz uma divisão, pode ser chamada de uma única operação. Mas a divisão também pode ser subdividida em uma série de subtrações / multiplicações, ou seja, múltiplas operações.

Em arquiteturas VLIW , uma única instrução ainda é 1 instrução. No entanto, as instruções serão agrupadas como um lote. Por exemplo, um lote na arquitetura Itanium contém 3 instruções que serão executadas ao mesmo tempo . É claro que cada instrução deve ter seu próprio opcode, e esses opcodes estão disponíveis para o programador usar. Além disso, essas instruções são independentes das outras, ao contrário das micro-operações, que juntas representam uma operação de alguma instrução de nível superior. Por exemplo, em algumas arquiteturas, você pode ter duas adições junto com uma multiplicação e um bit a bit de coisas diferentes em um lote que não se relacionam entre si.

Pelo contrário, uma instrução CISC é somente uma instrução que faz uma única operação, e tem um opcode . Gerações anteriores de CPUs CISC executam cada instrução diretamente, então é realmente uma única instrução inquebrável. No entanto, em processadores modernos, as "operações" complexas serão divididas em várias operações mais simples que podem ser feitas em ciclos de clock mais curtos. Essas micro-operações não são visíveis para pessoas de fora, então você não pode chamá-las de múltiplos opcodes. Para os usuários, ainda é uma única instrução. Você provavelmente nunca saberá quais micro-operações Intel ou AMD estão usando sob o capô.

CISC e VLIW, um tem uma única instrução com um único código de operação sendo executado por vez (excluindo a execução superescalar e fora de ordem), um executa várias instruções por vez, então, como elas são o mesmo conceito? Você deve ver no topo do conjunto de instruções ou, pelo menos, o mesmo nível. Comparar uma coisa usada internamente em uma CPU com uma coisa no conjunto de instruções acima da CPU não tem sentido.

    
por 01.07.2015 / 12:19