Superscalar

Um projeto de CPU superscalar faz uma forma de computação paralela chamada paralelismo em nível de instrução dentro de uma única CPU, o que permite que mais trabalho seja feito com a mesma taxa de relógio. Isto significa que a CPU executa mais de uma instrução durante um ciclo de relógio, executando várias instruções ao mesmo tempo (chamado despacho de instruções) em unidades funcionais duplicadas. Cada unidade funcional é apenas um recurso de execução dentro do núcleo da CPU, como uma unidade lógica aritmética (ALU), unidade de ponto flutuante (FPU), um bit shifter, ou um multiplicador.

A maioria das CPUs superescalares também são encanadas, mas é possível ter uma CPU superescalar não encanada ou uma CPU não superescalar encanada.

A técnica superescalar é suportada por várias características do núcleo da CPU:

  1. As instruções vêm de uma lista de instruções encomendada.
  2. O hardware da CPU pode determinar quais instruções têm quais dependências de dados.
  3. Pode ler várias instruções por ciclo de relógio

Cada instrução executada por um processador escalar muda um ou dois itens de dados de cada vez, mas cada instrução executada por um processador vetorial lida com muitos itens de dados ao mesmo tempo. Um processador super escalar é uma mistura dos dois:

  1. Cada instrução processa um item de dados.
  2. Há múltiplas unidades funcionais duplicadas dentro de cada núcleo da CPU, de modo que múltiplas instruções lidam com itens de dados independentes ao mesmo tempo.

Em uma CPU superscalar, um despachante de instruções lê instruções da memória e decide quais podem ser executadas em paralelo, despachando-as nas múltiplas unidades funcionais duplicadas disponíveis dentro da CPU.

O projeto da CPU Superscalar está preocupado em melhorar a precisão do despachante de instruções e permitir que ele mantenha as múltiplas unidades funcionais ocupadas o tempo todo. A partir de 2008, todas as CPUs de uso geral são superscalar, uma CPU superscalar típica pode incluir até 4 ALUs, 2 FPUs, e duas unidades SIMD. Se o despachante não conseguir manter todas as unidades ocupadas, o desempenho da CPU será menor.

Gasoduto superescalar simples. Buscando e despachando duas instruções de cada vez, pode-se completar um máximo de duas instruções por ciclo.Zoom
Gasoduto superescalar simples. Buscando e despachando duas instruções de cada vez, pode-se completar um máximo de duas instruções por ciclo.

Placa processadora de um computador paralelo CRAY T3e com quatro processadores Alpha superscalarZoom
Placa processadora de um computador paralelo CRAY T3e com quatro processadores Alpha superscalar

Limitações

A melhoria de desempenho no projeto da CPU Superscalar é limitada por duas coisas:

  1. O nível de paralelismo incorporado na lista de instruções
  2. A complexidade e o custo de tempo do despachante e a verificação de dependência de dados.

Mesmo dada a verificação de dependência infinitamente rápida dentro de uma CPU normal superscalar, se a própria lista de instruções tiver muitas dependências, isto também limitaria a possível melhoria de desempenho, portanto, a quantidade de paralelismo embutido no código é outra limitação.

Não importa a velocidade do despachante, há um limite prático de quantas instruções podem ser despachadas simultaneamente. Enquanto os avanços de hardware permitirão mais unidades funcionais (por exemplo, ALUs) por núcleo de CPU, o problema de verificar as dependências de instruções aumenta até um limite em que o limite de escalonamento superdimensionável alcançável é um pouco pequeno. -- Provavelmente na ordem de cinco a seis instruções simultaneamente despachadas.

Alternativas

  • Multithreading simultâneo: muitas vezes abreviado como SMT, é uma técnica para melhorar a velocidade geral das CPUs superscalares. SMT permite múltiplas roscas independentes de execução para melhor utilizar os recursos disponíveis dentro de um moderno processador superscalar.
  • Processadores com vários núcleos: os processadores com vários núcleos diferem dos processadores com vários núcleos porque as múltiplas unidades funcionais redundantes não são processadores inteiros. Um único processador superponto é composto de unidades funcionais avançadas, como a ALU, multiplicador inteiro, shifter inteiro, unidade de ponto flutuante (FPU), etc. Pode haver múltiplas versões de cada unidade funcional para permitir a execução de muitas instruções em paralelo. Isto difere de um processador Multi-core que processa simultaneamente instruções de várias roscas, uma rosca por núcleo.
  • Processadores com tubulação: os processadores com super-escala também diferem de uma CPU com tubulação, onde as múltiplas instruções podem estar simultaneamente em vários estágios de execução.

As várias técnicas alternativas não são mutuamente exclusivas - podem ser (e freqüentemente são) combinadas em um único processador, de modo que é possível projetar uma CPU de múltiplos núcleos onde cada núcleo é um processador independente com múltiplos dutos paralelos superescalares. Alguns processadores com vários núcleos também incluem a capacidade vetorial.

Páginas relacionadas

Perguntas e Respostas

P: O que é tecnologia superescalar?


R: A tecnologia superscalar é uma forma de computação paralela básica que permite que mais de uma instrução seja processada em cada ciclo do relógio, usando múltiplas unidades de execução ao mesmo tempo.

P: Como funciona a tecnologia superscalar?


R: A tecnologia Superscalar envolve instruções que entram em ordem no processador, procurando por dependências de dados enquanto ele funciona, e carregando mais de uma instrução em cada ciclo de relógio.

P: Qual é a diferença entre processador escalar e processador vetorial?


R: Em um processador escalar, as instruções geralmente funcionam com um ou dois itens de dados ao mesmo tempo, enquanto em um processador vetorial, as instruções geralmente funcionam com muitos itens de dados ao mesmo tempo. Um processador escalar é uma mistura de ambos, já que cada instrução processa um item de dados, mas mais de uma instrução é executada de uma só vez, e muitos itens de dados são tratados de uma só vez pelo processador.

P: Que papel desempenha um expedidor de instruções preciso em um processador de super-escalas?


R: Um expedidor de instruções preciso é muito importante para um processador de super-escalar, pois assegura que as unidades de execução estejam sempre ocupadas com o trabalho que provavelmente será necessário. Se o despachante de instruções não for preciso, então talvez seja preciso jogar fora parte do trabalho, o que não faria com que fosse mais rápido do que um processador de escalas.

P: Em que ano todas as UCPs normais se tornaram super-escalonáveis?


R: Todos os CPUs normais se tornaram super escalonadores em 2008.

P: Quantas ALUs, FPUs e unidades SIMD podem existir em uma CPU normal?


R: Em uma CPU normal pode haver até 4 ALUs, 2 FPUs e 2 unidades SIMD.

AlegsaOnline.com - 2020 / 2023 - License CC3