Utilização do Barramento CoreConnect para - Inf

Propaganda
Utilização do Barramento CoreConnect para
Implementação de CMP com Processadores Java
Rodrigo Bittencourt Motta
Universidade Federal do Rio Grande do Sul
Instituto de Informática - Av. Bento Gonçalves, 9500 Campus do Vale - Porto Alegre, Brasil
[email protected]
RESUMO
Em um momento em que é cada vez mais complicado
explorar o ILP (Instruction Level Parallelism) e aumentar
a frequência de clock, a indústria tem optado por integrar
mútiplos processadores em um único chip. Em sistemas
embarcados, que tem restrições de área, potência e timeto-market, a troca de processadores com designs
complexos pela utilização de vários processadores design
simples, permite acelerar o tempo de projeto e
proporcionar alta escalabilidade. O objetivo desse
trabalho é aplicar a abordagem CMP utilizando
processadores Java integrados com uma memória de
dados compartilhada através da interface CoreConnect da
IBM.
Categorias e Identificação do Assunto
C.1.3 [Arquiteturas de Processadores]: Outros Estilos
de Arquiteturas – Arquiteturas Adaptáveis
Termos Gerais
Paralelismo, Desempenho
Palavras-Chave
Chip Multiprocessing, Paralelismo em Nível de Thread,
Processador Java
1. INTRODUÇÃO
A proliferação de sistemas computacionais cada vez mais
inteligentes e integrados ao nosso cotidiano é um
fenômeno evidente. Apenas para exemplificar alguns
destes aparelhos, podem-se citar: impressoras, telefones
celulares, câmeras fotográficas e filmadoras digitais,
videogames, tocadores de mp3 e tocadores de mídia
portáteis. Estes dispositivos são denominados sistemas
computacionais embarcados. O que caracteriza este tipo
de sistema é não só a sua qualidade normalmente portátil
como em uma filmadora digital ou embutida como em um
freio ABS, como também o seu paradigma diferenciado e
mais restritivo do que os sistemas computacionais
tradicionais, já que sistemas embarcados em geral
executam poucas e definidas funções [3].
O que se vê em sistemas computacionais tradicionais,
como em computadores pessoais de propósitos gerais, é a
tecnologia sendo usada em função de um aumento de
performance, sendo o tempo de computação a principal
métrica. Entretanto, quando no desenvolvimento de
sistemas computacionais embarcados, o projetista vê-se
diante de outros desafios, tais como as questões de
portabilidade, o limite de consumo de energia sem
grandes perdas de desempenho, a possibilidade de
funcionamento em uma rede maior, e o curto tempo de
projeto [1]. Todas estas questões devem ser balanceadas
de acordo com aplicações alvo normalmente bem
determinadas, especificação esta que também é
característica de sistemas embarcados.
A metodologia tradicionalmente utilizada pela
maioria dos processadores para aprimorar o desempenho é
a utilização de mecanismos cada vez mais complexos para
aumentar o ILP (Instruction Level Parallelism). No
entanto, como mostrado em [2], por exemplo, mecanismos
de exploração agressiva do ILP podem consumir mais de
55% do total de dissipação de potência de um
processador, o que não é permitido em sistemas
embarcados. Além disso, a exploração do ILP, que tem se
mantido nas últimas décadas, está alcançando o seu limite.
Por outro lado, a tecnologia de fabricação dos circuitos
integrados tem avançado constantemente e permitido que
seja possível colocar um número cada vez maior de
transistores em uma mesma área de silício. Uma das
abordagens que pode se beneficiar dessa tendência é a
utilização de múltiplos cores de processadores em um
único chip ou CMP (Chip Multiprocessing). Em sistemas
embarcados, a utilização de CMP permite maior
escalabilidade e balanceamento de carga como a
arquitetura Piranha [4].
O presente trabalho propõe a implementação de uma
abordagem CMP visando sistemas embarcados utilizando
a interface CoreConnect da IBM como barramento de
comunicação entre processadores Java e uma memória de
dados compartilhada.
Este artigo está organizado como segue: a Seção 2
apresenta algumas arquiteturas comumente utilizadas em
abordagens CMP. A Seção 3 aborda o Processador Java
utilizado para o desenvolvimento da aplicação proposta.
A Seção 4 mostra o funcionamento do barramento
CoreConnect da IBM. A Seção 5 apresenta a aplicação
desenvolvida juntamente com alguns resultados.
Finalmente, a última Seção apresenta as conclusões e
aponta os trabalhos futuros.
2. CMP (CHIP MULTIPROCESSING)
Na abordagem CMP o chip é composto por dois ou mais
processadores,
chamados cores, que executam
concorrentemente em diferentes regiões do código.
Normalmente são utilizados cores simples de
processadores homogêneos, mas também pode-se utilizar
cores heterogêneos e com diferentes graus de
complexidade. A principal vantagem da abordagem CMP
é possibilitar a grande utilização do TLP (Thread Level
Parallelism) das aplicações atingindo um alto troughput.
Normalmente, a abordagem CMP usa cores simples
de processadores, capazes de executar uma única thread,
para explorar somente moderadas quantidades de
paralelismo dentro de uma thread, enquanto executa
múltiplas threads em paralelo em múltiplos cores [5]. No
entando, se uma aplicação não puder ser decomposta em
threads, os cores serão subutilizados.
Apesar do design de qualquer chip CMP ser bastante
particular, um chip típico provavelmente deve conter
algumas ou a maioria das seguintes características: os
cores têm suas próprias memórias cache com uma cache
de nível secundário compartilhada, os controladores de
memória devem ser separados em módulos, deve haver
um mecanismo de roteamento de rede, um mecanismo de
coerência e um mecanismo de integração e comunicação
intra-chip.
A abordagem com cache compartilhada oferece a
menor latência de comunicação entre os cores. Tão logo a
CPU 1 escreve uma linha da cache a CPU 2 tem acesso
sem ter que fazer uma busca em um bloco remoto. Isso
mantém o trafêgo entre os cores longe do mecanismo de
E/S, maximizanndo a banda de comunicação os
periféricos. Uma outra vantagem dessa abordagem é a
possibilidade de alocação dinâmica de memória cache
entre os cores. Supondo-se que a CPU 1 está utilizando
toda a sua cache alocada mas a CPU 2 está utilizando
apenas uma fração da cache que lhe foi alocada, o
controlador da cache pode, dinamicamente, atribuir para
a CPU 1 um pouco da área da cache que a CPU 2 não está
utilizando.
No entanto, enquando as vantagens dessa abordagem
vem em forma de desempenho, as desvantagens vem em
forma da complexidade do controlador da cache. Isso
acontece porque é necessário implementar uma política de
compartilhamento da cache para possibilitar alocação
dinâmica entre os cores. Outra desvantagem é que a banda
da cache cresce conforme o número de cores que são
colocados no chip.
2.2 CMP COM E/S COMPARTILHADA
A Figura 2 ilustra uma arquitura de CMP com cache
compartilhada. A seta em vermelho indica o caminho para
a comunicação entre os cores.
A seguir serão discutidas algumas abordagens para
implementação de CMP.
2.1 CMP COM CACHE
COMPARTILHADA
A Figura 1 ilustra uma arquitura de CMP com cache
compartilhada. A seta em vermelho indica o caminho para
a comunicação entre os cores.
Figura 1 – Arquitetura de CMP com cache compartilhada.
Figura 2 – Arquitetura de CMP com E/S compartilhada.
A abordagem de CMP com E/S compartilhada tem a
vantagem da simplicidade em relação à abordagem de
CMP com cache compartilhada, mas essa vantagem é
paga com um menor desempenho e flexibilidade. A
comunicação entre os cores é realizada sem a necessidade
de sair do chip e é gerenciada pela lógica que manipula a
comunicação a troca de informação com o exterior do
chip. Como as memória caches são separadas, não são
necessárias alterações na controladora da cache para
implementar a comunicação entre os cores. Isso significa
que são necessárias poucas modificações em um
processador para a implementação dessa abordagem.
A principal desvantagem dessa abordagem é que o
mecanismo de E/S deve ser robusto o suficiente para
implementar a comunicação intra-chip e off-chip ao
mesmo tempo. Outra desvantagem é não é que as
memórias caches dos cores podem ser subutilizadas, já
que não é possível fazer alocação dinâmica de memória
cache.
2.3 CMP COM ENCAPSULAMENTO
COMPARTILHADO
A Figura 3 ilustra uma arquitura de CMP com
encapsulamento compartilhado. A seta em vermelho
indica o caminho para a comunicação entre os cores. Essa
abordagem as vezes é chamada de DCM (Dual Chip
Module) ou MCM (Multichip Module, para mais de 2
chips). A rede de conexão utilizada para a comunicação
entre os módulos não é mostrada, mas pode ser desde uma
rede completamente roteada até um simples barramento
utilizando um chipset externo para comunicação.
operações básicas de pilha, manipulação de vetores,
desvios condicionais e incondicionais, execução de
métodos estáticos e acesso a campos de classes.
Outras características do Femtojava são: o conjunto
reduzido de instruções, arquitetura Harvard, pequeno
tamanho e facilidade de inserção e remoção de instruções.
Sua microarquitetura pode ser observada na Figura 4.
Somando-se a isso, possui algumas características
interessantes, como o tamanho da máquina de controle ser
diretamente proporcional ao número de instruções
utilizadas. Isto só é possível porque o Femtojava é gerado
a partir de um ambiente de CAD (Computer Aided
Design), chamado Sashimi [6].
Figura 3 – Arquitetura de CMP com encapsulamento
compartilhado.
Das abordagens apresentadas, a arquitetura com
encapsulamento compartilhado é o mais simples e mais
rápido de ser implementado, visto que não são necessárias
modificações na lógica dos processadores.
A principal desvantagem dessa arquitetura é a
latência de comunicação entre os cores já que para a troca
de informações é necessário utilizar a rede de
interconexão da mesma maneira que uma abordagem SMP
(Symmetric Multiprocessor). Outra desvantagem é que a
frequência da rede de interconexão tende a ficar mais
limitada a cada novo core adicionado ao modelo.
3. PROCESSADOR JAVA
O processador Femtojava [6] foi criado com restrições de
área e potência visando especificamente sistemas
embarcados. Na realidade, o processador Femtojava é o
resultado de uma metodologia adotada para a geração
semi-automática de um sistema embarcado a partir de uma
descrição Java. O Femtojava implementa um subconjunto
de instruções Java: são apenas 68 no total. Neste
subconjunto encontram-se instruções necessárias para
Figura 4 – Microarquitetura do Processador FemtoJava [7].
4. IBM CORECONNECT
A interface CoreConnect [8] consiste de uma estrutura de
interconexão reutilizável organizada em uma hierarquia de
barramentos e integra a biblioteca de núcleos denominada
Blue Logic. Os núcleos dessa biblioteca são préprojetados e pré-verificados para trabalharem com os
protocolos da arquitetura CoreConnect, possibilitando o
reuso de chip para chip. A Figura 5 mostra a interface
CoreConnect.
interface CoreConnect que é responsável por determinar o
fluxo da comunicação.
Figura 5 – Interface CoreConnect [7].
A arquitetura CoreConnect provê três barramentos
para a interconexão de núcleos:
PLB (Processor Local Bus): o barremento PLB é
endereçado para alta performance, baixa latência e
flexibilidade de design.
OPB (On-chip Peripheral Bus): é um barramento
secundário criado para aliviar os gargalos na
performance do sistema através da carga capacitiva no
barramento PLB.
A interface CoreConnect é um bloco IP (Intelectual
Property) descrito em VHDL que pode ser instanciado em
plataformas configuráveis através do software EDK
(Embbeded Development Kit) da empresa Xilinx. Os
blocos VHDL do processador FemtoJava são gerados a
partir do ambiente Sashimi juntamente com os arquivos de
memória em formato coe. O formato coe é o utilizado
pelo Core do software ISE da Xilinx para as memórias
internas de dispositivos configuráveis. No entando, para
implementação dessa arquitura, foi encontrado um
problema na inserção dos arquivos de memória em
formato coe utilizando o software EDK. Devido a este
problema e ao prazo para implementação da proposta, a
arquitetura foi modificada, conforme será descrito na
próxima seção.
5.2 ARQUITETURA PROJETADA
A arquitetura da aplicação desenvolvida é mostrada na
Figura 7.
DCR (Device Control Register bus): é um barramento
utilizado para a leitura e escrita de registradores de
status e configuração de baixa performance.
5. APLICAÇÃO
Essa seção visa apresentar a arquitetura projetada, os
experimentos realizados bem como os resultados obtidos.
5.1 ARQUITETURA INICIALMENTE
PREVISTA
A arquitetura prevista inicialmente é mostrada na Figura
6.
Figura 7 – Arquitetura da aplicação.
Em contraste com a arquitetura da Figura 6, a
arquitetura da Figura 7 substitui a interface CoreConnect
por um outro bloco VHDL que é responsável pela
arbitragem do fluxo de dados entre os processadores e a
memória RAM. Na Figura 7 esse fluxo está representado
pela seta vermelha.
A interface de arbitragem, ao contrário da interface
CoreConnect, não é genérica e foi desenvolvida
exclusivamente para controlar o fluxo de dados entre
processadores FemtoJava e uma memória de dados
compartilhada.
Figura 6 – Arquitetura inicialmente prevista.
A arquitetura é composta por dois processadores
FemtoJava Multicíclo cada um com sua memória de
instruções (ROM) e uma memória de dados (RAM)
compartilhada. Os processadores não acessam diretamente
a memória compartilhada, mas o barramento PLB da
5.3 EXPERIMENTO
Para validar a arquitetura desenvolvida e extrair dados de
latência da comunicação, foi utilizado o algoritmo de
ordenação BubleSort onde a idéia é que cada iteração seja
executada por um processador FemtoJava. A Figura 8
mostra o diagrama do experimento realizado.
3500
3304
3000
2500
2148
2000
1500
1000
500
41
0
FemtoJava
Figura 8 – Experimento realizado.
As memórias de dados dos dois processadores
FemtoJava possuem uma cópia do mesmo programa, que
consiste em executar uma iteração do algoritmo BubleSort
em um vetor de dados qualquer que está armazenado na
memória de dados compartilhada.
O chaveamento entre os processadores para acessar o
vetor na memória de dados é realizado pelo mecanismo de
arbitragem através da instrução FemtoJavaIO.write que é
disparada quando o processador termina a execução do
fluxo de instruções presente em sua memória de
instruções. Quando isso acontece, o processador que
terminou a execução é resetado e o caminho para o acesso
à memória de dados é liberado para o outro processador e
assim sucessivamente.
O processo termina quando o vetor de dados está
ordenado. A percepção desse evento ocorre porque ao
término de cada iteração do algoritmo de ordenação é
relizada uma comparação entre o vetor de dados que está
sendo ordenado e um vetor de dados idêntico, mas já
ordenado.
O experimento foi realizado através de teste em
hadware. Os blocos VHDL dos processadores e do
mecanismo de arbitragem, juntamente com os arquivos
coe das memórias de instruções e da memória de dados
foram sintetizados no FPGA Virtex II-Pro da Xilinx
utilizando a ferramenta de desenvolvimento ISE, também
da Xilinx.
5.4 RESULTADOS
Esta seção tem o objetivo de apresentar resultados de área
da arquitetura projetada em relação ao processador
FemtoJava tradicional e de latência do mecanismo de
arbitragem.
A Figura 9 mostra os dados de ocupação do FPGA
Spartan-3 X3S200 da XIlinx (em tabelas-verdade de 4
entradas).
FemtoJava CMP
Mecanismo de Arbitragem
Figura 9 – Dados de ocupação do FPGA.
Pode-se observar que a arquitetura desenvolvida
possui cerca de 35% a mais de área que a arquitetura
FemtoJava tradicional (deve-se observar que estão
inclusos nesses resultados a área das memórias de dados e
de instruções). Já o mecanismo de arbitragem ocupa cerca
de 1,2% da área total na arquitetura desenvolvida.
A Figura 10 mostra o número de ciclos de execução
para o algoritmo BubleSort para um vetor de dez posições
na plataforma FemtoJava e na arquitetura desenvolvida. O
experimento foi realizado com uma freqüência de 5MHz.
90000
80000
77379
77984
FemtoJava
FemtoJava CMP
70000
60000
50000
40000
30000
20000
10000
0
Figura 10 – Número de ciclos de execução.
É importante destacar que o fato de o número de
ciclos ser maior na aplicação projetada deve-se ao fato de
um dos processadores ficar ocioso enquanto o outro está
executando. A diferença de 0,8% a mais no número de
ciclos da arquitetura projetada se deve principalmente ao
mecanismo que realiza a abritragem para o acesso a
memória de dados compartilhada.
6. CONCLUSÕES E TRABALHOS
FUTUROS
Este artigo mostrou o desenvolvimento de uma aplicação
utilizando a abordagem CMP com processadores Java
com memória de dados compartilhada.
Pode-se concluir que, para os experimentos
realizados, a área e latência do mecanismo de acesso à
memória compartilhada não tiveram influência
significativa na performance geral da execução da
aplicação.
Uma possibilidade de trabalho futuro é
implementação de um mecanismo para permitir que o
chaveamento para seleção do processador que vai acessar
a memória de dados compartilhada seja realizado antes
que a execução do programa da memória de instruções
tenha terminado. Para isso, entretanto, seria necessário
implementar uma instrução de Sleep e outra de Wake-up
no processador FemtoJava, para congelar a execução e
reiniciar a ponto parado respectivamente.
Uma outro trabalho possível seria a implementação
de uma nova arquitetura para o processador FemtoJava
com múltiplos cores. Isso permitiria também o
desenvolvimento de um mecanismo para dar suporte a
migração de tarefas entre os cores. Seria possível também
a aplicação de técnicas para realizar o desligamento dos
cores ociosos para estimar os ganhos de potência estática.
O desenvolvimento de uma arquitetura com cores
heterogêneos seria um outro trabalho interessante, que
permitiria realizar o escalonamento das tarefas para serem
executadas nos cores que melhor se encaixassem nas suas
restrições (energia, potência e deadline). Essa solução
seria bastante conveniente para sistemas embarcados e
possibilitaria a realização de comparações entre a
execução das tarefas em processadores com único core ou
processadores com múltiplos cores homogêneos.
Por fim, a abordagem CMP tem se mostrado bastante
atraente para as novas aplicações onde um alto troughtput
é essencial e demostrado que o a troca de complexidade
por escalabilidade pode ser extremamente atraente para
uma vasta gama de aplicações.
7. REFERÊNCIAS BILIOGRAFICAS
[1] Wolf, W. H., “Computer as components: principles of
embedded computing system design”, Morgan Kaufmann
Publishers, 2001.
[2] T. Austin, D. Blaauw , S.Mahlk e, T.Mudge, C.Chakrabarti,
and W.W olf, Mobile Supercomputers. Computer (2004),
Vol.37, p.81.
[3] A. C. Beck. “Uso da Técnica VLIW para Aumento de
Performance e Redução do Consumo de Potência em
Sistemas Embarcados Baseados em Java”. Dissertação de
Mestrado apresentada ao PPGC-UFRGS, 2004.
[4] Barroso, L.A.; Gharachorloo, K.; McNamara, R.;
Nowatzyk, A.; Qadeer, S.; Sano, B.; Smith, S.; Stets, R.;
Verghese, B. “Piranha: a scalable architecture based on
single-chip multiprocessing”. Proceedings of the 27th
International Symposium on Computer Architecture, 2000,
pp. 282-293.
[5] Nayfeh, B.A.; Olukotun, K. “A single-chip multiprocessor”.
Computer, Volume 30, Issue 9, Sept. 1997, pp. 79-85.
[6] S. Ito, L. Carro, R. Jacobi, “Making Java Work for
Microcontroller Applications”. IEEE Design & Test, vol.
18, no. 5, Set-Oct. 2001, pp. 100-110.
[7] A. C. S. Beck and L. Carro, “Low Power Java Processor for
Embedded Applications”, in IFIP 12th International
Conference on Very Large Scale Integration (VLSI-SOC).
Germany, 2003.
[8] IBM Corporation. “CoreConnect bus architecture”.
http://www-03.ibm.com/chips/products/coreconnect/.
Download