3. Sample selection
3.6 Other sin industries
A arquitetura do gerador de n´umeros pseudo-aleat´orios apresentada anteriormente foi
mapeada em um CYCLONE II, EP2C50F672C6, da corpora¸c˜ao Altera. V´arios testes
foram realizados utilizando diferentes valores para os multiplicadores (a1 e a2) e para
o controle do sinal de transporte. Os resultados obtidos pelo gerador em FPGA foram confrontados com os resultados esperados, gerados a partir de um computador por meio da linguagem de programa¸c˜ao C.
Para motivos de compara¸c˜ao, a arquitetura foi recompilada quatro vezes utilizando o
comando GENERIC, o que permitiu a s´ıntese de n´umeros pseudo-aleat´orios compostos de
32, 64, 96 e 128 bits. O tamanho da mem´oria e a quantidade de bits que representa o
endere¸co de destino do n´umero foram mantidos constantes em todos os mapeamentos, ou
seja, mem´oria de 20 posi¸c˜oes e endere¸co de destino composto por 12 bits. Na figura 7.21 apresenta-se o tempo gasto de processamento do FPGA para a gera¸c˜ao de um, trˆes e seis
milh˜oes de n´umeros compostos por 32, 64, 96 e 128 bits.
A gera¸c˜ao de n´umeros pseudo-aleat´orios de 32 bits ocupou apenas 1% do total de ele-
mentos l´ogicos dispon´ıveis no FPGA utilizado e 9% do total de cel´ulas de multiplica¸c˜ao,
trabalhando com um freq¨uˆencia interna de 58,83MHz. A gera¸c˜ao de n´umeros de 64 bits
utilizou 4% do total de elementos l´ogicos e 37% do total de c´elulas de multiplica¸c˜ao, traba-
lhando em uma freq¨uˆencia interna de 29,38MHz. Por sua vez, a gera¸c˜ao de n´umeros de 96
bits utilizou 9% do total de elementos l´ogicos e 82% do total de c´elulas de multiplica¸c˜ao,
trabalhando a uma freq¨uˆencia interna de 25,17MHz. Por ´ultimo, a gera¸c˜ao de n´umeros
pseudo-aleat´orios de 128 bits utilizou 29% do total de elementos l´ogicos e 100% do total
de c´elulas de multiplica¸c˜ao, trabalhando a uma freq¨uˆencia interna de 16,48MHz.
Por motivos de compara¸c˜ao, na figura 7.22 apresenta-se a gera¸c˜ao de n´umeros pseudo-
aleat´orios utilizando a unidade l´ogica e aritm´etica de um Pentium 4 de 3,2GHz de fre-
q¨uˆencia e 1MB de cache. A gera¸c˜ao de n´umeros pseudo-aleat´orios de 32 bits no FPGA ´e
Figura 7.21: Tempo de gera¸c˜ao no FPGA, onde E.L. significa Elementos L´ogicos e MULT. significa Multiplicadores
testado. Para n´umeros pseudo-aleat´orios de 64 bits a propor¸c˜ao chega a ser de 102 vezes
mais r´apida; para 96 bits, a gera¸c˜ao de n´umeros no FPGA ´e cerca de 300 vezes mais
r´apida e, para 128 bits, chega a ser 360 vezes mais r´apida.
Foi utilizada a linguagem de programa¸c˜ao C e o programa gratuito Dev-C++ para a edi¸c˜ao e compila¸c˜ao do c´odigo gerado. A utiliza¸c˜ao da linguagem C, considerada de m´edio n´ıvel de abstra¸c˜ao, ao inv´es de linguagens de mais alto n´ıvel como ´e o caso da linguagem FORTRAN, se deve ao fato de que na linguagem C ´e poss´ıvel definir vari´aveis sem sinal e trabalhar diretamente sobre os bits dos registradores utilizando os operadores bin´arios de deslocamento e l´ogico. Na figura 7.22 apresenta-se o tempo de gera¸c˜ao de um, trˆes e
seis milh˜oes de n´umeros pseudo-aleat´orios de 32, 64, 96 e 128 bits. Vale ressaltar que a
unidade l´ogica e arim´etica de inteiros do Pentium 4 trabalha com vari´aveis de no m´aximo 32 bits. Assim, foram projetados algoritmos para permitir a realiza¸c˜ao de opera¸c˜oes de soma e multiplica¸c˜ao com uma quantidade maior de bits.
O bloco BCGN, com gera¸c˜ao de n´umeros de 15 bits, foi mapeado em outros FPGAs
para a verifica¸c˜ao da quantidade de l´ogica gasta para a sua implementa¸c˜ao e da quantidade de blocos BCGNs que podem ser inclu´ıdos em um FPGA. No FPGA EP1S10F780C5, da fam´ılia STRATIX, um bloco BCGN utiliza apenas 235 elementos l´ogicos de 10570
Figura 7.22: Tempo de gera¸c˜ao no computador
dispon´ıveis (2%). Neste FPGA foi poss´ıvel o mapeamento de at´e 36 blocos BCGNs. Em FPGAs maiores, como o EP2C50F672C6, da fam´ılia CYCLONE II, ´e poss´ıvel o mapeamento de at´e 137 blocos BCGNs.
O processo de gerar n´umeros pseudo-aleat´orios com uma quantidade de bits acima
da quantidade implementada na unidade l´ogica e aritm´etica de inteiros de um proces-
sador ´e extremamente custoso, se tornando at´e mesmo invi´avel processar n´umeros com
uma grande quantidade de bits ou gerar uma grande quantidade de n´umeros. Em contra-
partida, a arquitetura do gerador implementada em um FPGA n˜ao utilizou uma grande
quantidade de recursos totais dispon´ıveis e foi capaz de gerar milh˜oes de n´umeros em
mil´esimos de segundo, mesmo para n´umeros compostos por uma grande quantidade de
bits.
7.7
Coment´arios
Neste cap´ıtulo descreveu-se a unidade de gera¸c˜ao de n´umeros pseudo-aleat´orios re-
configur´avel (BCGN) da arquitetura proposta. Esta unidade de gera¸c˜ao de n´umeros
pseudo-aleat´orios pode ser configurada para executar um gerador linear congruente mul-
com ordem de recorrˆencia igual a dois, um gerador linear m´ultiplo mixed ou um gerador linear com transporte do tipo multiplica¸c˜ao-com-transporte. Desta forma, dependendo do sistema a ser implementado na arquitetura proposta pode-se configurar um gerador que atenda especificamente as necessidades deste sistema. A arquitetura do gerador descrita
em VHDL e mapeada em um FPGA ´e capaz de gerar milh˜oes de n´umeros em mil´esimos
de segundo mesmo para n´umeros compostos por uma grande quantidade de bits.
No pr´oximo cap´ıtulo apresenta-se a arquitetura do bloco b´asico de configura¸c˜ao dos elementos de uma Rede de Petri (BCERP).