Arquitetura Multicore
Arquitetura Multicore
Arquitetura Multicore
Resumo. Este artigo tem como objetivo apresentar uma revisão sobre
arquiteturas multicore, discutindo as principais definições e características
inerentes a este assunto. São abordados os principais aspectos sobre o
desenvolvimento de redes de comunicação, através da aplicação de NoC
(Networks-on-Chip), e apresenta-se as definições de arquiteturas e
organização de memória cache. Ao final, sintetiza-se os principais pontos de
pesquisa e desenvolvimento que relacionam arquiteturas multicore, NoC, e
arquiteturas de memória cache.
1. Introdução
Desde a última década, a evolução dos processadores acontece de forma surpreendente.
Isto se deve principalmente ao aumento na densidade de integração de transistores em
áreas cada vez menores. Neste nível de integração, é necessário explorar técnicas de
paralelismo para efetivamente utilizar ao máximo o desempenho dos processadores.
Pipeline, superescalaridade, multithreading, são algumas técnicas aplicadas a
exploração de paralelismo para aumento de desempenho.
Pipeline superescalar, aplica o processamento das instruções divididos em
estágios, possibilitando a execução de mais de uma instrução por ciclo, e para isso,
aumenta o número de unidades funcionais e técnicas para solucionar falsas
dependências entre instruções. Os processadores superescalares são capazes de
aumentar o desempenho na execução de cargas de trabalho com alto paralelismo no
nível de instruções. O suporte a múltiplas threads foca a exploração de paralelismo de
maior granularidade, explorando o paralelismo além do nível de instruções, mas
também no nível de fluxo de instruções (threads). Isto aumenta a vazão de threads
(possibilitando que mais de uma thread possa ser executada ao mesmo tempo) diferente
da superescalaridade onde a vazão é de instruções de uma única thread. São várias as
* Artigo apresentado na disciplina ELC-888 – Arq. De Sist. de Alto Desempenho, no PPGI-UFSM. Julho
de 2009
técnicas para exploração do paralelismo no nível de threads, sendo que a mais
conhecida é a SMT (Simultaneous Multithreading) que tem suporte em uma arquitetura
superescalar. [ALVES 2007]
O uso de processadores com múltiplos núcleos (Chip Multiprocessors – CMPs,
ou simplesmente multicore) vem sendo consolidada como um bom método para
aumento do desempenho de computação. Com vários núcleos, um processador passa a
ter suporte nativo a várias threads, sendo os núcleos superescalares ou não. Os CMP
não necessitam ser tão rápidos quanto chips single-core, mas aumentam desempenho
devido ao processamento paralelo. [ALVES 2007]
Devido ao aumento do número de núcleos, há a necessidade de uma rede de
comunicação de alto desempenho entre eles. A aplicação de NoC (Network on Chip)
como solução da comunicação entre os diversos elementos do processador multicore
(processadores, memórias, módulos especializados) apresenta-se como solução muito
eficiente. A utilização desta tecnologia pode reduzir a complexidade do projeto da rede
de comunicação devido a sua estrutura regular e controlada. Também provê separação
entre os módulos de computação e comunicação, reusabilidade dos módulos através de
interfaces padrões, gerência questões de sincronização, e portanto, aumenta a eficiência
do processamento.[KOLODNY 2006] . Outro fator de relevante importância em
projetos de processadores multicore está relacionado ao projeto de memória cache para
os núcleos. Com o aumento do número de núcleos integrados em um único chip,
aumenta o tráfego de dados e, conseqüentemente, a quantidade de acessos a memória.
Isto implica em organizar a hierarquia de memória, compartilhamento e quantidade de
memória cache dedicada para cada processador. Atualmente, estas duas questões são
muito relevantes em projetos de processadores multicores.
Este artigo divide-se em 5 seções. A seção 2 trata dos conceitos e definições de
processadores multicores. A seção 3 aborda os desafios de projetos de NoC's. A seção 4
trata da organização e arquiteturas de memória cache. Ao final, na seção 5, faz-se
apontamentos acerca de projetos de processadores multicore.
2. Arquiteturas Multicore
O desenvolvimento de processadores multicore tem como motivação duas realidades: o
grande consumo de potência e as limitações de manter a evolução de desempenho, como
prevê a Lei de Moore (aumento do grau de integração relacionado ao aumento de
performance). O aumento de desempenho alcançado pelos processadores se baseia na
aplicação de técnicas que exploram o paralelismo de instruções, e também pelo aumento
de freqüência de operação. Entretanto, o consumo de potência também atinge níveis
impraticáveis, já que é proporcional ao aumento da freqüência de trabalho. Os
processadores multicores, já usados em outras áreas, se tornaram alternativas para
computadores de propósito geral.
5. Conclusões
A expressão multicore é comumente utilizada para expressar processadores com
determinado número de núcleos (ao redor de 10 núcleos). O termo mais atual e utilizado
para referenciar arquiteturas que envolvem dezenas ou centenas de núcleos é many-core.
A partir da integração de dezenas de núcleos, começam a surgir restrições de projetos de
rede de comunicação e organização da memória cache.
A aplicação de NoCs em arquiteturas de processadores multicore abre uma vasta
área de pesquisa e desenvolvimento. Devido ao aumento de elementos integrados dentro
de um único chip, este tipo de solução deve buscar a melhor relação entre desempenho,
área e consumo de potência. Dentre as várias soluções que se apresentam na literatura,
deve-se buscar a melhor alternativa para cada aplicação.
A organização e arquitetura de memória cache também deve ser aprimorada
visto o grande número de dados que são compartilhados entre os vários elementos do
processador. Principalmente no que diz respeito a coerência de dados e tempo de
acesso . Soluções mais atuais preocupam-se com o tamanho das memórias e localização,
o que influencia diretamente nas características citadas anteriormente.
Referências
ALVES, M. A. Z., FREITAS, H. C., WAGNER, F. R., e NAVAUX, P. O. A. (2007)
“Influência do Compartilhamento de Cache L2 em um Chip Multiprocessado sob
Cargas de Trabalho com Conjuntos de Dados Contíguos e Não Contíguos”, VIII
Workshop em Sistemas Computacionais de Alto Desempenho (WSCAD), Gramado,
RS, Brasil, 2007.