Por que eu devo ler este artigo:Um recurso importante a ser adotado em computação é o paralelismo. Em diversas áreas o paralelismo permite melhorias significativas.

O paralelismo de cada hardware, isoladamente, possibilita incremento de performance. Adotar um conjunto que tenha paralelismo em todos os níveis de hardware (disco, memória e processador) certamente é a opção ideal do ponto de vista de velocidade nas operações realizadas pelo banco de dados. Contudo, do ponto de vista financeiro (custos e investimentos), isso pode não ser tão simples assim.

Neste artigo serão descritos e realizados testes que utilizam recursos paralelos apenas de processador e uso de memória. O paralelismo em disco não será adotado, pois exige discos em níveis RAID 0 (zero) e configurações adicionais no sistema operacional. Para utilizar processamento paralelo, podemos adotar processadores gráficos oferecidos por placas de vídeo NVIDIA da série 8000 em diante ou ATI HD 7660 em diante. Neste artigo será apresentado um comparativo de processamento utilizando apenas o processador principal do computador e, em seguida, o processamento utilizando o processador principal em conjunto com o processador gráfico.

Neste contexto, este artigo é útil para quem deseja conhecer uma forma de processamento paralelo e aproveitá-la na resolução de tarefas que são realizadas no mesmo hardware em que está rodando seu banco de dados. Os processadores atuais disponibilizam vários núcleos (a grande maioria oferece quatro ou mais), com isso podemos explorar a execução de tarefas simultâneas em nossos programas. Além do processador principal, temos também os processadores das placas de vídeo. Estes geralmente com um número de núcleos (core) muito maior, algo entre 96 e 2688, dependendo do modelo.

A programação paralela apresentada neste artigo visa demonstrar o uso de processadores gráficos para realizar processamento de instruções independentes de forma simultânea. Desta forma, será possível direcionar o processamento de uma tarefa para o processador gráfico, enquanto o processador principal fica livre para outras tarefas.

O conceito de paralelismo já entrou no ambiente dos processadores há muito tempo. Uma consideração importante aqui é a separação de dois mecanismos distintos: execução de instruções em paralelo (possibilitada pelos múltiplos núcleos), e processamento multitarefa. O último mecanismo pode ser encontrado em processadores de apenas um núcleo, onde o tempo de utilização do processador é dividido entre as diversas tarefas dando a impressão de que todas são executadas ao mesmo tempo. Já o mecanismo de instruções em paralelo só é possível em processadores com mais de um núcleo, onde cada núcleo vai realmente processar algo enquanto o outro processa outra instrução. É importante destacar que algumas instruções que dependem de resultados de instruções anteriores não podem ser executadas em paralelo.

Algumas melhorias nos processadores foram possíveis graças às novas tecnologias de materiais eletrônicos que permitiram o aumento de componentes em uma mesma área de chip. Outras melhorias foram possíveis através da lógica e organização de níveis de paralelismo de instruções, isto é, pipelines de dois ou mais estágios (ler BOX 1).

BOX 1. Pipeline

Internamente, o processador possui diversos estágios onde as instruções são interpretadas e executadas. Algumas instruções precisam passar por 2, 3, 4 ou mais estágios (podendo chegar a 14 dependo do processador). O pipeline visa organizar as instruções de forma que mesmo que uma instrução não tenha sido realizada por completo, outra instrução inicie, desta forma otimizando o uso dos diversos estágios do processador. Como exemplo deste tipo de mecanismo podemos imaginar uma lavanderia, onde um conjunto de roupas deve passar por três estágios: lavar, secar e passar. Visando a otimização de uma lavanderia: devemos lavar um conjunto de roupas, em seguida podemos enviar este conjunto para o estágio de secagem, enquanto que um conjunto novo de roupas entra para lavagem, fazendo com que em determinado momento as três máquinas estejam em funcionamento.

O paralelismo oferecido pelas placas de vídeo difere em muito do paralelismo de instruções obtido por pipeline, pois o paralelismo visto em processadores gráficos é possibilitado pelos múltiplos núcleos e não apenas pela lógica de organização das instruções e ocupação das unidades de processamento (pipeline).

Ambiente de testes

Para realização dos testes foi utilizado um computador convencional com a seguinte configuração: processador Intel Core 2 Quad Q6600 2.4 GHz, placa mãe Asus Maximus Formula, memória Corsair de 4GB FSB 800 MHz DDR2, disco rígido 500GB ...

Quer ler esse conteúdo completo? Tenha acesso completo