CISC e VLIW, e instrução e opcode

CISC e VLIW, e instrução e opcode

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

Processadores CISCinclua instruções "complexas" em seu conjunto de instruções. Uma única instrução "complexa" faz algo que pode exigir muitas instruções em outros computadores. Tais instruções são tipificadas por instruções que realizam múltiplas etapas, controlam múltiplas unidades funcionais ou aparecem em uma escala maior do que a maior parte das instruções simples implementadas por um determinado processador.

...

Emarquiteturas de palavras de instrução muito longas (VLIW), que incluem muitas arquiteturas de microcódigo, uma única instrução inclui vários opcodes simultâneos e seus operandos.

CISC e VLIW me parecem o mesmo conceito, pois 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 múltiplas operações (ou seja, opcodes)?

Responder1

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

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

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

Responder2

Uma instrução é uma ordem única que deve ser executada logicamente antes da próxima. Se uma instrução contém mais de uma operação, como em uma instrução VLIW, estas devem ser executadas 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 uma FPU e uma ALU), que 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, você não pode executar código para um VLIW em outro modelo com mais ou menos unidades de processamento, pois as instruções para isso teriam mais ou menos slots em suas instruções, embora alguns maiores possam permite a execução de código que usa um formato com menos slots, ao contrário 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 extras sem ser recompilado especificamente para o processador.

Essa limitação do VLIW foi o que motivouExecução Explícita de Gráfico de Dados (EDGE).

Responder3

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

As definições e suas expectativas não estão totalmente corretas."Código de operação"é usado para indicarvisívelinstruções, não operações ocultas como micro-ops, e"instrução"deve referir-se apenas aoperações expostas pelo usuário. Uma "operação" não corresponde a um opcode e pode ser simples (um único opcode) ou complexa (vários opcodes) dependendo de como você se refere a ela, como se você deseja abordar toda a operação em si ou abordar cada operação de nível inferior costumava alcançar aquela grande coisa. É como quando você faz uma divisão, ela pode ser chamada de operação única. Mas a divisão também pode ser subdividida em uma série de subtrações/multiplicações, ou seja, operações múltiplas (estágios em termos de hardware). Muitas arquiteturas RISC antigas têm instruções separadas para vários estágios de uma divisão para manter as instruções simples e simplificar o pipeline. Mas as arquiteturas RISC modernas normalmente não fazem isso e podem ter instruções muito complexas como CISC, por exemplo, rlwinmem PowerPC ou ldm/stmem ARM.

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

Pelo contrário, umCISCinstrução éapenas uminstrução que executa uma única operação e temum código de operação. As gerações anteriores de CPUs CISC executam cada instrução diretamente, portanto, é realmente uma instrução única e inquebrável. No entanto, nos processadores modernos, “operações” complexas serão divididas em múltiplas microoperações mais simples que podem ser realizadas em ciclos de clock mais curtos. Essas micro-operações sãonão visível para estranhos, então você não pode chamá-los de vários opcodes. Para os usuários, ainda é uma instrução única. Você provavelmente iránunca se sabe quais micro-operações a Intel ou a AMD estão usando nos bastidores. Além de uma instrução CISC poder ser dividida em um único micro-op ou em vários, é completamente errado dizer que o CISC inclui várias operações em uma única instrução.

Na verdade, as arquiteturas RISC modernas também dividem as instruções em micro-operações, assim como o CISC, e operações muito simples também são combinadas em uma macro-operação que também não é visível ao usuário, por exemplo, CMP/Jcc em x86 ou DIV/REM em RISC- V e você não dirá que RISC é simples. Uma instrução RISC ainda pode realizar múltiplas operações.

CISC e VLIW, tem-se uma única instrução com um único opcode em execução por vez (exceto a execução superescalar e fora de ordem por enquanto), executa-se várias instruções ao mesmo tempo, então como elas têm o mesmo conceito? Você deve visualizar no topo do conjunto de instruções ou pelo menos no mesmo nível. Comparar algo usado internamente em uma CPU com algo no conjunto de instruções acima da CPU não tem sentido.

informação relacionada