Você está na página 1de 2

Entendendo Hardware Paralelo: Multiprocessadores, Hyperthreading, Dual-Core, Multicore e FPGAs

Publicação: Jan 18, 2010

Visão geral

Este documento é parte da série

O hardware paralelo está se tornando um componente onipresente na tecnologia de processamento computacional, e as arquiteturas de chips estão se desenvolvendo cada vez mais, permitindo que engenheiros tenham melhores ganhos de desempenho. Aprenda as diferenças entre arquiteturas de hardware paralelo comumente encontrado no mercado hoje, incluindo Multiprocessadores, Hyperthreading, Dual-Core, Multicore e FPGAs.

Índice

1. Multiprocessadores

2. Hyperthreading

3. Processadores Dual-Core e Multicore

4. FPGAs

5. Como o LabVIEW programa hardware paralelo

6. Mais recursos sobre programação Multicore

1. Multiprocessadores

Sistemas com Multiprocessadores contêm múltiplas CPUs que não estão no mesmo chip. Estes foram feitos nos anos 90 para o propósito de servidores de TI. Naquele tempo eles eram tipicamente placas de processadores que se conectavam montados dentro de um servidor. Hoje, multiprocessadores são comumente encontrados na mesma placa física e conectados através de uma interface de comunicação de alta velocidade.

Figura 1. O sistema de multiprocessadores tem um cache dividido e MMU com longas interligações

Sistemas Multiprocessadores são menos complexos que sistemas Multicore porque são CPUs de chips únicos e essenciais conectados juntos. A desvantagem de sistemas multiprocessadores é que estes são mais caros pois requerem vários chips que, por sua vez, são mais caros do que uma solução de chip único.

2. Hyperthreading

Hyperthreading é uma tecnologia que foi introduzida pela Intel® com o principal propósito de aumentar o suporte ao código multi-threaded. Em determinadas situações, a tecnologia hyperthreading provê o uso mais eficiente dos recursos da CPU, executando threads em paralelo em um único processador.

Um processador equipado com recursos hyperthreading pretende ser dois processadores “lógicos” para o sistema operacional, permitindo ao sistema operacional agendar dois threads ou processos simultaneamente. As vantagens do hyperthreading são: suporte implementado para código multi-threaded, permitir que múltiplas threads rodem simultaneamente e prover ganhos de reação e tempo de resposta.

Processadores Pentium 4 são um exemplo de CPUs que utilizam hyperthreading.

3. Processadores Dual-Core e Multicore

Processadores Dual-core são duas CPUs em um único chip. Processadores Multicore são uma família de processadores que contêm algum número de CPUs no mesmo chip, como 2, 4 e 8 núcleos. O desafio com processadores Multicore é na área de desenvolvimento de software. O aumento de velocidade está diretamente relacionado a como tornar paralelo o código fonte de uma aplicação que foi escrita através de multi-threading.

Figura 2. Os processadores multicore dividem a cache e MMU com curtas interligações

4. FPGAs

Um FPGA (Field Programmable Gate Arrays) é um equipamento que contém uma matriz de circuitos com portas reconfiguráveis. Quando um FPGA está configurado, o circuito interno está conectado de modo que cria uma implementação em hardware da aplicação no software. Diferente de processadores, o FPGAs usa hardware dedicado para processamento lógico e não tem um sistema operacional.

Um único FPGA pode repor milhares de componentes discretos incorporando milhões de lógicas nas portas em um único chip de circuito integrado (IC). Os recursos internos do chip FPGA consistem em uma matriz de blocos lógicos configuráveis (CLBs) circundada perifericamente de blocos de E/S. Sinais são roteados na matriz FPGA por chaves programáveis interconectadas e rotas de ligação.

Figure 3. FPGA allows the user to program gates into parallel hardware paths

Considerando que FPGAs são enormes campos de portas programáveis, eles podem ser programados criando diversos caminhos de hardware paralelo. FPGAs são verdadeiramente paralelos em sua natureza pois diferentes operações de processamento não têm que competir pelos mesmos recursos. Programadores podem automaticamente mapear suas necessidades diretamente para a fábrica do FPGA. Isto permite aos usuários criar qualquer número de núcleos de tarefas específicas, pois todas irão rodar como circuitos paralelos simultâneos dentro de um chip FPGA.

A execução no hardware provê aumento de desempenho e determinismo quando comparado com a grande maioria das soluções baseadas em processadores. A natureza paralela das portas

lógicas no FPGA permite uma altíssima transferência de dados. Uma vez que o código for compilado e estiver rodando no FPGA, não haverá nenhuma variação de tempo associada com a execução de software e priorização de thread - típica nos mais comuns sistemas operacionais e também presente em um grau menor em sistemas operacionais de tempo real.

Para mais informação, visite:

5. Como o LabVIEW programa hardware paralelo

O LabVIEW é uma linguagem multi-threaded desde a versão 5.0 introduzida em 1998. O fluxo de dados natural do LabVIEW permite que códigos em paralelo facilmente mapeiem hardware

paralelo. Por este motivo, ele é a linguagem de programação ideal para direcionar multiprocessadores, hyperthead e sistemas de processadores multicore.

No caso de programação de FPGAs, o LabVIEW gera o código VHDL que é automaticamente compilado para um pacote de dados que pode ser direcionado aos FPGAs da Xilinx.

6. Mais recursos sobre programação Multicore