Processadores VLIW, arquitetura e recursos de CPU

Processadores VLIW, arquitetura e recursos de CPU

VLIW significa Very Long Instruction Word, que se traduz em instruções de palavras muito longas. No mundo da arquitetura de processador, é usado para definir um tipo de CPU ou processador que alcança paralelismo de instrução ou ILP, mas com metodologia diferente daquela usada em processadores superescalares, que é a comumente usada em CPUs.

As CPUs do tipo VLIW têm uma série de vantagens e desvantagens em comparação com outros processadores e não têm sido usadas apenas em CPUs, mas também como unidades de sombreamento para GPUs e também em DSPs.

Hoje, os designs VLIW parecem ter desaparecido do hardware do PC, mas continuam sendo uma opção válida no design de novos processadores para diferentes áreas do mercado de hardware, apesar de seu desuso.

Como funciona um processador VLIW?

VLIW

Em um processador superescalar ou ILP convencional, as instruções são capturadas e processadas individualmente durante o ciclo de instrução de cada um. Quer estejamos falando sobre uma execução em ordem ou fora de ordem. No caso de um processador VLIW, o que se faz é agrupar várias instruções em uma e enviá-las em conjunto para as diferentes unidades que estão disponíveis no processador.

Para alcançar isto, os processadores VLIW dependem fortemente do compilador ao gerar o código binário , que agrupará as diferentes instruções em uma única instrução, levando sempre em consideração o nível de ocupação de cada uma das unidades de execução em cada momento de operação. execução, que dependerá do número de ciclos de clock exigidos por cada uma das instruções.

Como as instruções podem ter diferentes graus de duração em termos de ciclos de clock, este é um problema de performance, pois durante vários ciclos de clock teremos unidades de execução que não farão nada e que estarão executando uma instrução NOP, o que significa que durante aquele clock ciclo, a referida unidade não executa nenhuma operação. Isso torna os processadores VLIW altamente dependentes do compilador para máxima eficiência.

Vantagens e desvantagens de um design VLIW

Processador Reverso da CPU

Principalmente as vantagens que traz são as seguintes:

  • O hardware encarregado de decodificar as instruções é muito mais simples do que uma CPU ILP ou TLP, isso permite deixar mais espaço livre no chip para as unidades de execução e, portanto, poder executar mais instruções ao mesmo tempo.
  • Ter mais espaço também permite colocar um número maior de registradores, o que é ideal para facilitar a execução especulativa típica de processadores fora de ordem, sem a necessidade de um buffer de classificação.

Quanto às suas desvantagens, a primeira delas reside no facto de ser necessário um compilador muito mais complexo, sendo a segunda aquela que referimos anteriormente e que se baseia no facto de haver um maior desperdício das diferentes unidades de execução, já que a maioria deles vai passar um bom tempo desocupado.

VLIW

Para entender melhor, imagine que você agrupou em um VLIW 3 instruções que precisam dos primeiros 4 ciclos para serem executados, os segundos 7 ciclos e os terceiros 10 ciclos. A unidade de execução encarregada de realizar a primeira instrução será de 6 ciclos de clock sem fazer nada, a segunda 3 e tudo isso porque a terceira precisará de 10 ciclos para funcionar.

Por outro lado, devemos acrescentar o fato de que embora no nível da instrução os binários não mudem, ao desenvolver uma nova CPU é possível que uma instrução já existente aumente ou diminua o número de ciclos. Isso torna necessário um compilador diferente mesmo para novas iterações de um novo processador, o que torna difícil lançar versões mais avançadas de um processador e requer, em muitos casos, a criação de um compilador binário para binário, que reordena as instruções para a nova CPU.

Geração de instruções pelo compilador

Código binário cor

Para que você possa entender melhor, preparamos algumas listas, a primeira é a execução em um processador superescalar ou conhecido como ILP, a segunda é uma CPU do tipo VLIW.

Começando com um processador do tipo ILP, uma lista de suas instruções seria a seguinte:

  1. Carga A1
  2. Carregar B1
  3. Carga A2
  4. Carga B2
  5. Multiplique os valores de A1 e B1
  6. Adicione os valores de A2 e B2
  7. Adicionar A1 e A2
  8. Carga A3
  9. Carga B3
  10. Multiplique A3 por B3
  11. Adicione B1 e B2.

Por outro lado, um processador VLIW agrupará várias das instruções em uma:

  1. O A2 e o B2 são carregados simultaneamente
  2. Carregue A2 e B2, multiplique A1 e B1, some A2 e B2.
  3. Carregue A3, B3, multiplique A3 por B3 e some B1 e B2.

O fato de termos conseguido agrupar as 11 instruções em apenas 3 instruções muito grandes significa que a quantidade de tempo que cada uma das instruções VLIW exigirá será no máximo o tempo que leva para a instrução mais complexa no grupo de instruções.

Acesso à memória deste tipo de processadores

RAM da CPU

Como discutimos anteriormente, os processadores VLIW dependem do compilador e muitas vezes eles adicionam instruções NOP ao código durante a compilação. A razão para fazer isso é porque criar uma CPU VLIW com instruções de tamanho variável é extremamente complexo, então isso é feito é criar um tamanho fixo de bits em que a CPU lê as instruções e busca aquela quantidade de dados da memória em cada ciclo . e instruções.

Isso significa que os processadores VLIW requerem barramentos de dados muito mais largos do que as CPUs convencionais, devido ao fato de agruparem um grande número de bits cada vez que capturam novas instruções para serem executadas. Sendo este o seu grande calcanhar de Aquiles, já que em processadores ILP, comuns em CPUs de PC, são utilizadas larguras de dados mais estreitas e, portanto, controladores de memória mais simples.

O normal em processadores VLIW é que eles capturem as seguintes instruções a serem executadas enquanto a instrução VLIW atual está sendo executada. Pois, ao agrupar várias instruções em uma, o tempo de captura de cada uma delas separadamente é reduzido.