ArachNoc : Um processador manycore com nós de processamento multicore suportando o modelo de programação IPNoSys
Rede em chip. Sistema em Chip. Sistema em chip multiprocessado. Programação Paralela
Multiprocessadores são arquiteturas com mais de um núcleo de processamento que exploram o paralelismo para fornecer maior desempenho. Eles têm sido pesquisados e implementados na construção de computadores de alto desempenho (HPC - High Perfomance Computers). Com muitos núcleos de processamento, a comunicação entre os mesmos é fator crucial para obtenção de alto desempenho. É com base nela que são determinadas a velocidade de processamento, o consumo de energia, o espaço em chip e a escalabilidade. A fim de reduzir a latência na comunicação e aproximar processadores e memórias, pesquisadores têm investido na conexão das unidades de processamento por meio de redes em chip (em inglês, NoC), os chamados MP-SoCs (Multiprocessor Systems-on-Chip). Este trabalho apresenta um MP-SoC com um sistema de comunicação e sincronização entre processos que tem por base o padrão de paralelismo Fork-Join. Tal arquitetura, chamada ArachNoc, é composta por nós multicore de processamento. Esses nós possuem nove núcleos, sendo um mestre e oito escravos, que são baseados na ISA MIPS, e conferem suporte à programação paralela por meio da inserção das instruções de sincronização. Para a validação e avaliação de desempenho do sistema proposto, foram desenvolvidas aplicações paralelas. Para a produção destas aplicações foram utilizadas a linguagem C de programação e a biblioteca OpenCL, e para gerar os códigos binários foram desenvolvidos dois compiladores cruzados (do inglês, cross-compiler): um compilador GNU GCC to ArachNoc e outro LLVM to ArachNoc. O benchmark desenvolvido conta com aplicações dos mais diversos níveis de avaliação de desempenho, desde aplicações para apenas validar o sistema em chip, até aplicações para exaurí-lo, isto é, extrair o desempenho máximo do sistema. Algumas delas são: Multiplicação de Matrizes (com diferentes formas de paralelismo), Dijkstra, Algoritmos Genéticos Simples e Algoritmos para processamento de imagens, como o Filtro Laplaciano.