You are on page 1of 102

UMA ABORDAGEM EM HARDWARE PARA

ALGORITMOS DE COMPARAC

AO DE SEQ

ENCIAS
BASEADOS EM PROGRAMAC

AO DIN

AMICA
LU

IS GUSTAVO DE AQUINO CARVALHO


DISSERTAC

AO DE MESTRADO EM CI

ENCIA DA COMPUTAC

AO
DEPARTAMENTO DE CI

ENCIA DA COMPUTAC

AO
UNIVERSIDADE DE BRAS

ILIA
INSTITUTO DE CI

ENCIAS EXATAS
DEPARTAMENTO DE CI

ENCIA DA COMPUTAC

AO
UMA ABORDAGEM EM HARDWARE PARA
ALGORITMOS DE COMPARAC

AO DE SEQ

ENCIAS
BASEADOS EM PROGRAMAC

AO DIN

AMICA
LU

IS GUSTAVO DE AQUINO CARVALHO


ORIENTADOR: PROF. DR. RICARDO PEZZUOL JACOBI
DISSERTAC

AO DE MESTRADO EM
CI

ENCIA DA COMPUTAC

AO
PUBLICAC

AO: XXX/2003
BRAS

ILIA/DF, DEZEMBRO/2003.
UNIVERSIDADE DE BRAS

ILIA
INSTITUTO DE CI

ENCIAS EXATAS
DEPARTAMENTO DE CI

ENCIA DA COMPUTAC

AO
UMA ABORDAGEM EM HARDWARE PARA
ALGORITMOS DE COMPARAC

AO DE SEQ

ENCIAS
BASEADOS EM PROGRAMAC

AO DIN

AMICA
LU

IS GUSTAVO DE AQUINO CARVALHO


DISSERTAC

AO DE MESTRADO SUBMETIDA AO DEPARTAMENTO DE CI

ENCIA
DA COMPUTAC

AO DO INSTITUTO DE CI

ENCIAS EXATAS DA UNIVERSIDADE


DE BRAS

ILIA, COMO PARTE DOS REQUISITOS NECESS

ARIOS PARA A OBTEN-


C

AO DO GRAU DE MESTRE.
APROVADA POR:
PROF. DR. RICARDO PEZZUOL JACOBI (UnB)
(ORIENTADOR)
PROF
a
DR
a
MARIA EM

ILIA MACHADO TELLES WALTER (UnB)


(EXAMINADOR INTERNO)
PROF. DR. JOS

E CAMARGO DA COSTA (UnB)


(EXAMINADOR EXTERNO)
BRAS

ILIA/DF, 17 DE DEZEMBRO DE 2003.


ii
FICHA CATALOGR

AFICA
CARVALHO, LU

IS GUSTAVO DE AQUINO
Uma Abordagem em Hardware para Algoritmos de Comparacao de Seq uencias
Baseados em Programacao Dinamica [Distrito Federal] 2003.
xiv, 100 p., 297mm (CIC/IE/UnB, Mestre, Ciencia da Computacao, 2003).
Dissertacao de Mestrado Universidade de Braslia. Instituto de Ciencias
Exatas. Departamento de Ciencia da Computacao.
1. Comparacao de seq uencias 2. Smith-Waterman
3. Arquiteturas Reconguraveis 4. FPGA
5. Arquiteturas Sistolicas
I. CIC/IE/UnB II. Ttulo (serie)
REFER

ENCIA BIBLIOGR

AFICA
CARVALHO, L. G. A. (2003). Uma Abordagem em Hardware para Algoritmos de
Comparacao de Seq uencias Baseados em Programacao Dinamica. Dissertacao de Mes-
trado, Publicacao XXX/2003, Departamento de Ciencia da Computacao, Universidade de
Braslia, Braslia, DF, 100 p.
CESS

AO DE DIREITOS
NOME DO AUTOR: Lus Gustavo de Aquino Carvalho
T

ITULO DA DISSERTAC

AO DE MESTRADO: Uma Abordagem em Hardware para
Algoritmos de Comparacao de Seq uencias Baseados em Programacao Dinamica.
GRAU / ANO: Mestre / 2003

E concedida `a Universidade de Braslia permissao para reproduzir copias desta dissertacao


de mestrado e para emprestar ou vender tais copias somente para propositos academicos e
cientcos. O autor reserva outros direitos de publicacao e nenhuma parte desta dissertacao
de mestrado pode ser reproduzida sem a autorizacao por escrito do autor.
Lus Gustavo de Aquino Carvalho
iii
A minha famlia.
iv
Agradecimentos
Aos meus pais, pela formacao que me foi dada e por todo o amor recebido.
Ao meu orientador, Prof. Ricardo Jacobi, por sua paciencia, compreensao
e excelencia academica.
Aos meus amigos, em especial ao Antonio Marcelo que me apresentou ao
meu orientador e me incentivou a trabalhar com arquiteturas reconguraveis;
`a Marie, pela grande ajuda durante a conclusao das disciplinas, alem de grande
companheira; `a Marcia, pela sua prontidao em elucidar d uvidas; ao Hugo e
Cristiano, pelas constantes trocas de ideias e pela valiosa ajuda na formatacao
em L
A
T
E
X desta dissertacao.
E principalmente `a minha esposa e lhos, por todos os momentos que deixei
de estar com eles para me dedicar `a essa dissertacao.
v
UMA ABORDAGEM EM HARDWARE PARA
ALGORITMOS DE COMPARAC

AO DE SEQ

ENCIAS
BASEADOS EM PROGRAMAC

AO DIN

AMICA
Resumo
Pesquisas em bancos de dados biologicos utilizam algoritmos de comparacao
de seq uencias para busca de similaridades entre as seq uencias armazenadas
nestes bancos e a seq uencia consultada. Embora os algoritmos de comparacao
baseados em programacao dinamica retornem uma resposta otima, eles nao
sao usados na pratica dos laboratorios de Bioinformatica, pois a complexidade
quadratica de tempo e um fator limitante em virtude do consideravel tamanho
das seq uencias biologicas.
Metodos mais rapidos, baseados em probabilidades, mas sem garantia de
exatidao, sao preferidos por possurem uma complexidade linear de tempo.
Assim, a aplicacao de tecnicas que acelerem e viabilizem a utilizacao dos
algoritmos baseados em programacao dinamica constitui uma importante con-
tribuicao para a qualidade da informacao produzida.
Dentre essas tecnicas esta a criacao de um hardware dedicado para uma
aplicacao especca. Nesse escopo, os sistemas reconguraveis baseados em
FPGAs encontram grande aplicacao, pois permitem a prototipacao em hard-
ware de algoritmos bastante complexos com baixos custos.
Este trabalho propoe e implementa em FPGA um hardware baseado em
uma arquitetura sistolica que lineariza o tempo de execucao dos algoritmos
baseados em programacao dinamica.
A m de validar os resultados obtidos foram realizadas comparacoes com
outras implementacoes seq uenciais e paralelas desses algoritmos.
vi
A HARDWARE APPROACH
TO SEQUENCE COMPARISON ALGORITHMS
BASED ON DYNAMIC PROGRAMMING
Abstract
Sequence comparison algorithms are used in biological database searches
in order to nd similarities between the database sequences and a query se-
quence. Although the comparison algorithms based on dynamic programming
techniques produces an optimal result, they are not used by Bioinformatics
laboratories, once its quadratic time complexity is prohibitive in view of the
considerable size of the biological sequences.
Faster methods, based on probabilities, but without precision guarantee,
are preferred for its linear time complexity.
Therefore, improving sequence comparison algorithms based on dynamic
programming constitutes an important contribution to the quality of the in-
formation produced.
A dedicated hardware for an specic application could be one of this solu-
tions. In this scope, recongurable systems nd enormous application because
they provide rapid prototyping of complex algorithms with small costs.
In this work, we propose and implement in FPGA a systolic architecture
based hardware which turns to linear the time complexity of the comparison
algorithms based on dynamic programming.
In order to validate the results produced by our implementation, we com-
pared our results with the ones produced by other sequential and parallel
implementations of the same algorithm.
vii
Sumario
1 INTRODUC

AO 1
1.1 Escopo do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Projeto Genoma Humano . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.2 Pesquisas no Brasil . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.3 Bioinformatica e Biologia Computacional . . . . . . . . . . . . . . . 4
1.1.4 Pesquisas em Bancos de Dados Biologicos . . . . . . . . . . . . . . 5
1.1.5 Algoritmos para Comparacao de Seq uencias . . . . . . . . . . . . . 6
1.2 Revisao Bibliograca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4 Organizacao da Dissertacao . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2 FUNDAMENTAC

AO TE

ORICA 11
2.1 Biologia Molecular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1

Acidos Nucleicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.1.1 DNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.1.2 RNA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1.2 Aminoacidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1.3 Protenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.4 Genes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.1.5 Genetica Molecular . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1.6 Sntese Proteica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2 Algoritmos para Comparacao de Seq uencias Baseados em Programacao
Dinamica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
viii
2.2.1 Alinhamento de seq uencias . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.2 Algoritmos baseados em programacao dinamica . . . . . . . . . . . 24
2.2.2.1 Comparacao global . . . . . . . . . . . . . . . . . . . . . . 24
2.2.2.2 Comparacao local . . . . . . . . . . . . . . . . . . . . . . . 27
3 HARDWARE 30
3.1 Sistemas Dedicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2 Arquiteturas Sistolicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Sistemas Reconguraveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.1 FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.2 Sntese de sistemas reconguraveis . . . . . . . . . . . . . . . . . . 39
3.3.3 Linguagens de descricao de hardware e VHDL . . . . . . . . . . . . 41
3.4 Somadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.1 Meio-somador (half adder) . . . . . . . . . . . . . . . . . . . . . . . 44
3.4.2 Somador completo (full adder) . . . . . . . . . . . . . . . . . . . . 45
3.4.3 Somador ripple carry . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.4.4 Somador com vai-um antecipado (carry look ahead) . . . . . . . . 46
3.4.5 Subtrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5 Matrizes esparsas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.5.1 Compressed Row Storage (CRS) . . . . . . . . . . . . . . . . . . . . 49
3.5.2 Compressed Column Storage (CCS) . . . . . . . . . . . . . . . . . . 50
3.5.3 Compressed Diagonal Storage (CDS) . . . . . . . . . . . . . . . . . 50
3.5.4 Jagged Diagonal Storage (JDS) . . . . . . . . . . . . . . . . . . . . 51
4 DESCRIC

AO DA IMPLEMENTAC

AO 52
4.1 Aplicacao de Estruturas Paralelas na comparacao de seq uencias . . . . . . 52
4.2 Dependencia de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3 Plataforma Utilizada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4 Descricao Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.4.1 Estrutura sistolica . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
ix
4.4.2 Otimizacao de Utilizacao de Espaco e Armazenamento dos Alinha-
mentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4.4.3 Outras otimizacoes . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5 RESULTADOS 72
5.1 Validacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.2 Desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6 CONCLUS

OES 81
x
Lista de Tabelas
1.1 Projetos Regionais de Seq uenciamento no Brasil. . . . . . . . . . . . . . . . 4
2.1 Principais diferencas entre o DNA e o RNA. . . . . . . . . . . . . . . . . . 15
2.2 Os 20 diferentes tipos de aminoacidos encontrados na natureza. . . . . . . 17
3.1 Tabela-verdade do meio-somador (half adder). . . . . . . . . . . . . . . . . 44
3.2 Tabela-verdade do somador completo (full adder). . . . . . . . . . . . . . . 45
5.1 Quantidade de elementos logicos utilizados e freq uencia maxima de operacao
para diferentes comprimentos do vetor sistolico. . . . . . . . . . . . . . . . 77
5.2 Comparacao de velocidade entre uma implementacao seq uencial, diversas
paralelas e em hardware do algoritmo baseado em programacao dinamica. . 80
xi
Lista de Figuras
1.1 Crescimento do GenBank. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Mapeamento do calculo da matriz de similaridade em uma estrutura sistolica
bidirecional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1 Bases Nitrogenadas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Tipos de Ac ucares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 A estrutura de uma molecula de DNA, formada por uma dupla ta. (a)
Forma helicoidal da dupla cadeia. (b) Forma esquematica da dupla ca-
deia, onde podemos visualizar a ligacao entre as moleculas de ac ucar (S)
e de fosfato (P), em cada uma das tas, e o emparelhamento das bases
Adenina/Timina e Citosina/Guanina, entre as duas tas. . . . . . . . . . . 13
2.4 Dupla ta de DNA, observando-se o pareamento das bases A-T e C-G. . . 14
2.5 Exemplo de alguns grupos organicos. . . . . . . . . . . . . . . . . . . . . . 15
2.6 Estrutura e exemplos de alguns aminoacidos. . . . . . . . . . . . . . . . . . 16
2.7 Uniao de dois aminoacidos por uma ligacao peptdica. . . . . . . . . . . . . 16
2.8 Visao esquematica dos genes, cromossomos e genoma. . . . . . . . . . . . . 19
2.9 Codigo genetico. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.10 Duplicacao do DNA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.11 Representacao esquematica da transcricao e traducao. . . . . . . . . . . . . 21
2.12 Detalhamento do processo de traducao. . . . . . . . . . . . . . . . . . . . . 21
2.13 Pontuacao de um possvel alinhamento entre CCTAGA e CTATGCAC. . . 23
2.14 Matriz de similaridades das seq uencias x = AACGT e y = AGC. . . . . . 26
2.15 Obtencao do melhor alinhamento global. . . . . . . . . . . . . . . . . . . . 27
3.1 Aspecto geral de uma arquitetura sistolica. . . . . . . . . . . . . . . . . . . 33
3.2 Alguns tipos de estruturas sistolicas. . . . . . . . . . . . . . . . . . . . . . 34
3.3 Modelos segundo a classicacao de Page. . . . . . . . . . . . . . . . . . . . 37
xii
3.4 Estrutura interna de um FPGA. . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5 Fluxo de projeto utilizando FPGAs. . . . . . . . . . . . . . . . . . . . . . . 40
3.6 Diagrama esquematico do meio-somador. . . . . . . . . . . . . . . . . . . . 45
3.7 Diagrama esquematico do somador completo. . . . . . . . . . . . . . . . . 46
3.8 Diagrama de um somador ripple carry de 4 bits. . . . . . . . . . . . . . . . 46
3.9 Diagrama de um somador de 4 bits com vai-um antecipado. . . . . . . . 47
3.10 Diagrama de um somador de 16 bits com vai-um antecipado. . . . . . . . 48
3.11 Diagrama de um somador-subtrator de 4 bits. . . . . . . . . . . . . . . . . 48
4.1 Paralelizacao do calculo da matriz de similaridade. . . . . . . . . . . . . . . 53
4.2 Matriz de similaridade para as seq uencias ACATAGGCAT e CATAAGGCT. 54
4.3 Tipos de emulacao da matriz de similaridade. . . . . . . . . . . . . . . . . 55
4.4 Estrutura linear sistolica uniderecional. . . . . . . . . . . . . . . . . . . . . 56
4.5 Estrutura interna inicial do elemento de processamento. . . . . . . . . . . . 57
4.6 Fluxo interno dos dados dentro do elemento de processamento. . . . . . . . 58
4.7 Dinamica do sistema para varios elementos de processamento. . . . . . . . 58
4.8 Somador de 8 bits com a constante -2 embutida no mesmo. . . . . . . . . . 60
4.9 Calculo do valor da diagonal. . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.10 Calculo do valor relativo `a insercao do espaco. . . . . . . . . . . . . . . . . 61
4.11 Codicacao dos vetores da matriz de similaridade. . . . . . . . . . . . . . . 63
4.12 Tipos de zeros existentes na matriz de similaridade. . . . . . . . . . . . . . 67
4.13 Vericacao antecipada para saber se o zero fara parte de uma seq uencia. . 68
4.14 Posicao das bases para a vericacao antecipada. . . . . . . . . . . . . . . . 69
4.15 Novo formato do dado fornecido `a memoria externa. . . . . . . . . . . . . . 70
5.1 Matrizes de similaridade para as seq uencias CATAG e ATAGC e para CA-
TAG e CATGA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2 Comparacao entre as seq uencias CATAG e ATAGC. . . . . . . . . . . . . . 73
5.3 Comparacao entre as seq uencias CATAG e CATGA. . . . . . . . . . . . . . 75
5.4 Comparacao entre as seq uencias ACATAGGCAT e CATAAGGCT. . . . . 76
5.5 Freq uencia maxima de operacao x Quantidade de celulas do vetor. . . . . . 78
xiii
5.6 Quantidade de elementos logicos utilizados no FPGA x Quantidade de
celulas do vetor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
xiv
Captulo 1
INTRODUC

AO
1.1 Escopo do Trabalho
Ha 50 anos, no dia 7 de marco de 1953, no laboratorio Cavendish, na Inglaterra, Francis
Crick e James Watson concluram que a molecula do DNA tem a estrutura de uma dupla
helice, uma descoberta que daria novos rumos `a ciencia. No dia 25 de abril daquele
ano, a revista Nature publicou o artigo Molecular Structure of Nucleic Acids (Estrutura
Molecular dos

Acidos Nucleicos) [72], primeiro de uma serie sobre o tema. Com menos de
mil palavras e um graco simplicado, o trabalho descrevia a estrutura da molecula.
A partir de entao, a Biologia Molecular tornou-se, de fato, uma ciencia. Incontaveis
pesquisas comecaram a serem feitas para melhor compreender a estrutura e o funciona-
mento da genetica dos seres vivos. Essas pesquisas proporcionaram in umeros avancos nas
tecnicas da Biologia Molecular que aceleraram o processo de descoberta e descricao da
estrutura e funcionalidade dos genes. Entre os avancos, o aparecimento de seq uencia-
dores automaticos capazes de gerar dados genomicos em grande escala e de ferramentas
de analise computacional comparativa entre seq uencias trouxeram um grande progresso
nessa nova area do conhecimento biologico.
1.1.1 Projeto Genoma Humano
Um importante marco para o atual desenvolvimento da Biologia Molecular foi o Projeto
Genoma Humano, um empreendimento internacional iniciado formalmente em 1990 e
projetado para durar 15 anos, com os seguintes objetivos:
Identicar e fazer o mapeamento dos 80 mil genes que se calculava existirem no
DNA das celulas do corpo humano;
Determinar as seq uencias dos 3 bilhoes de bases qumicas que compoem o DNA
humano;
Armazenar essas informacoes em bancos de dados, desenvolver ferramentas ecientes
para analisar esses dados e torna-los acessveis para novas pesquisas biologicas.
1
Como parte deste empreendimento, paralelamente foram desenvolvidos estudos com
outros organismos selecionados, principalmente microorganismos considerados modelos
biologicos, tais como Saccharomyces cerevisiae e Drosophila melanogaster, entre outros.
O objetivo era desenvolver e aperfeicoar novas tecnicas de analise e tambem auxiliar o
trabalho de interpretar a complexa funcao genetica humana. Como existe uma ordem
subjacente a toda a diversidade da vida e como todos os organismos se relacionam atraves
de semelhancas em suas seq uencias de DNA, o conhecimento adquirido a partir de genomas
nao-humanos levaria a novas descobertas na biologia humana.
Em 1990, ao iniciar-se o PGH, apenas 4550 genes humanos haviam sido identicados;
cerca de 1500 genes haviam sido associados a localiza coes especcas nos 46 cromossomos, e
apenas algumas, dentre cerca de 4000 doencas geneticas existentes, haviam sido entendidas
em um nvel molecular.
Em 12 de fevereiro de 2001, simultaneamente ao an uncio da empresa norte-americana
Celera, o PGH anunciou as primeiras transcricoes quase completas do codigo genetico
humano. O n umero de genes existentes, segundo os calculos de ambas as equipes de
pesquisadores, nao chega a 40 mil. Os resultados foram publicados em duas revistas
diferentes. A revista inglesa Nature [3] publicou o trabalho dos pesquisadores do PGH,
liderados por Francis Collins, e a norte-americana Science, o dos pesquisadores da Celera,
liderados pelo empresario-cientista Craig Venter.
Em 14 de abril de 2003, o consorcio internacional que constituiu o Projeto Genoma
Humano anunciou ocialmente a conclusao do seq uenciamento dos 3 bilhoes de bases
do DNA da especie humana. Liderados pelo Instituto Nacional de Pesquisa do Genoma
Humano (NHGRI), nos EUA e pelo Instituto Sanger, no Reino Unido, o projeto durou
13 anos e, segundo se armou, consumiu 2,7 bilhoes de dolares para se chegar `a meta
proposta em 1990, de decifrar a estrutura do DNA humano com 99,9% de precisao.
Embora o resultado desse grandioso empreendimento mundial deva ser comemorado,
ele e apenas a conclusao da etapa inicial das pesquisas sobre o assunto. A analogia que
se faz e a seguinte: os bilhoes de elementos que estao sendo decifrados nada mais sao do
que as letras. Depois sera preciso entender as palavras (mapeamento dos genes) e a
linguagem, que correspondem `as funcoes que esses genes desempenham.
Essa linguagem contida na molecula de DNA serve para ordenar a fabricacao das
protenas, que sao usadas pelos seres vivos - das bacterias aos humanos - para executar
tarefas vitais como movimentar-se, respirar, pensar e gastar energia.
O objetivo agora, depois de se conhecer o genoma humano completo, assim como o de
outros organismos, e determinar a composicao, estrutura, e funcoes de todas as protenas
do corpo para saber como elas interagem entre si. Ao conjunto de protenas que intervem
nos processos biologicos de uma especie e dado o nome de proteoma.
Empresas e laboratorios p ublicos e privados ja estao na corrida para entender o pro-
teoma, embora este seja sem d uvida muito mais extenso e complicado que o genoma.
2
Enquanto o DNA possui somente quatro bases nitrogenadas, as protenas sao compostas
de aminoacidos, dos quais existem 20 tipos diferentes. Alem disso, o DNA esta locali-
zado no n ucleo de qualquer celula, o que facilita a sua obtencao e puricacao, ja muitas
protenas so estao presentes em alguns tipos de celulas, e somente em certas fases de seu
desenvolvimento.
Por ultimo, nao basta enumerar a seq uencia de aminoacidos que forma a protena,
porque tao importante quanto a seq uencia e a estrutura tridimensional que ela possui,
interferindo decisivamente no papel que ela realiza.
Conhecer como funciona o proteoma e um processo complexo, porque na maioria das
vezes a protena nao age sozinha realizando determinada tarefa, mas sim e uma interacao
entre elas que vai condicionar o processo. Uma forma de conhecer as funcoes das protenas,
e compara-la a funcoes conhecidas, tanto na propria especie, quanto em outras, ja que a
maior parte das protenas se conservam em muitos organismos, mesmo que alguns se
encontrem logeneticamente distantes entre si.
A corrida ao grande mapa das protenas, ou proteoma, sera um dos maiores desaos
cientcos da proxima decada.
1.1.2 Pesquisas no Brasil
A participacao do Brasil na area de pesquisas genomicas teve incio em 1998 a par-
tir do nanciamento, pela FAPESP (Fundacao de Amparo `a Pesquisa do Estado de Sao
Paulo), de um instituto virtual formado por um consorcio de laboratorios, responsavel
pelo seq uenciamento e analise de nucleotdeos, denominado ONSA (Organization for Nu-
cleotide Sequencing and Analysis) [53]. O primeiro resultado importante desse instituto
com reconhecimento internacional ocorreu em 2000 com a publicacao do genoma do to-
patogeno Xylella fastidiosa [65], agente etiologico da Citrus Variegated Chlorosis (CVC),
mais conhecida como praga do amarelinho. Essa doenca destroi lavouras de laranja,
principalmente no Estado de Sao Paulo, ocasionando prejuzos economicos de grandes
proporcoes.
Motivada pelo sucesso alcancado, a FAPESP resolveu investir em projetos mais am-
biciosos, como o do mapeamento do genoma da cana-de-ac ucar, do cancer humano (em
colaboracao com o Instituto Ludwig para Pesquisa do Cancer), do cafe e tambem de varios
organismos e pragas como o Xylella fastidiosa de videira, o Xanthomonas campestris, o
Xanthomonas axonopodis e o Leifsonia xyli, alem de subsidiar outros projetos como o
do mapeamento do genoma funcional do Schistosoma mansoni. Outro ponto que merece
destaque e a criacao das redes de seq uenciamento, que ocorreu tanto no ambito nacional
como no regional. No ambito nacional ha dois projetos: o Projeto Genoma Brasileiro,
que seq uenciou a bacteria Chromobacterium violaceum, cujos resultados podem ser po-
tencialmente aplicados no controle da doenca de chagas e da leishmaniose, e o Projeto
Genolyptus, responsavel pelo seq uenciamento do eucalipto (Fundo Verde-Amarelo/MCT).
3
No ambito regional surgiram varias redes com projetos de seq uenciamento de organismos
importantes, especialmente para o controle de pragas e doencas, conforme indicado na
tabela 1.1.
Tabela 1.1: Projetos Regionais de Seq uenciamento no Brasil.
Rede Regional Organismo Alvo
Rede Genoma do Estado de Minas Gerais Schistosoma mansoni
Rede Genoma Nordeste Leishmania chagasi
Rede Genomica do Estado da Bahia e Sao Paulo Crinipellis perniciosa
Rede Genoma do Consorcio
do Instituto de Biologia Molecular do Parana, Trypanossoma cruzi
FIO-CRUZ e Universidade de Mogi das Cruzes
Programa Genoma do Estado do Parana Herbaspirillum seropedicae
Rede Genoma do Rio de Janeiro Gluconacetobacter diazotrophicus
Rede Sul de Analise de Genomas e Biologia Estrutural Mycoplasma hyopneumoniae
Rede Genoma Centro-Oeste Paracoccidioides brasiliensis
Esses projetos colocam o Brasil no grupo dos pases com tecnologia e infra-estrutura
sucientes para conduzirem pesquisas na area genomica. Isso e de importancia estrategica
vital, pois permite que problemas especcos do nosso pas, que afetam nossa populacao
e/ou producao agropecuaria, sejam resolvidos sem depender dos laboratorios estrangeiros.
Alem disso, esses projetos estimulam o desenvolvimento de novas tecnologias e a capa-
citacao e de prossionais especializados, o que contribui para colocar o Brasil em posicao
de igualdade perante a comunidade cientca internacional nessa area.
1.1.3 Bioinformatica e Biologia Computacional
O Projeto Genoma Humano e os crescentes avancos da tecnologia tem permitido aos
laboratorios de Biologia Molecular fornecerem detalhes cada vez mais precisos sobre as
estruturas estudadas. O enorme volume de informacoes acumulado desde entao e a neces-
sidade de trabalhar esses dados ecientemente criou uma serie de problemas que sao, por
natureza, interdisciplinares. Em particular, as teorias da matematica e da computacao
tornaram-se fundamentais no processo de manipulacao de dados cientcos dentro da Bi-
ologia Molecular [64].
Isso levou ao surgimento de duas areas de pesquisa intimamente ligadas:
A Bioinformatica, que tem como nalidade principal gerar novos conhecimentos a
partir da grande quantidade de dados que vem sendo obtidos sobre seq uencias de
DNA e protenas e pode ser descrita como a aquisicao, organizacao, armazenamento
e an alise dessas informacoes biologicas;
e a Biologia Computacional, que estuda o desenvolvimento de algoritmos e progra-
mas computacionais para auxiliar a Bioinformatica.
4
A Bioinformatica, apesar de ser um campo relativamente novo, tem evoludo dramati-
camente nos ultimos anos e, hoje, e fundamental para as pesquisas realizadas em Biologia
Molecular [21].
Ha tres objetivos principais dentro da Bioinformatica. O primeiro e prover um meio de
organizar os dados biologicos de forma a tornar facil o acesso `as informacoes e a submissao
de novos dados `a medida que estes sao gerados. Diversos bancos de dados biologicos foram
e continuam sendo criados com esse objetivo. O segundo objetivo e o desenvolvimento
de ferramentas para processar os dados armazenados e extrair diversas informacoes ali
contidas. O terceiro objetivo e a analise dos resultados gerados por essas ferramentas
para interpretar as informacoes de uma maneira que seja biologicamente consistente e
relevante [44].
1.1.4 Pesquisas em Bancos de Dados Biologicos
Tradicionalmente, pesquisas em Biologia investigavam um sistema isoladamente e o
comparavam com outros poucos sistemas relacionados. A Bioinformatica permitiu con-
duzir analises globais envolvendo um volume muito maior de dados, de forma a descobrir
princpios comuns e caractersticas importantes mais facilmente.
Um dos problemas fundamentais nessa area e a comparacao entre duas ou mais seq uen-
cias de DNA ou protenas, servindo como base para a solucao de uma grande variedade de
problemas. A comparacao entre seq uencias e uma tarefa computacionalmente intensa e
lenta. Primeiro, porque os algoritmos utilizados possuem uma complexidade de tempo sig-
nicativa pois devem permitir mutacoes geneticas, ou seja, insercoes, remocoes ou substi-
tuicoes nas seq uencias comparadas. Segundo, porque o tamanho dessas seq uencias podem
ser muito grande, da ordem de milhoes de caracteres.
Como os repositorios dessas informacoes vem aumentando de tamanho a taxas ele-
vadas, metodos cada vez mais rapidos e ecientes para a comparacao de seq uencias se
tornam necessarios para se manterem ecientes em relacao ao crescente tamanho dos ban-
cos de dados. Por exemplo, o GenBank, um dos principais bancos de dados p ublicos
sobre informacoes geneticas, tem sido alimentado a uma taxa quase exponencial com o
tempo (gura 1.1).
A analise de uma seq uencia obtida dentro de um projeto de seq uenciamento e iniciada
comparando-a com as seq uencias ja descobertas e analisadas, armazenadas nesses ban-
cos de dados, para que o relacionamento existente entre elas possa permitir estabelecer
a determinacao de sua funcao, estrutura, caractersticas evolucionarias e inuencia em
doencas, entre outras.
5
Figura 1.1: Crescimento do GenBank.
1.1.5 Algoritmos para Comparacao de Seq uencias
O algoritmo com melhores resultados teoricos foi proposto por Smith e Waterman [66],
baseado em tecnicas de programacao dinamica, com o intuito de mostrar as posicoes
similares entre duas seq uencias. No entanto, conforme ja citado, devido ao consideravel
tamanho de algumas seq uencias biologicas, a computacao por programacao dinamica,
que tem complexidade quadratica de tempo e espaco, torna-se inviavel com os recursos
computacionais existentes atualmente.
Assim surgiram os metodos heursticos de comparacao de seq uencias, baseados em pro-
babilidades estatsticas acerca destas seq uencias. Estes metodos possuem complexidade
linear de tempo, o que torna as pesquisas mais rapidas, embora nao garantam a producao
de resultados otimos. Apesar desta desvantagem, as ferramentas baseadas nestes metodos
tem sido bem aceitas e amplamente utilizadas pelos laboratorios de seq uenciamento.
Uma das ferramentas mais utilizadas para a comparacao de seq uencias de DNA com
os bancos de dados genomicos e o BLAST (Basic Local Alignment Search Tool) [6]. O
BLAST e na verdade uma famlia de ferramentas para analises de DNA e protenas e nao
um unico programa.
Uma outra famlia de ferramentas bastante utilizada, que tambem utiliza heursticas,
e o FAST [59], para comparacoes globais.
Se os algoritmos de comparacao baseados em programacao puderem ser acelerados de
6
modo a se tornar viavel sua utilizacao, respostas otimas poderao ser obtidas, uma vez que
as solucoes baseadas em heursticas podem ocultar importantes relacionamentos entre as
seq uencias comparadas.
Dentre as alternativas que vem sendo pesquisadas estao a utilizacao de tecnicas de
computacao paralela, que se baseia na cooperacao de um conjunto de processadores que
dividem a carga computacional e a construcao de hardware especco e dedicado, dessa
forma, mais otimizado e veloz, para a solucao desse problema.
Muitos esforcos nas areas comercial e academica ja foram feitos para utilizarem hard-
ware especco com o objetivo de acelerar as pesquisas nos bancos de dados.
Nesta dissertacao e proposto um sistema baseado em hardware, chamado de ASIC-
GENE (Acelerador Sistolico para Comparacoes Geneticas), e que utiliza um dispositivo
recongur avel conhecido como FPGA. Uma estrutura sistolica linear unidirecional e apre-
sentada para acelerar o processo da comparacao entre seq uencias. Essa estrutura possui
in umeros pequenos processadores dedicados (chamados de elementos de processamento)
que efetuam operacoes em paralelo, obtendo um signicativo ganho de performance em
relacao `a computacao seq uencial.
1.2 Revisao Bibliograca
Em 1985, Lipton e Lopresti [43] mostraram que o paralelismo existente no algoritmo de
Smith-Waterman poderia ser mapeado em uma estrutura linear sistolica bidirecional. Na
estrutura obtida, cada elemento de processamento (PE) do vetor sistolico era responsavel
pelo calculo de uma das diagonais da matriz de similaridade, com a diagonal principal
sendo processada no centro desse vetor (gura 1.2).
Figura 1.2: Mapeamento do calculo da matriz de similaridade em uma estrutura sistolica
bidirecional.
As seq uencias a serem comparadas entravam em lados opostos do vetor e eram des-
locadas a cada ciclo de relogio de modo a atravessar a estrutura linear. Dessa forma, o
primeiro elemento das duas seq uencias se encontravam no centro do vetor, quando era cal-
culado o primeiro valor da matriz de similaridade. A cada ciclo de relogio, as seq uencias
se deslocavam em sentidos opostos e mais valores iam sendo calculados.
7
Se as duas seq uencias a serem comparadas possussem comprimentos iguais a n e
m, a estrutura linear proposta deveria ter um comprimento de n + m 1 elementos de
processamento. Entretanto, a complexidade de tempo do algoritmo caiu de O(n m)
para O(n + m), ou seja, uma complexidade linear.
Para o calculo de cada elemento da matriz de similaridade, foi sugerido um esquema
de pontuacao sem valores negativos e que penalizava mais o alinhamento de caracteres
diferentes das duas seq uencias do que o alinhamento de um caracter de uma das duas
seq uencias com um espaco (gap). A pontuacao proposta seguia a seguinte regra:
t
j
. . .
a b
s
i
. . . c d
d = min
_

_
b + 1
c + 1
a se s
i
= t
j
a + 2 se s
i
= t
j
Com esse esquema de pontuacao, foi demonstrado que o valor calculado para d seria
igual ao de a ou entao igual a a + 2. Com isso, apenas um bit indicaria essa diferenca.
Por esse motivo, essa implementacao nao armazenava os valores calculados da matriz de
similaridade e conforme os dados iam saindo em uma das pontas do vetor, um contador
previamente carregado ia sendo incrementado ou decrementado de acordo com os bits
gerados. No nal do processo, o ultimo valor do contador indicava quao proximas eram
as seq uencias comparadas. Se o valor fosse baixo, indicava que as seq uencias eram bem
parecidas, com um valor igual a zero no caso das seq uencias serem identicas. Valores altos
no contador indicavam que as seq uencias eram bem diferentes.
Com essa implementacao nao era possvel obter nenhum alinhamento entre as duas
seq uencias e o resultado obtido era meramente um indicador de proximidade entre elas.
Foi observado que os diversos artigos denem dois conceitos: comparacao de seq uencias
e alinhamento de seq uencias. Na comparacao, o resultado obtido e simplesmente um
escore que indica se as seq uencias comparadas sao proximas ou nao. No alinhamento e
que se consegue obter quais trechos de uma seq uencia sao similares ao da outra seq uencia
comparada.
Baseadas nessa abordagem, foram propostas varias implementacoes. Em 1992, Ho-
ang [31] descreve uma solucao bastante similar, utilizando a arquitetura SPLASH [22],
uma matriz logica linear programavel desenvolvida pelo Supercomputer Researh Center
(SRC), que utilizava 32 FPGAs XC3090 da Xilinx [75]. Nessa solucao era possvel recupe-
rar pelo menos um alinhamento, embora o esquema de pontuacao utilizado foi o proposto
por Lipton e Lopresti.
Em 1993, Hoang [52] sugere uma nova solucao utilizando uma arquitetura sistolica
unidirecional, agora baseada no SPLASH 2 [9], uma evolucao do sistema anterior. As
duas seq uencias eram colocadas em um unico vetor e deslocadas para dentro da estrutura
sistolica. Uma marca em cada posicao desse vetor indicava quais bases faziam parte da
seq uencia de consulta e quais bases eram do banco de dados. Nessa solucao, nao foram
8
dados detalhes sobre a recuperacao de alinhamentos e pela estrutura da celula, apenas o
calculo de um escore de similaridade (comparacao de seq uencias) era feito.
Utilizando o acelerador SAMBA [38] (Systolic Accelerator for Molecular Biological
Applications), Lavenier propoe, em 1998, uma nova abordagem para o problema, mas
ainda utilizando uma arquitetura sistolica, pela propria estrutura do SAMBA.
Uma nova implementacao da solucao de Hoang ocorreu em 2002, utilizando tecnologia
mais moderna, como a famlia Virtex de FPGAs da Xilinx [25]. A solucao de Hoang
tambem deu origem ao HokieGene [60], um sistema reconguravel em tempo de execucao
baseado na placa Osiris [36] desenvolvida pelo Information Sciences Institute.
Uma solucao bastante similar `a proposta nessa dissertacao foi apresentada por Yama-
guchi, Maruyama e Konagaya [76] em 2002. Nela uma placa PCI contendo uma FPGA
XCV2000E da Xilinx, que contem 43200 celulas logicas, foi utilizada, sendo possvel a
implementacao de 144 elementos de processamento. Cada elemento de processamento
leva quatro ciclos de relogio para gerar seu resultado. Nessa solucao nao e dito nada sobre
a utilizacao de uma arquitetura sistolica. A comparacao e dividida em varios pedacos
devido `as limitacoes da memoria interna da FPGA.
Com algumas modicacoes, mas ainda baseada na solucao de Hoang de 1993, uma nova
proposta e feita por Yu, Kwong, Lee e Leong [78] em 2003. Essa implementacao tambem
utiliza FPGAs da famlia Virtex da Xilinx, mais especicamente XCV1000E, com 27648
celulas logicas.
Algumas solucoes utilizando VLSI tambem foram propostas, como BioScan [73] em
1991, KESTREL [30] em 1996 e as Proclets de Yang [77] em 2002. Essa ultima utiliza uma
unidade de processamento (chamada de Proclet) para cada celula da matriz de similaridade
e, dessa forma, torna-se muito onerosa, dada as dimensoes que a matriz pode atingir.
Dentre as arquiteturas dedicadas, alem das ja citadas SPLASH, Osiris e SAMBA,
destacam-se o GeneMatcher2 [57] da Paracel [56] que usa um processador ASIC otimizado
para essa tarefa, e o DeCypher [68] da TimeLogic [67] que utiliza FPGAs.
1.3 Objetivos
As solucoes analisadas com maior interesse foram as que utilizaram FPGAs. A grande
maioria delas foi baseada nas propostas de Lipton e Lopresti e de Hoang. Nessas aborda-
gens foi utilizado um esquema de pontuacao que, embora simplique o hardware, penaliza
mais a substituicao do que a insercao ou remocao de uma base em uma das seq uencias
(ocorrencia de espacos). Outro fato observado e que o resultado e simplesmente um escore
que indica a proximidade entre as seq uencias comparadas. Quanto menor o escore, maior
a similaridade entre elas.
Nas solucoes nao baseadas nessas propostas, um hardware dedicado de maior enver-
gadura foi utilizado como suporte. A excecao e a solucao apresentada por Yamaguchi,
9
Maruyama e Konagaya que utilizada placas PCIs de prateleira. Entretanto, nao sao
fornecidos maiores detalhes sobre a implementacao feita, de forma que ela pudesse ser
reproduzida.
Dessa forma, ate onde se pode perceber, o trabalho proposto nesta dissertacao e inedito,
pois detalha todo o uxo dos dados dentro da arquitetura sistolica e utiliza um esquema de
pontuacao mais voltado para os aspectos biologicos do problema e nao com simplicacoes
do circuito. Alem disso, a matriz de similaridade e armazenada e permite a recuperacao
de todos os alinhamentos entre as duas seq uencias comparadas.
Assim, os objetivos desta dissertacao sao:
Propor, implementar e validar uma solucao paralela baseada em hardware para o
problema de comparar seq uencias utilizando o algoritmo de Smith-Waterman [66];
Realizar comparacoes de desempenho com outras implementacoes do algoritmo,
seq uenciais e paralelas.
1.4 Organizacao da Dissertacao
No captulo 2 sao apresentados os conceitos basicos em Biologia Molecular, sendo
descritos os algoritmos de comparacao de seq uencias baseados em programacao dinamica.
No captulo 3, sao revistas as arquiteturas sistolicas e as arquiteturas reconguraveis, alem
de outros conceitos a serem utilizados. A descricao da solucao proposta e apresentada no
captulo 4. Os resultados dos experimentos realizados e analises desses resultados sao
apresentados no captulo 5. Finalmente, no captulo 6 sao apresentadas as conclusoes
deste trabalho e propostas novas direcoes de pesquisa a partir dele.
10
Captulo 2
FUNDAMENTAC

AO TE

ORICA
2.1 Biologia Molecular
Um dos pontos fundamentais da Teoria Atomica proposta por John Dalton [15] era que
a materia e constituda por unidades indivisveis, os atomos. Estes, unidos uns aos outros,
compoem as moleculas, que juntas formam uma celula. Segundo a teoria celular [7][8],
formulada em 1839, por Schleiden e Schwann, todo ser vivo e formado por celulas. De
forma simplista, a vida resulta de um complexo conjunto de reacoes bioqumicas que ocor-
rem nas celulas. Duas estruturas se destacam nesta qumica da vida: os acidos nucleicos
e as protenas.
A Biologia Molecular e a ciencia onde se visa compreender a estrutura e funcao
dos acidos nucleicos e protenas, e como estes participam nos intrincados processos res-
ponsaveis pela origem e conservacao da vida citeSetubal.
2.1.1

Acidos Nucleicos
A historia da descoberta dos acidos nucleicos remonta aos ns do seculo XIX, quando F.
Miescher (1868), em um importante trabalho de citoqumica, isolou e analisou o n ucleo das
celulas. No entanto, foi Richard Altmann que, em 1889, atribuiu a designacao de acidos
nucleicos, uma vez que foram primeiramente identicados no n ucleo e porque manifestam
propriedades acidas.
Os acidos nucleicos estao presentes em todos os seres vivos, sejam eles simples ou
complexos, e contem as informacoes necessarias para a sntese de todas as protenas que
cada organismo e capaz de produzir [59]. Sao moleculas organicas gigantes formadas por
uma cadeia de unidades menores chamadas nucleotdeos. Existem dois tipos principais: o
acido ribonucleico (RNA) e o acido desoxirribonucleico (DNA).
Cada nucleotdeo do acido nucleico consiste de tres partes basicas: um grupo fosfato,
um ac ucar e uma base nitrogenada (anel heterocclico de atomos de carbono e nitrogenio).
A base nitrogenada, de acordo com sua estrutura qumica, pode ser p urica ou pi-
rimdica. Adenina (A) e guanina (G) sao bases p uricas enquanto citosina (C), timina (T)
e uracila (U) sao bases pirimdicas.
11
As purinas sao constitudas de dois aneis fundidos de 5 e 6 atomos e as pirimidinas
de um unico anel de 6 atomos. Uracil e Timina sao moleculas bastante relacionadas,
diferindo apenas pelo grupo metila encontrado no atomo C5 do anel pirimdico da Timina
(gura 2.1).

E a presenca do nitrogenio que da a essas moleculas o seu carater basico.
Apenas quatro tipos diferentes de bases sao encontrados em um dado polmero de
acido nucleico, sendo duas purinas e duas pirimidinas. No DNA as bases constituintes sao
A, G, C, e T, enquanto que no RNA as bases sao A, G, C e U.
Figura 2.1: Bases Nitrogenadas.
A molecula de ac ucar, tambem chamada de pentose por ser composta de 5 atomos
de carbono, pode ser de dois tipos, desoxirribose e ribose. Diferem uma da outra pela
presenca ou ausencia do grupo hidroxila no C2 (gura 2.2).

E baseado nessa caracterstica
que os acidos nucleicos recebem o nome RNA (ribose) ou DNA (desoxirribose).
Figura 2.2: Tipos de Ac ucares.
A pentose e o elo de ligacao entre a base e o grupo fosfato. De um lado, o Nitrogenio
9 das purinas ou o Nitrogenio 1 das pirimidinas liga-se ao C1 da pentose e, de outro lado,
o grupo carboxila do atomo de C5 da pentose participa da ligacao ester com o grupo
fosfato.
12
2.1.1.1 DNA
Segundo o modelo descoberto por Watson-Crick [72], o DNA e uma longa molecula,
constituda por duas cadeias de nucleotdeos (um grupo fosfato, um ac ucar e uma base
nitrogenada), chamadas tas, enroladas em torno de seu proprio eixo, como se fosse uma
escada do tipo caracol (gura 2.3). A ligacao entre as tas e feita por pontes de hidrogenio,
que sao ligacoes fracas, isto e, que se rompem com facilidade. As pontes de hidrogenio
unem duas bases nitrogenadas e sao decorrentes de propriedades qumicas entre uma base
p urica e uma pirimdica, formando os chamados pares de bases (bp).
Figura 2.3: A estrutura de uma molecula de DNA, formada por uma dupla ta. (a) Forma
helicoidal da dupla cadeia. (b) Forma esquematica da dupla cadeia, onde podemos visualizar a
ligacao entre as moleculas de ac ucar (S) e de fosfato (P), em cada uma das tas, e o emparelha-
mento das bases Adenina/Timina e Citosina/Guanina, entre as duas tas.
O pareamento das bases de cada ta se da de maneira padronizada, sempre uma
purina com uma pirimidina, especicamente: adenina (A) com timina (T) e citosina (C)
com guanina (G).
Como cada ligacao ocorre entre o carbono 3 de um composto, o fosfato e o carbono
5 do proximo composto, diz-se que o DNA possui uma orientacao que, por convencao,
inicia-se na extremidade 5 e termina na 3, denominada direcao canonica [64]. Assim,
uma seq uencia de nucleotdeos em uma ta corresponde `a seq uencia dos nucleotdeos
complementares da outra ta, por causa do emparelhamento das bases. Dizemos que as
duas tas sao complementares.
Alem disso, deve-se notar que as duas tas possuem sentidos opostos. Uma ta comeca
em 5 e termina em 3, que e emparelhada com a outra, que comeca em 3 e termina em 5.
13
Por convencao, a ta de sentido 5 3 e colocada acima, como mostrado na gura 2.4.
Figura 2.4: Dupla ta de DNA, observando-se o pareamento das bases A-T e C-G.
A seq uencia do DNA e determinada pela ordem das bases nitrogenadas ao longo de
cada uma das tas, ja que o fosfato (P) e o ac ucar (S) sao identicos em todos os nu-
cleotdeos. Da os pares de bases (bp) serem usados como unidades de comprimento para
uma molecula de DNA. O tamanho do DNA varia para cada organismo, podendo ser de
alguns milhoes de bases, como no caso de uma bacteria, ate de alguns bilhoes de bases,
no caso dos mamferos.
O DNA codica todas as protenas que as celulas devem sintetizar, o que garante
a sobrevivencia da especie. Portanto, a principal funcao do DNA e armazenar toda a
informacao genetica de um organismo. A conservacao e transmissao dessas informacoes
sao realizadas pelos processos de duplicacao e transcricao, respectivamente.
2.1.1.2 RNA
As moleculas de RNA possuem composicao qumica e estrutural bastante similares `as
de DNA. As diferencas qumicas estao no fato de o nucleotdeo ser formado pelo ac ucar
ribose e pela substituicao da timina (T) pela uracila (U). As outras bases nitrogenadas
sao todas as mesmas que compoem o DNA: citosina (C), guanina (G) e adenina (A).
Estruturalmente, enquanto o DNA apresenta-se como uma longa helice dupla com uma
estrutura secundaria regular e simples, os RNAs sao, geralmente, moleculas de ta unica
bem menores que o DNA, apresentando uma enorme diversidade de estruturas secundarias,
com certas regioes podendo formar ate mesmo uma dupla helice.
A estabilidade e regularidade estrutural da molecula de DNA, deve-se principalmente
ao fato dos aneis de desoxirribose nao possurem grupos hidroxila no C2. Os grupos
hidroxila tanto do C2 como C3 sao muito reativos e podem participar de uma serie de
ligacoes pouco usuais, permitindo uma variedade enorme de conformacoes para a molecula
de acido nucleico. Tal variedade, nao seria uma caracterstica desejavel para uma molecula
que tem armazenado e transmitido a informacao genetica durante estes milhoes de anos
de evolucao. O exerccio de tal funcao exige estabilidade e regularidade.
Ja o RNA, constitudo de riboses e, por isso mesmo, muito mais reativo e exvel.
Alem disto, o fato de ser ta simples permite um emparelhamento intramolecular de
bases, gerando estruturas bastante complexas. Ao adquirir diferentes conformacoes numa
estrutura tridimensional, as moleculas de RNA podem, inclusive, apresentar stios ativos
14
que catalisem reacoes qumicas da mesma forma que as enzimas proteicas.

E a grande exibilidade dos RNAs que lhes permite executar uma atividade funda-
mental na celula, qual seja, a de interpretar o codigo contido na linguagem de nucleotdios
e decodic a-lo para a linguagem de aminoacidos. A molecula de RNA e o intermediario
no uxo de informacoes dentro da celula, do DNA `as protenas. Assim, existem diferen-
tes tipos de RNA, tais como o RNA mensageiro (RNAm), o RNA ribossomico (RNAr) e
o RNA transportador (RNAt), responsaveis por diversas funcoes vitais na realizacao da
sntese de protenas.
A tabela 2.1 apresenta as diferencas fundamentais entre o DNA e o RNA.
2.1.2 Aminoacidos
De um modo geral, cada composto organico pertence a um determinado grupo. En-
tretanto, existem compostos que pertencem simultaneamente a dois ou mais grupos, ou
seja, sao de funcao mista. A gura 2.5 mostra alguns desses grupos.
Figura 2.5: Exemplo de alguns grupos organicos.
Os aminoacidos sao compostos organicos de funcao mista e que apresentam em suas
moleculas um grupo acido (-COOH) e um grupo amina (-NH2), alem de um radical -R, que
vai ser responsavel pela diferenciacao entre os diversos tipos existentes (gura 2.6). Gracas
`a presenca de grupamentos derivados de acidos carboxlicos e de aminas, os aminoacidos
sao dotados de propriedades de acidos e bases. Esse duplo carater e de vital importancia
para a compreensao do comportamento e das funcoes das protenas e, por conseguinte, da
materia viva.
Todas as protenas existentes nos seres vivos, desde os vrus ate os seres humanos, sao
constitudas por combinacoes de apenas 20 aminoacidos. Esses blocos constituintes da
Tabela 2.1: Principais diferencas entre o DNA e o RNA.
DNA RNA
Nucleotdeo fosfato, desoxirribose, fosfato, ribose,
base nitrogenada base nitrogenada
Bases Nitrogenadas A, T, C e G A, U, C e G
Estrutura duas cadeias normalmente,
em estrutura helicoidal cadeia simples
Funcao unica varia de acordo com o tipo
15
Figura 2.6: Estrutura e exemplos de alguns aminoacidos.
vida se unem entre si para formar longas cadeias e moleculas complexas que conguram a
estrutura de todos os organismos vivos. A tabela 2.2 mostra os aminoacidos encontrados
na natureza, bem como suas abreviacoes e codigos utilizados.
Os aminoacidos sao classicados em essenciais e nao-essenciais. Os essenciais, ou
indispensaveis, sao aqueles que o organismo humano nao consegue sintetizar. Desse modo,
eles devem ser obrigatoriamente ingeridos atraves de alimentos. Os aminoacidos nao-
essenciais, ou dispensaveis, sao aqueles que o organismo humano consegue sintetizar a
partir dos alimentos ingeridos.
Sao 8 os aminoacidos essenciais, a saber: leucina, isoleucina, valina, triptofano, meti-
onina, fenilalanina, treonina e lisina (a histidina e um aminoacido essencial na infancia,
mas nao na idade adulta).
2.1.3 Protenas
As protenas sao compostos organicos de estrutura complexa e massa molecular ele-
vada (entre 15.000 e 20.000.000) e sao sintetizadas pelos organismos vivos atraves da con-
densacao de um n umero grande de moleculas de aminoacidos, por intermedio de ligacoes
denominadas peptdicas, que derivam da reacao do grupo amina de um dos aminoacidos
com o grupo carboxila de outro (gura 2.7). Pelo fato de uma molecula de agua ser libe-
rada como resultado dessa reacao, cada aminoacido, apos a uniao, passa a ser um resduo
do aminoacido original.
Figura 2.7: Uniao de dois aminoacidos por uma ligacao peptdica.
Para que as celulas funcionem sao necessarias a realizacao de uma enorme quantidade
de reacoes qumicas que se processam em seu interior. As enzimas, protenas especiais,
regulam a atividade celular controlando e catalisando essas reacoes qumicas.
Alem disso, as protenas participam nos processos de duplicacao, transcricao e reparo.
A vida e a reproducao dependem da manutencao desses processos e da disponibilidade de
16
Tabela 2.2: Os 20 diferentes tipos de aminoacidos encontrados na natureza.
Aminoacido Abreviacao Codigo
Alanina Ala A
Asparagina ou Aspartato Asx B
Cistena Cis ou Cys B
Aspartato (

Acido aspartico) Asp D


Glutamato (

Acido glutamico) Glu E


Fenilalanina Fen ou Phe F
Glicina Gli ou Gly G
Histidina His H
Isoleucina Ile I
Lisina Lis ou Lys K
Leucina Leu L
Metionina Met M
Asparagina Asn N
Prolina Pro P
Glutamina (Glutamida) Gln Q
Arginina Arg R
Serina Ser S
Treonina Ter ou Thr T
Valina Val V
Triptofano (Triptofana) Trp W
Tirosina Tir ou Tyr Y
Glutamina ou Glutamato Glx Z
17
energia e dos componentes necessarios para isso. Dessa forma, a sntese das protenas e
fundamental para o crescimento, o desenvolvimento e a manutencao celular.
Para a formacao de uma protena e preciso uma informacao que ira ditar a seq uencia
em que os aminoacidos devem ser unidos. Essas informacoes estao inscritas nas moleculas
do DNA.
Embora a seq uencia de aminoacidos determine a estrutura da protena, conhecida
como estrutura primaria, nao e possvel predizer com precisao a conformacao espacial
adotada por uma determinada protena, apenas por esta seq uencia. As interacoes mo-
leculares entre os aminoacidos fazem com que a cadeia proteica assuma uma estrutura
secundaria. Podemos ter ainda as estruturas terciarias, resultado da estrutura se-
cundaria empacotadas em um nvel mais global, e as estruturas quaternarias, quando
um grupo de protenas diferentes sao empacotadas juntas.

E possvel tambem classicar protenas com base em sua funcao. Elas podem ser di-
vididas em dois grupos: protenas estruturais e protenas biologicamente ativas. Algumas
protenas, entretanto, podem pertencer aos dois grupos. A maioria das protenas estrutu-
rais e composta por cadeias alongadas e tem como funcao compor estruturas de orgaos,
tecidos, etc. Dois bons exemplos, nos animais, sao o colageno (ossos, tendoes, pele e
ligamentos) e a queratina (unhas, cabelos, penas e bicos). A maioria das protenas biolo-
gicamente ativas tem forma globular e sao encarregadas de executar ou controlar a maior
parte das atividades dentro do organismo. Exemplos sao as enzimas que aceleram reacoes
qumicas, os hormonios proteicos (que atuam como mensageiros qumicos), as protenas de
transporte (como as lipoprotenas, que podem carregar o colesterol) e as imunoglobulinas
(ou anticorpos), que protegem o corpo de microorganismos invasores [64].
2.1.4 Genes
Nas celulas dos organismos, cada molecula de DNA forma um cromossomo. O
n umero de cromossomos e caracterstico da especie. Por exemplo, nas celulas dos seres
humanos existem 23 pares de cromossomos.
Cada molecula de DNA contem diversos genes, que sao as unidades fsicas e funci-
onais basicas da hereditariedade [2]. Um gene e uma seq uencia especca de bases de
uma molecula de DNA que contem a informacao necessaria para sintetizar protenas ou
RNA [2].
Todos os genes estao dispostos linearmente ao longo dos cromossomos na forma de tre-
chos contguos. Mas, entre os genes, existem trechos, chamados DNA nao-codicante
que nao possuem funcao codicadora, pelo conhecimento atual da ciencia. Nos procari-
ontes, organismos que nao possuem n ucleo organizado, os cromossomos estao quase to-
talmente cobertos por genes, mas, nos eucariontes, organismos com n ucleo bem denido,
estima-se que cerca de 90% do cromossomo seja DNA nao-codicante [64].
O conjunto completo de cromossomos de um organismo compreende o seu genoma,
18
que engloba todas as informacoes necessarias para originar e manter a vida. A gura 2.8
mostra o esquema dos genes dentro dos cromossomos e destes dentro do genoma. Estima-
se que o genoma humano possua aproximadamente 30.000 genes [2].
Figura 2.8: Visao esquematica dos genes, cromossomos e genoma.
Geralmente, cada gene em uma molecula de DNA corresponde a um tipo diferente
de protena. A informacao genetica contida nos genes e transmitida por triplas de nu-
cleotdeos, chamadas codons. Cada codon representa um aminoacido na protena e essa
correspondencia e chamada de codigo genetico (gura 2.9).
Figura 2.9: Codigo genetico.
A combinacao das quatro letras geneticas (A,T,C,G) tres a tres permite obter 64 trincas
diferentes. Dessas 64 trincas possveis, apenas 61 correspondem a aminoacidos; as tres
restantes sao utilizadas para indicar onde termina um mensagem genetica (STOP). Em
geral, o incio de um gene e indicado pelo codon AUG.
Como existem apenas 20 tipos diferentes de aminoacidos nas protenas do seres vivos,
alguns aminoacidos sao codicados por mais de uma trinca de nucleotdeos. Por isso,
diz-se que o codigo genetico e degenerado.
2.1.5 Genetica Molecular
O material responsavel pelo comando e coordenacao de toda a atividade celular e
pelas divisoes celulares e transmissoes das caractersticas hereditarias esta representado
19
Figura 2.10: Duplicacao do DNA.
nas celulas pelos cromossomos. A conservacao e a transmissao da informacao genetica
ocorrem devido ao processo de duplicacao do DNA, que acontece durante a divisao de
uma celula, produzindo duas celulas lhas exatamente iguais.
Na duplicacao, as tas do DNA se separam e cada uma serve de molde para a formacao
de uma ta complementar atraves do pareamento de bases. No nal do processo havera
duas moleculas de DNA, cada uma constituda por uma ta original e outra complementar
recem-fabricada (gura 2.10).

E geralmente durante este processo que ocorrem as variacoes
geneticas decorrentes de mutacoes, por exemplo, substituicoes, remocoes ou insercoes de
bases.
2.1.6 Sntese Proteica
A expressao da informacao genetica ocorre na forma de protenas, segundo o Dogma
Central da Biologia Molecular, que preconiza que os genes sao perpetuados como
seq uencias de acidos nucleicos e, a partir destes, expressos na forma de protenas. Duas
fases compoem o processo de sntese de protenas: transcricao e traducao.
Na primeira etapa da sntese, ocorre a transcricao da informacao depositada no
DNA para uma copia feita a partir de ribonucleotdeo. Assim, obtem-se uma molecula
alongada de RNA com a mesma seq uencia de nucleotdeo observada no DNA, com excecao
da base timina substituda pela uracila. Esta copia de DNA recebe o nome de RNA
mensageiro (RNAm). O RNAm carrega a informacao codicada para os ribossomos,
que sao estruturas celulares responsaveis por processar o codigo genetico e sintetizar as
protenas [2].
Terminada a transcricao do DNA, o RNAm sai do n ucleo para o citoplasma rumo ao
ribossomo, levando a seq uencia de nucleotdeos que permitira a formacao das protenas.
Para que isso ocorra e necessario a traducao da seq uencia de nucleotdeos do RNAm em
seq uencia de aminoacidos (gura 2.11).
20
Figura 2.11: Representacao esquematica da transcricao e traducao.
Todas as celulas contem um conjunto de RNA, os RNA transportadores (RNAt), que
atraves da ligacao de uma de suas extremidades a um codon, permite o alinhamento dos
aminoacidos de acordo com a seq uencia de nucleotdeos do RNAm.
Um RNAt e responsavel pelo transporte de um dos vinte aminoacidos utilizados na
sntese de protenas. Cada um dos aminoacidos tem pelo menos um tipo de RNAt a
ele designado. O aminoacido e ligado ao RNAt que possui um anticodon (seq uencia
de tres nucleotdeos que e complementar aos tres nucleotdeos do codon que especica o
aminoacido na molecula de RNAm) correto, gerando uma molecula de aminoacil-RNAt.
Atraves do pareamento codon-anticodon, o aminoacido e inserido em uma cadeia crescente
de protena, de acordo com o que esta determinado na seq uencia de nucleotdeo do RNAm.
Com uma extremidade ligada a um aminoacido e a outra pareada a um codon, o RNAt
converte a seq uencia de nucleotdeo na seq uencia de aminoacidos (gura 2.12). Apenas a
molecula de RNAt, e nao os aminoacidos a ela ligados, determina onde o aminoacido e
adicionado durante a sntese de protena.
Figura 2.12: Detalhamento do processo de traducao.
21
2.2 Algoritmos para Comparacao de Seq uencias Ba-
seados em Programacao Dinamica
A comparacao de seq uencias e a operacao primitiva mais importante em Bioinformatica,
servindo como base para muitas outras manipulacoes complexas e e vastamente utilizada
nos projetos de seq uenciamento.
A comparacao de seq uencias consiste em duas partes: encontrar uma medida que indi-
que a similaridade entre as seq uencias, e obter uma forma de visualizar esta similaridade.
A similaridade e uma metrica que expressa quantitativamente quao parecidas sao duas
seq uencias. Ja a visualizacao e feita por um alinhamento, que e um metodo de escrever
uma seq uencia acima da outra para tornar explcitas as correspondencias entre caracte-
res ou regioes de caracteres similares das duas seq uencias. O melhor alinhamento, ou
alinhamento otimo, e aquele que apresenta o maximo de regioes de similaridade [64].
2.2.1 Alinhamento de seq uencias
Quando seq uencias sao comparadas, diversos termos podem ser utilizados para ex-
pressar o resultado encontrado. Identidade, similaridade e homologia de seq uencias sao
os mais importantes, e embora sejam freq uentemente utilizados de forma intercambiavel,
seus signicados sao diferentes.
A identidade entre seq uencias se refere `a ocorrencia exata dos mesmos resduos nas
mesmas posicoes das seq uencias alinhadas. A similaridade considera a possibilidade de
ocorrencia de mutacoes, sendo signicativa quando estas sao pontuadas de acordo com
a probabilidade que tem de ocorrerem, sob um ponto de vista biologico. A homologia
indica a existencia de um relacionamento evolucionario entre as seq uencias. A diferenca
entre os dois ultimos termos e que a similaridade se refere `a presenca de locais identicos
ou similares nas seq uencias, enquanto a homologia reete uma armacao mais forte, a de
que as seq uencias possuem um ancestral comum.
Comparar seq uencias depende da computacao de um alinhamento entre elas. Para
isso, e utilizado um esquema de pontuacao do alinhamento. Cada coluna do alinhamento
recebe um certo valor dependendo do seu conte udo. A soma desses valores consiste na
pontuacao do alinhamento.
Assim, as seq uencias a serem comparadas sao emparelhadas, ou seja, posicionadas uma
acima da outra, de modos arbitrarios e para cada um desses emparelhamentos e calculado
um valor de acordo com certos criterios. O melhor alinhamento dentre todos os possveis
sera aquele que possuir a maior pontuacao. Se dois alinhamentos resultarem no valor
maximo, ambos serao considerados otimos.
Um alinhamento de seq uencias deve permitir introducao de espacos (gaps) em locais ar-
bitrarios das seq uencias para compensar insercoes ou remocoes de bases de uma seq uencia
em relacao a outra. A inclusao de espacos mantem, em registro, seq uencias obviamente
22
similares, o que nao seria possvel com um alinhamento direto sem eles. Assim, os espacos
nos permitem lidar com contingencias tais como duplicacoes internas, repeticoes, crossing-
over desigual e outras delinq uencias geneticas. Nao e permitido que um espaco em uma
seq uencia seja alinhado com um espaco na outra seq uencia.
Cada coluna do alinhamento recebe um certo valor dependendo do seu conte udo. A
soma desses valores resulta na pontuacao do alinhamento. Um esquema de pontuacao
muito utilizado dene um valor igual a +1 para colunas com caracteres coincidentes (mat-
ches) e 1 para colunas com caracteres divergentes (mismatches). Para impedir o ac umulo
de muitos espacos em um alinhamento, uma quantidade xa deve ser deduzida do valor
acumulado a cada espaco introduzido. Assim, os espacos possuem pontuacao negativa.
Esse esquema de pontuacao sugere o valor 2 para cada espaco inserido. Pode ainda ser
denida uma penalidade mais suave para a extensao do espaco (espacos sucessivos).
Por exemplo, considerando duas seq uencias x = CCTAGA e y = CTATGCAC, um
possvel alinhamento entre elas e mostrado na gura 2.13 e resultaria em uma pontuacao
(escore) igual a 5.
Figura 2.13: Pontuacao de um possvel alinhamento entre CCTAGA e CTATGCAC.
Nas comparacoes de seq uencias de DNA, utiliza-se uma matriz unitaria onde so-
mente caracteres identicos recebem uma pontuacao positiva. No caso de se comparar
seq uencias proteicas, utilizam-se matrizes de substituicao. Aminoacidos relativamente
semelhantes recebem pontuacao positiva e nao semelhantes recebem pontuacao negativa.
Uma matriz de comparacao para protenas, amplamente utilizada nos ultimos anos, foi a
matriz PAM ( Point Accepted Mutation), construda por Dayho [16].
Para constru-la, ele observou todas as substituicoes de aminoacidos vericadas em
alinhamentos de um amplo conjunto de protenas intimamente relacionadas, as quais
tinham sofrido uma certa divergencia evolucionaria. A cada substituicao possvel de um
resduo foi dada uma pontuacao que reete a probabilidade de estar relacionado ao resduo
correspondente da seq uencia em consulta. A pontuacao do alinhamento e a soma das
pontuacoes individuais e mede a quantidade de alteracoes evolutivas numa seq uencia. Em
media, 1,0 unidade PAM corresponde a alteracoes em 1% dos aminoacidos numa seq uencia
proteica.
Um metodo alternativo, baseado nas matrizes BLOSUM (Blocks Substitution Ma-
trix) [27] tem se mostrado superior `a matriz PAM para detectar os parentescos biologicos
entre seq uencias moderadamente divergentes. No caso da matriz BLOSUM62, por exem-
23
plo, o maximo de identidade compartilhado por duas seq uencias e 62% e os scores sao
derivados da comparacao de blocos de alinhamentos localizados nas protenas relaciona-
das. Dependendo do tamanho das seq uencias que estao sendo comparadas, matrizes de
um tipo ou de outro sao mais apropriadas.
2.2.2 Algoritmos baseados em programacao dinamica
Waterman mostrou que encontrar alinhamentos e um problema difcil, ja que o n umero
de alinhamentos possveis e exponencial, dado aproximadamente pela formula [71]
A
n
= (1 +

2)
2n+1

n, (2.1)
onde n representa o tamanho das seq uencias.
2.2.2.1 Comparacao global
Em 1970, Needleman e Wunsch [51] apresentaram o primeiro algoritmo de comparacao
de seq uencias capaz de determinar o melhor alinhamento entre duas seq uencias sem enu-
merar todas as solucoes possveis. A solucao foi baseada em tecnicas de programacao
dinamica [13], que se baseia no princpio de que uma instancia de um problema e resol-
vida aproveitando as solucoes ja computadas para instancias menores deste problema.
Programacao dinamica e aplicada tipicamente em problemas de otimizacao, para os
quais deve-se construir um conjunto de escolhas visando obter uma solucao otima.
`
A
medida que estas escolhas sao feitas, formam-se sub-problemas similares ao problema ori-
ginal. A ideia basica desta tecnica e calcular o valor de cada sub-problema uma unica vez,
armazenando-o em uma tabela, e usar este valor sempre que o sub-problema correspon-
dente reaparecer durante a execucao do algoritmo que soluciona o problema.
Existem duas caractersticas basicas que um problema de otimizacao deve ter para
que a programacao dinamica possa ser aplicada: sub-estrutura otima e sub-problemas
que se sobrepoem. Dizemos que um problema exibe sub-estrutura otima quando uma
solucao otima para o problema e calculada a partir de solucoes otimas para sub-problemas
similares, mas menores que o problema original. Em relacao `a segunda caracterstica,
para que um problema possua sub-problemas que se sobrepoem, o espaco de sub-
problemas deve ser pequeno, no sentido de que um algoritmo recursivo para o problema
resolve os mesmos sub-problemas varias vezes, em vez de gerar diferentes sub-problemas.
Tipicamente, o n umero total de sub-problemas distintos deve ser polinomial em relacao
ao tamanho da entrada.
Dadas duas seq uencias x e y, em vez de determinar a similaridade entre x e y tomando
as duas seq uencias inteiras, a solucao pode ser obtida determinando todas as similaridades
entre prexos arbitrarios das duas seq uencias, iniciando pelos prexos menores e utilizando
os resultados ja processados para resolver o problema para prexos maiores.
24
Este algoritmo reduziu a complexidade de tempo do problema de exponencial para
quadratica, implementando um metodo de alinhamento global, que busca a simila-
ridade maxima, pois prioriza os pareamentos (coincidencias e divergencias) e penaliza
insercoes e remocoes (espacos) de bases, considerando o tamanho total das seq uencias
sendo comparadas. Este tipo de alinhamento e apropriado quando se espera encontrar
similaridades ao longo de toda ou na maior parte das seq uencias.
Seguindo a tecnica de programacao dinamica, a ideia basica do algoritmo consiste em
dividir o problema de encontrar o melhor alinhamento entre duas seq uencias em sub-
problemas de alinhar pares de bases, uma de cada seq uencia, para encontrar subalinha-
mentos otimos. A solucao de cada subproblema e dada pela escolha de um dos tres
alinhamentos possveis:
Alinhar as bases das duas seq uencias;
Alinhar um espaco na primeira seq uencia com a base da segunda seq uencia;
Alinhar a base da primeira seq uencia com um espaco na segunda seq uencia.
Para comparar duas seq uencias x = x
1
x
2
. . . x
|x|
e y = y
1
y
2
. . . y
|x|
, onde |x| representa
o comprimento da seq uencia x e |y| o comprimento da seq uencia y, o algoritmo gera uma
matriz S
|x|+1,|y|+1
, chamada de matriz de similaridade. Para cada celula s
i,j
da matriz,
o algoritmo calcula a pontuacao resultante de cada um dos tres alinhamentos possveis,
selecionando o de maior valor, conforme a equacao de recorrencia do algoritmo de
comparac ao global (equacao 2.2).
s
i,j
= max
_

_
s
i1,j
+ ins
s
i1,j1
+ sub
s
i,j1
+ del
s
i,0
= i ins, i = 0, 1, . . . , |x|
s
0,j
= j del, j = 1, 2, . . . , |y|
(2.2)
Os valores ins, sub e del sao pontuacoes referentes a insercoes, substituicoes e remoc oes,
respectivamente. Conforme ja citado, um esquema de pontuacao muito utilizado [64]
sugere ins = del = 2 que e a penalidade para inserir um espaco em uma das duas
seq uencias (alinhamento de uma base com um espaco). Para a substituicao, temos sub =
+1 se as duas bases x
i
e y
j
comparadas forem iguais ou sub = 1, caso contrario.
A gura 2.14 mostra a matriz de similaridade obtida com a aplicacao da equacao de
recorrencia (equacao 2.2) nas seq uencias x = AACGT e y = AGT. A seq uencia x e
posicionada ao longo das colunas e y ao longo das linhas da matriz. A primeira linha e a
primeira coluna, conforme a equacao 2.2, sao inicializadas com m ultiplos da penalidade do
espaco (2 com o esquema de pontuacao utilizado). Isto se deve `a existencia de apenas um
alinhamento possvel se uma das seq uencias esta vazia: apenas adicionar tantos espacos
quanto forem os caracteres da outra seq uencia. O escore deste alinhamento e 2k, onde k
e o tamanho da seq uencia nao vazia. Para calcular as demais entradas (i, j) da matriz, so e
preciso obter os valores computados para as tres entradas anteriores: (i1, j), (i1, j 1)
25
e (i, j1), em funcao de haverem apenas tres formas de obter um alinhamento entre x [1..i]
e y [1..j]. De fato, para obter um alinhamento entre x [1..i] e y [1..j], temos as seguintes
escolhas:
Alinhar x [1..i] com y [1..j 1] e combinar um espaco com y [j], ou
Alinhar x [1..i 1] com y [1..j 1] e combinar x [i] com y [j], ou
Alinhar x [1..i 1] com y [1..j] e combinar x [i] com um espaco.
Figura 2.14: Matriz de similaridades das seq uencias x = AACGT e y = AGC.
Os ponteiros nessa matriz indicam qual dos tres valores da equacao de recorrencia foi
a origem da maior pontuacao para a celula em questao. O preenchimento da matriz de
similaridade pode ser feito tanto linha a linha, da esquerda para a direita em cada linha,
ou coluna a coluna, de cima para baixo, em cada coluna. Qualquer outra ordem que torne
disponvel s [i, j 1], s [i 1, j 1], s [i 1, j] quando o valor de s [i, j] for computado,
tambem pode ser utilizada.
Com a matriz preenchida, o segundo passo e identicar o melhor alinhamento glo-
bal. Para isso, e utilizado um procedimento de rastreamento no sentido inverso pela
matriz, chamado backtracking, iniciando pelo elemento s [|x| + 1, |y| + 1], seguindo o dire-
cionamento indicado pelos ponteiros de cada celula visitada ate chegar na entrada s [0, 0]
(gura 2.15). Cada ponteiro usado fornecera uma coluna do alinhamento. Para uma dada
celula (i, j) da matriz, se o ponteiro for uma seta horizontal, ela corresponde a um espaco
inserido em x combinando com y [j]; se for uma seta vertical, entao corresponde a x [i]
combinado com um espaco inserido em y; nalmente, se for uma seta diagonal corres-
ponde a x [i] combinando com y [j]. Como a primeira seq uencia, x, e sempre colocada ao
longo das colunas, um alinhamento otimo pode ser facilmente construdo da direita para
a esquerda se tivermos a matriz S ja calculada.
Note que existem valores que sao origem de mais de um vetor. Se um desses valores
zer parte do percorrimento reverso, todas as possibilidades deverao ser exploradas, pois
cada uma delas representa um alinhamento otimo.
26
Figura 2.15: Obtencao do melhor alinhamento global.
Para o exemplo anterior, o seguintes alinhamento otimos sao obtidos pelo percorri-
mento reverso, com x sendo a linha superior e y a inferior:
A A C G T
A G T
e
A A C G T
A G T
Para determinar a complexidade do algoritmo descrito, notamos que o n umero de
operacoes executadas depende, essencialmente, do n umero de celulas da matriz que devem
ser computados, isto e, do seu tamanho. Assim, supondo duas seq uencias com compri-
mentos m e n, sera gasto um tempo O(mn) nesses calculos e este e o termo dominante
da complexidade de tempo. O espaco utilizado tambem e proporcional ao tamanho da
matriz. Se as seq uencias tiverem o mesmo ou aproximadamente o mesmo tamanho, n,
teremos complexidade de espaco e tempo de O(n
2
), ou seja, uma complexidade quadratica.
2.2.2.2 Comparacao local
O algoritmo de Needleman-Wunsch atribui uma penalidade constante, w
k
= kw
1
,
onde w
1
e a penalidade de insercao de um espaco, para seq uencias de espacos, em uma
das seq uencias alinhadas. No entanto, sob o ponto de vista biologico, quando ocorrem
eventos mutacionais em uma seq uencia, a ocorrencia de k espacos juntos e mais provavel
do que a ocorrencia de k espacos isolados. Em 1981, Smith e Waterman generalizaram
o algoritmo proposto por Needleman e Wunsch incorporando este criterio, que atribui
penalidades para espacos juntos considerando os seus tamanhos (w
k
kw
1
), e propuseram
um metodo de alinhamento local que, diferentemente do metodo de alinhamento global,
identica sub-regioes de maior similaridade entre as seq uencias comparadas [66].
Umalinhamento local de duas seq uencias e denido como um alinhamento entre uma
subseq uencia da primeira seq uencia com uma subseq uencia da segunda. A similaridade
das duas seq uencias e denida como o escore maximo sobre todos os possveis alinhamentos
locais.
Em varias aplicacoes biologicas, a identicacao de regioes locais de similaridade em
27
seq uencias longas e mais signicativa do que a similaridade entre as seq uencias inteiras,
pois o baixo valor desta pode esconder importantes fatos biologicos, so observaveis quando
se consideram as sub-regioes.
O algoritmo de Smith-Waterman e baseado em duas modicacoes no algoritmo de
Needleman e Wunsch:
Quando o escore de um subalinhamento entre duas subsequencias resulta em um
valor negativo, e atribudo escore zero, que indica que o subalinhamento nao deve
ser prolongado;
Nao basta considerar tres celulas da matriz, pois em funcao da penalidade nao cons-
tante para espacos juntos, e preciso vericar todas as celulas na mesma linha e todas
as celulas na mesma coluna. Conseq uentemente, a interpretacao dos valores da ma-
triz e diferente. Cada entrada (i, j) ira armazenar o maior valor de um alinhamento
entre um suxo de x [1..i] e um suxo de x [1..j].
Neste caso, para encontrar o melhor alinhamento local, basta localizar a entrada da
matriz que possui o maior valor de escore e aplicar o procedimento de rastreamento no
sentido inverso ate encontrar uma entrada com escore zero.
No entanto, em funcao do tratamento diferenciado para a atribuicao de penalidades
para espacos juntos, o algoritmo de Smith-Waterman apresenta uma complexidade de
tempo de O(n
3
).
Gotoh [23], em 1982, propos uma forma de reduzir essa complexidade de tempo, modi-
cando o algoritmo de Smith-Waterman por meio de uma limitacao na metrica utilizada
para espa cos juntos. Sem afetar o criterio de computar espacos juntos de tamanhos vari-
ados, ele conseguiu reduzir a complexidade de tempo para O(n
2
), utilizando uma forma
especial de penalidade para estes espacos juntos, chamada funcao de espacos juntos
am, expressa pela formula w
k
= u+vk (u, v 0), onde u expressa a penalidade para in-
serir o primeiro espaco, v indica o custo para estende-lo e k indica o tamanho do conjunto
de espacos juntos. A equacao 2.3 representa a proposta de Gotoh.
s
i,j
= max
_

_
p
i,j
s
i1,j1
+ sub
q
i,j
p
i,j
= max
_
s
i1,j
+ w
1
p
i1,j
+ v
s
i,0
= p
i,0
= q
i,0
= 0, i = 0, 1, . . . , |x|
s
0,j
= p
0,j
= q
0,j
= 0, j = 1, 2, . . . , |y|
(2.3)
q
i,j
= max
_
s
i,j1
+ w
1
q
i,j1
+ v
Se a penalidade do espaco for constante como no algoritmo de Needleman-Wunsch,
a equacao de recorrencia do algoritmo de comparacao local pode ser reduzida para a
equacao 2.4.
28
s
i,j
= max
_

_
s
i1,j
+ w
1
s
i1,j1
+ sub
s
i,j1
+ w
1
0
s
i,0
= 0, i = 0, 1, . . . , |x|
s
0,j
= 0, j = 1, 2, . . . , |y|
(2.4)
Embora nao seja a equacao mais correta do ponto de vista biologico, essa equacao foi
a escolhida para a implementacao feita nessa dissertacao. A ideia e atacar o problema
com uma abordagem mais simples, e uma vez conhecidas suas peculiaridades, estender a
solucao obtida para situacoes mais complexas.
Espaco Linear
A complexidade quadratica em espaco do algoritmo de Smith-Waterman, que reete
a quantidade de memoria necessaria, pode torna-lo inviavel quando seq uencias muito
longas forem comparadas, ja que manter a matriz de similaridades totalmente carregada
em memoria possui um custo muito alto. No entanto, para o calculo da posicao s
i,j
, sao
necessarios apenas os valores s
i1,j
, s
i1,j1
e s
i,j1
. Logo, e preciso manter em mem oria
apenas a linha atual que esta sendo calculada e a linha anterior, para consulta. Com isto,
a complexidade de espaco que era O(n
2
) passa a ser O(2n). A complexidade de tempo
permanece O(n
2
).
29
Captulo 3
HARDWARE
3.1 Sistemas Dedicados
Arquiteturas tradicionais de computadores podem resolver uma diversidade muito
grande de problemas de computacao, desde que lhes sejam submetidos diferentes progra-
mas, cada qual com um proposito especco. Para a maioria das tarefas de computacao,
esta abordagem, centrada na utilizacao de processadores de proposito geral (GPP), e mais
barata e rapida.
O principal foco do projeto de GPPs reside, pois, no desempenho e na funcionalidade
geral a ser proporcionada. Contudo, os custos de fabricacao e projeto de arquiteturas
baseadas em processadores de proposito geral estao aumentando com rapidez [5]. Tais
custos compreendem tres perceptveis aspectos:
Custos de hardware: os processadores de proposito geral sao maiores e mais com-
plexos do que o necessario para resolver uma tarefa especca;
Custos de projeto: unidades funcionais, raramente usadas em determinadas aplicacoes,
podem estar presentes em GPPs, tendendo a consumir uma parte consideravel do
esforco de projeto;
Custos de energia: muita energia e desperdicada por unidades funcionais ou blocos
que nao sao usados durante grande porcao do tempo de processamento.
Considerando-se aplicacoes especcas ou a exigencia de requisitos em termos de con-
sumo, velocidade, tamanho e custos, podem ser adotados tipos especiais de processadores,
voltados para a aplicacao em questao ou otimizados com vistas ao conjunto de requisitos
especicados. Sob esta otica, somente as unidades funcionais necessarias, altamente oti-
mizadas para um conjunto de problemas do mesmo tipo, estao presentes, o que redunda
em economia de area e energia para o algoritmo especco `as aplicacoes.
Dessa forma, sistemas computacionais dedicados sao usados tipicamente em aplicacoes
especcas onde os sistemas de proposito geral nao conseguem obter o desempenho espe-
rado.
30
No desenvolvimento desses circuitos dedicados, o desempenho depende, na maioria das
vezes, mais da arquitetura do circuito do que da tecnologia de fabricacao [12]. Este con-
ceito e largamente utilizado no projeto de sistemas de tratamento de sinais, por exemplo,
onde um processador com baixo custo executa uma ltragem mais rapidamente que um
poderoso Pentium.
Para decidir sobre a utilizacao de um sistema dedicado e a arquitetura mais adequada,
diversos aspectos devem ser levados em conta.
Unidades simples e regulares
Como os sistemas dedicados possuem aplicacao limitada, seu custo deve ser menor
que o benefcio da utilizacao de uma arquitetura de proposito especco. Alem do mais,
como os sistemas dedicados nao sao produzidos em larga escala, os custos de projeto
sao mais importantes que os custos da fabricacao das pecas. Dessa forma, os custos de
projeto devem ser baixos de modo a tornar esses sistemas mais atrativos que os sistemas
de proposito geral.
Felizmente, a utilizacao de arquiteturas apropriadas pode reduzir signicativamente
os custos de sistemas de proposito especco. Se uma determinada estrutura puder ser
decomposta em poucas unidades menores e mais simples, e essas serem utilizadas repeti-
damente, uma grande economia pode ser obtida. Isto e especialmente verdade em projetos
de circuito integrados VLSI, onde um simples chip contem milhares de componentes. Em
adicao, sistemas baseados em unidades simples e regulares sao modulares e podem se
ajustar a diversos criterios de performance.
Operacoes de entrada e sada
Tipicamente, um sistema dedicado deve se comunicar com o mundo externo, recebendo
dados e entregando resultados. Nao adianta o sistema fornecer resultados em uma veloci-
dade maior que o mundo externo e capaz de recebe-los. Assim, as operacoes de entrada e
sada (E/S) afetam bastante o desempenho geral de sistemas com arquiteturas especcas.
Outra diculdade e quando calculos extensos devem se feitos em sistemas de pequeno
porte. Neste caso, a computacao deve ser decomposta em partes menores e os dados tem-
porarios gerados armazenados para futuras referencias. Isso aumenta muito a comunicacao
com o ambiente externo.
Assim, varias consideracoes devem ser feitas sobre como minimizar o acesso externo,
como os requisitos de E/S afetam o sistema e sua memoria interna e como a largura de
banda das operacoes de entrada e sada pode limitar o ganho de velocidade (speed-up).
31
Concorrencia
O hardware e inerentemente paralelo. Ao se ligar um circuito eletronico, todos os seus
transistores estao aptos a realizar alguma funcao. A utilizacao conveniente do paralelismo
encontra, basicamente, duas diculdades: raciocnio serial e dependencia de dados. O
primeiro problema e inerente `a nossa forma de raciocinar, o segundo, advem das aplicacoes,
pois alguns resultados so podem ser processados apos o termino de outros.
Em termos de paralelismo, deve-se distinguir o modelo de hardware que se esta tra-
tando, ou pelo menos, seu nvel de abstracao. Existe o paralelismo explcito de processos,
formado por um conjunto de maquinas, como em uma rede de computadores, ou por um
conjunto de processadores atuando em conjunto.
Um outro nvel de paralelismo e aquele de processos de hardware completamente dis-
tintos, executando funcoes complementares. Como exemplo, podemos ter um micropro-
cessador operando em paralelo com um temporizador e uma interface serial.
Finalmente, tem-se o paralelismo em nvel de operacoes de hardware. Por exemplo,
no calculo da equacao y = x
2
+ 3x + 1, a exponenciacao pode ser feita em paralelo com a
multiplicacao, pois nao ha dependencia de dados para essas operacoes. Em geral, quanto
mais paralelismo estiver presente, mais rapidamente um algoritmo pode ser computado.
Contudo, maior sera o preco do hardware nal, seja na utilizacao de uma maior area de
silcio em um CI, seja na quantidade de celulas logicas necessarias em um FPGA.
Para limitar esse problema no paralelismo de operacoes, a questao a ser respondida e
qual o n umero mnimo de passos de relogio e qual o mnimo de componentes necessarios
para executar o algoritmo na maior velocidade possvel. As duas caractersticas combina-
das tendem a ser conitantes. Para maior velocidade, precisa-se de um mnimo de passos,
mas para executar o algoritmo em um mnimo de passos, maior quantidade de hardware
deve estar disponvel.
Existem algoritmos que permitem descobrir o menor n umero de passos necessarios,
dada uma restricao de recursos. Entre esses, podemos citar o ASAP (as soon as possi-
ble), ALAP (as late as possible) e ordenacao de lista (list scheduling) [20][48][49]. Nesses
algoritmos, as operacoes sao distribudas em diversos passos de relogio, com o ASAP pri-
orizando as operacoes para o primeiro ciclo possvel, o ALAP colocando as operacoes o
mais proximo do ultimo ciclo de controle possvel e a ordenacao por listas utilizando as
tabelas do ASAP e ALAP para efetuar suas decisoes.
Controle e comunicacao
Quando um elevado n umero de processadores opera em paralelo, os custos de controle
(sincronizacao) e comunicacao comecam a ser tornar signicativos. Se a granularidade for
na, para facilitar o balanceamento de carga, podem ocorrer sobrecargas de comunicacao
32
e sincronizacao.
Na an alise do sistema, devemos vericar se o algoritmo a ser abordado com a ar-
quitetura dedicada suporta um alto grau de paralelismo e ao mesmo tempo pode ser
implementado com um controle e comunicacao simples e regular.
No paralelismo de operacoes, tambem pode-se ter um alto custo de comunicac ao e
controle. Imagine que uma constante deva ser somada a 100 n umeros, disponveis em 100
registradores diferentes. Um conjunto de 100 somadores permitiria a soma em apenas
um ciclo de relogio. Se cada registrador pudesse ser carregado no mesmo ciclo, a cada
ciclo ter-se-iam 100 somas. Contudo, o custo de tal arquitetura e muito alto, pois alem
dos 100 somadores e registradores, seriam necessarios 100*n bits de entrada, onde n e
o n umero de bits de cada registrador, e, provavelmente, muito mais bits de sada pois
o resultado de cada soma sera maior que os valores somados. Para piorar, se os dados
para os registradores vierem de uma memoria externa e tambem devam ser armazenados
externamente, o problema adquire novas dimensoes.
A conclusao e que, embora o paralelismo efetivamente acelere computacoes, seu custo
deve ser medido nao somente em termos de operadores a mais, mas tambem no custo do
controle e comunicacao para manterem o circuito paralelo ativo e funcional.
3.2 Arquiteturas Sistolicas
Uma possvel solucao para o projeto de sistemas dedicados sao as arquiteturas sistolicas.
Esse conceito foi desenvolvido na universidade Carnegie-Mellon e originalmente proposto
para a implementacao em VLSI de algumas operacoes sobre matrizes.
A origem desse nome vem da sstole, movimento de contracao no qual o coracao bom-
beia o sangue para as arterias, da mesma forma que a memoria bombeia dados para
dentro da estrutura sistolica e que depois retornam processados para essa memoria (-
gura 3.1).
Figura 3.1: Aspecto geral de uma arquitetura sistolica.
Um sistema sistolico consiste em um conjunto de celulas (chamadas de elementos
de processamento) interconectadas, cada uma capaz de realizar alguma operacao sim-
ples [37]. Alem disso, o controle e a comunicacao entre as celulas e simples e regular.
Tipicamente, as celulas de uma estrutura sistolica estao organizadas na forma de matrizes
33
(unidimensionais ou bidimensionais) ou em arvores (gura 3.2). A comunicacao com o
mundo externo ocorre apenas nas celulas das bordas do sistema.
Figura 3.2: Alguns tipos de estruturas sistolicas.
O princpio basico de um sistema sistolico e substituir um elemento de processamento
complexo por uma matriz de elementos de processamento simples e, conseq uentemente,
rapidos, todos capazes de manipular ecientemente um particular dado de entrada (que
percorre a estrutura), atingindo altas taxas de processamento com modesta utilizacao de
memoria.
Para se avaliar a possibilidade de utilizacao dessa arquitetura em um particular pro-
blema, as seguintes caractersticas do algoritmo ou sistema devem ser analisadas:
1. m ultiplos usos de um unico dado de entrada: devido a essa propriedade, pode-se
obter alta performance com poucas operacoes de entrada e sada;
2. uso intensivo de concorrencia: o poder elevado de processamento de uma arquitetura
sistolica vem do uso de muitas celulas simples e rapidas atuando em paralelo no lugar
de um poderoso e unico processador (ou poucos processadores);
3. pode-se decompor a solucao em poucas estruturas simples: como uma grande quan-
tidade de elementos de processamento e utilizada, nao deve haver muita variedade
desses elementos e eles devem ser o mais simples possvel;
4. controle do uxo de dados simples e regular: em um sistema sistolico, o unico sinal
global deve ser o relogio do sistema. Os outros sinais de controle e comunicacao
devem car restritos `as celulas adjacentes da estrutura.
Resumindo, um sistema sistolico baseado nesses criterios sera simples, modular e ex-
pansvel, com alta performance e possuindo poucos acessos `a memoria externa.
Devido a essas propriedades, as arquiteturas sitolicas sao adequadas para tarefas com-
putacionalmente intensas, mas com poucas operacoes de entrada e sada.
34
Dentre as possveis aplicacoes para esse tipo de arquitetura, destacam-se: DFT (Discrete
Fourier Transform) e FFT (Fast Fourier Transform), convolucao, interpolacao, multi-
plicacao de matrizes, triangularizacao de matrizes (solucao de sistemas lineares), ordena-
mentos, reconhecimento de voz, programacao dinamica, etc.
3.3 Sistemas Reconguraveis
A evolucao contnua dos algoritmos e a diversidade das aplicacoes tem levado `a con-
cepcao de ambientes de hardware baseados em arquiteturas reconguraveis que possibili-
tem a implementacao de diferentes algoritmos em um mesmo suporte fsico.
Muitas aplicacoes emergentes em telecomunicacoes e multimdia necessitam que suas
funcionalidades permanecam exveis mesmo depois do sistema ter sido manufaturado [26].
Tal exibilidade e fundamental, uma vez que requisitos dos usuarios, caractersticas dos
sistemas, padroes e protocolos podem mudar durante a vida do produto. Essa maleabili-
dade tambem pode prover novas abordagens de implementacao voltadas para ganhos de
desempenho, reducao dos custos do sistema ou reducao do consumo geral de energia.
A exibilidade funcional e comumente obtida atraves de atualizacoes de software, mas
desta forma a mudanca e limitada somente `a parte programavel dos sistemas. Desenvol-
vimentos recentes na tecnologia de matrizes de elementos logicos programaveis no campo
(Field-Programmable Gate Arrays, ou FPGAs) tem introduzido suporte para modicacoes
rapidas e em tempo de execucao do hardware do sistema.
Essas modicacoes referem-se a mudancas em circuitos digitais via reconguracao.
A implementacao de sistemas que exigem exibilidade, alto desempenho, alta taxa de
transferencia de dados e eciencia no consumo de energia sao possibilitadas por essas
tecnologias. Isto inclui aplicacoes de televisao digital, sistemas de computacao de alto de-
sempenho, processamento de imagens em tempo real, produtos para consumo atualizaveis
remotamente, entre outros.
Alem das caractersticas citadas acima, a recongurabilidade tambem contribui para
a economia de recursos: quando uma dada tarefa pode ser realizada em varias fases, uma
diferente conguracao pode ser carregada para cada fase seq uencialmente [70]. Desta
forma o tamanho do sistema pode ser menor, o que implica na reducao de preco.
Para nalizar, a recongurabilidade tambem faz do desenvolvimento e teste de hard-
ware tarefas mais rapidas e mais baratas. Com o advento das FPGAs, a engenharia de
hardware foi capacitada a implementar projetos em nvel de chip sem ter que fabrica-lo.
Segundo Page [54], ha cinco estrategias de projeto pelas quais programas podem ser
embutidos em arquiteturas reconguraveis, sendo cada modelo mais apropriado a um
especco escopo de aplicacoes, apresentando diferentes compromissos entre custo e de-
sempenho (gura 3.3):
Modelo de hardware puro: um dado algoritmo e convertido em uma unica descri-
35
cao de hardware a qual e carregada em um FPGA. A conguracao da-se em tempo
de projeto e este modelo pode ser implementado a partir de linguagens de descricao
de hardware convencionais e das ferramentas de sntese atualmente disponveis.

E
interessante para o projeto e rapida prototipacao de circuitos dedicados;
Modelo de processadores voltados para uma aplicacao: neste caso, um algo-
ritmo e compilado e obtem-se dois resultados: um codigo de maquina abstrata e um
processador abstrato. A seguir, as partes sao otimizadas para produzir a descricao
de um processador de aplicacao especca e o codigo de maquina para ele;
Modelo de reutilizacao seq uencial: a principal utilidade desta estrategia e no-
tada em situacoes nas quais determinado algoritmo e por demais extenso para ser
implementado nos dispositivos disponveis, ou ainda, quando o projeto apresenta
restricoes de area por razoes economicas ou de engenharia. Deste modo, o projeto
e subdividido em varias partes, as quais sao submetidas a diferentes dispositivos,
redundando em um conjunto de passos de reconguracao. Os ganhos relacionados
com a reutilizacao do hardware devem ser balanceados com o tempo que e gasto
com a reconguracao;
Modelo de m ultiplo uso simultaneo: se porventura houver uma ampla disponi-
bilidade de dispositivos programaveis, varios algoritmos podem estar residentes e
serem executados simultaneamente, interagindo em diferentes graus de acoplamento
com o processador hospedeiro.

E um modelo menos comum, requerendo mais area
do que a estrategia de reutilizacao seq uencial, mas e um metodo interessante para
a exploracao da computacao reconguravel.
Modelo de uso sob demanda: e muito interessante para a computacao recon-
guravel. Pode ser adotado em uma ampla variedade de aplicacoes quando existe a
possibilidade de sistemas computacionais serem construdos onde o hardware nao
existe todo ao mesmo tempo, mas cuja demanda de tempo-real do sistema dita qual
parte do hardware deve ser construda e qual parte deve ser destruda. Ha uma
analogia razoavel com sistemas de memoria virtual, e por isto esse esquema pode
ser chamado de hardware virtual. Sua utilizacao cabe perfeitamente em sistemas
de tempo real e em sistemas que apresentam uma grande quantidade de funcoes e
operacoes nao-concorrentes.
Sob a otica da capacidade de reconguracao proporcionada pelo projeto da arquitetura
recongur avel, Adario [5] apresenta uma generalizacao dos modelos de execucao denidos
por Page. Esta abordagem divide os modelos de projeto em tres classes de capacidade
de programacao, considerando o n umero de conguracoes e o instante em que ocorre
cada reconguracao:
36
Figura 3.3: Modelos segundo a classicacao de Page.
Projeto Estatico: o circuito possui uma unica conguracao que nunca e modi-
cada. O dispositivo programavel e totalmente programado para executar uma unica
func ao que permanece inalterada durante toda vida util do sistema. Esta classe nao
explora a exibilidade provida pela reconguracao; a unica vantagem aproveitada
diz respeito `as facilidades de projeto e prototipacao conferidas pela reconguracao;
Projeto Estaticamente Reconguravel: o circuito apresenta varias conguracoes,
e as reconguracoes acontecem apenas ao nal de cada tarefa de processamento. De-
pendendo da granularidade das tarefas executadas entre sucessivas reconguracoes,
pode-se dizer que este modelo efetua reconguracao em tempo de execucao. Neste
modelo, os dispositivos programaveis sao usados de forma mais proveitosa. Arqui-
teturas desta classe sao chamadas de SRA Statically Recongurable Architecture;
Projeto Dinamicamente Reconguravel: o circuito tambem apresenta varias
conguracoes e as reconguracoes acontecem, de fato, em tempo de execucao. Este
tipo de projeto utiliza ecientemente as arquiteturas reconguraveis. O overhead
acarretado pela reconguracao em tempo de execucao precisa ser bem caracterizado
no domnio do conjunto das possveis conguracoes. As arquiteturas resultantes
desta classe sao denominadas DRA Dynamically Recongurable Architecture.
As vantagens que podem ser auferidas da reconguracao em tempo de execucao de-
pendem muito do algoritmo em questao e da granularidade das tarefas que o compoem.
Por sua vez, o overhead de reconguracao esta fortemente vinculado `a microarquitetura
das FPGAs utilizadas.
37
Geralmente, as aplicacoes, cuja implementacao em arquiteturas reconguraveis e de-
sejavel, apresentam tres caractersticas basicas, a saber[4]:
Regularidade: implica na execucao das mesmas operacoes basicas repetidamente;
Alta concorrencia: refere-se `a existencia de um grande n umero de operacoes que
sao efetuadas concomitantemente;
Dados com granularidade na: diz respeito ao pequeno tamanho dos operandos.
Dadas tais caractersticas, podem ser arroladas aplicacoes passveis de implementacao
profcua em arquiteturas reconguraveis. Segundo Adario[4], merecem especial atencao
aplicacoes voltadas para: criptograa e compressao, casamento de padroes, ordenacao,
simulacao de sistemas fsicos, processamento de vdeo e de imagens, aritmetica especiali-
zada.
Para que se possa tirar proveito de uma implementacao em arquitetura reconguravel,
dois passos devem ser seguidos:
Identicar, em um aplicacao, a porcao regular e a secao crtica ao desempenho;
Avaliar as opcoes para o mapeamento da aplicacao em dispositivos programaveis.
Esta consideracao e deveras importante, pois a melhor implementacao em uma ar-
quitetura reconguravel pode ser muito diferente, no que tange ao estilo de pro-
gramacao, de uma implementacao baseada em GPP.
3.3.1 FPGA
Os FPGAs (Field-Programmable Gate Arrays) foram introduzidos no mercado em 1985
pela Xilinx e foram responsaveis pela grande expansao dos sistemas reconguraveis. Esses
dispositivos permitem a integracao de logica e memoria em um unico circuito, alem de
serem programaveis, permitindo a reconguracao do hardware e rapida prototipacao de
sistemas digitais.
A estrutura basica do FPGA (gura 3.4) pode variar segundo o fabricante do mesmo,
mas sao compostos, basicamente, dos seguintes recursos:
1. Funcoes logicas programaveis de n entradas (blocos logicos), onde n varia com a
famlia e fabricante do FPGA;
2. Rede de conexao para interligar entre os diversos blocos logicos existentes;
3. Flip-ops ou registradores (blocos logicos) para o armazenamento de informacoes;
4. Amplicadores de corrente de entrada e sada;
38
Figura 3.4: Estrutura interna de um FPGA.
5. Memoria RAM interna nos dispositivos mais modernos.
FPGAs que possuem um pequeno n umero de poderosos blocos logicos reconguraveis
sao classicados como FPGAs com granulacoes grandes, enquanto que os que possuem
grande n umero de blocos logicos simples, sao classicados como FPGAs com granulacoes
pequenas [70]. Um unico bloco logico em um FPGA com grande granulacao e capaz de
adicionar ou comparar dois n umeros, enquanto que em um FPGA com granularidade na
sao necess arios mais de um bloco logico para efetuar as mesmas operacoes.
3.3.2 Sntese de sistemas reconguraveis
Os FPGAs sao componentes bastante versateis, capazes de implementar uma innidade
de circuitos logicos combinacionais e seq uenciais. Entretanto, a tarefa de transformar o
projeto de um circuito digital em um circuito mapeado na tecnologia de FPGA e bastante
complexa.
Alem disso, os FPGAs possuem uma arquitetura interna que, embora possua um n ucleo
comum, varia dentro de famlias de um mesmo fabricante e tambem entre fabricantes
diferentes. Devido a essa diversidade, uma outra tarefa difcil para o projetista e conhecer
todas essas arquiteturas internas e manipular seus elementos programaveis (EABs, CLBs
e interconexoes) da forma mais otimizada para a arquitetura em questao.
Para automatizar os processos envolvidos nos projetos com esses dispositivos e abstrair
as dependencias tecnologicas, diversas ferramentas foram criadas, algumas de uso geral
e outras dependentes da tecnologia de um particular fabricante. A grande utilizacao
dos FPGAs e devida ao suporte dado por esses programas de automacao de projetos
eletronicos.
Fluxo de projeto
O uxo de projeto para FPGA pode ser dividido basicamente nas seguintes fases:
especicacao do circuito, sntese, simulacao e conguracao do FPGA, como pode ser visto
39
na gura 3.5.
O projeto comeca com a descricao do circuito. Nesta etapa pode-se optar por duas
metodologias de especicacao, o desenho de um diagrama esquematico ou a utilizacao de
uma linguagem de descricao de hardware. A primeira abordagem normalmente requer fer-
ramentas proprietarias do fabricante do FPGA escolhida, prejudicando sua portabilidade.
Alem disso, as alteracoes no projeto sao mais complexas que nas linguagens de descricao.
Por esses motivos, deve ser evitada.
Figura 3.5: Fluxo de projeto utilizando FPGAs.
Para uma especicacao baseada em linguagens de descricao de hardware, as linguagens
Verilog [18] e VHDL [10] sao as mais utilizadas. Verilog e utilizado basicamente no mercado
americano, enquanto que a linguagem VHDL e um padrao mundial.
A etapa de sntese, em geral, e executada por uma ferramenta do fabricante do FPGA
escolhida, pois esta intimamente ligada com sua arquitetura interna. Ela pode ser dividida
nas seguintes partes:
otimizacao logica: manipula as equacoes logicas geradas na etapa inicial, visando
otimizar o circuito nal;
mapeamento tecnologico: consiste na transformacao das equacoes logicas otimizadas
em um circuito que utiliza os blocos logicos presentes no FPGA alvo. Nesta fase
tambem sao realizadas minimizacoes nas quantidades de blocos logicos e caminho
crtico (caminho com maior atraso combinacional) do circuito;
posicionamento: e denida a distribuicao os blocos logicos na matriz do FPGA. Para
isso, o arranjo dos blocos tenta minimizar o comprimento total das interconexoes;
roteamento: e quando ocorre a interligacao dos blocos logicos dispostos na matriz
do FPGA por intermedio da rede de interconexoes programavel.
40
A sntese, embora totalmente automatizada, permite a intervencao de projetistas ex-
perientes, principalmente na fase de posicionamento, que e bastante crtica para a perfor-
mance geral do sistema.
Na fase de simulacao e efetuado um teste da logica do circuito descrito. Varios
estmulos sao aplicados em suas entradas e depois e vericado o comportamento ou as
respostas obtidas para esses estmulos. Alem disso, e possvel vericar os atrasos internos,
ou seja, tempo que um sinal de sada leva para ser alterado apos a transicao de um sinal
de entrada, determinar caminhos crticos e a velocidade maxima de operacao.
Ja no processo de sntese, e gerado um arquivo de conguracao do FPGA. Nao sendo
descoberto nenhum problema durante a simulacao, esse arquivo pode ser enviado para o
FPGA, de maneira que ele passe a operar de acordo com o circuito projetado. Como o
FPGA e volatil, o arquivo gerado pode ser armazenado em uma EEPROM (electrically
erasable programable read-only memory) permitindo que o FPGA se auto congure toda
vez que o circuito e ligado.
3.3.3 Linguagens de descricao de hardware e VHDL
No incio dos anos 80, o departamento de defesa americano (DoD) estava preocupado
com a manutencao de seus equipamentos eletronicos e em aumentar a produtividade dos
projetistas, devido aos constantes avancos tecnologicos que ocorrem na area. Alem disso,
varias empresas forneciam equipamentos e desenvolviam projetos para governo.
No programa VHSIC (very high speed integrated circuits) foi feito um esforco de pa-
dronizacao por uma linguagem que pudesse descrever a estrutura e funcionalidade dos
circuitos integrados, que fosse de facil entendimento por qualquer projetista e possibili-
tasse simulacoes dos circuitos nela descritos. Desse modo, projetos que utilizassem essa
linguagem poderiam ser facilmente migrados de uma tecnologia para outra, acompanhando
as evolucoes do setor, e os projetos desenvolvidos para o DoD pelos diversos fornecedores
seriam padronizados e sua manutencao facilitada.
Esse esforco resultou na linguagem VHDL (VHSIC hardware description language) [42],
que passou a ser um padrao aceito pelo IEEE [1]. Como todos os padroes do IEEE, a
VHDL e revista a cada cinco anos, e em 1992, foi proposta uma versao revisada, adotada
em 1993 com o nome de IEEE-1164.
No incio da decada de 90, a VHDL foi usada primeiramente para projetos em ASIC
e foram desenvolvidas ferramentas para automatizar o processo de criacao e otimizacao
das implementacoes. Na segunda metade da decada, o uso de VHDL em sntese moveu-se
para a area de dispositivos logicos programaveis (CPLDs e FPGAs).
VHDL possibilita descricoes tanto em baixo nvel (conexoes entre componentes como
portas E, OU, etc.) quanto em nvel mais abstrato de comportamento. Assim, as cons-
trucoes em VHDL sao divididas em tres categorias, cada uma signicando um nvel dife-
rente de abstracao:
41
Comportamental: o circuito e denido na forma de um algoritmo, utilizando cons-
truc oes similares `aquelas de linguagens de programacao;
Fluxo de dados: tem-se a visao dos dados como um uxo atraves do circuito, da
entrada ate a sada. Uma operacao e denida em termos de uma colecao de dados,
expressados como comandos concorrentes;
Estrutural: a visao mais proxima do hardware. Um modelo onde os componentes
do circuito sao instanciados e as ligacoes entre eles descritas.
Contudo, a maioria das ferramentas de sntese ainda nao aceita descricoes puramente
comportamentais, onde nao se tem um relogio explcito, nao se consegue inferir os regis-
tradores e o conjunto de comandos e seq uencial, quase como um programa em linguagem
C. Assim, as descricoes comportamentais, embora mais abstratas, devem levar em conta
diversos aspectos de um projeto de hardware para poderem ser sintetizadas corretamente.
A estrutura de um programa escrito em VHDL baseia-se em nveis hierarquicos. Re-
sumidamente, podemos denir 4 desses nveis:
Pacotes: permite agregar em um projeto de varios componentes ou entidades previ-
amente denidos. Pode ser visto como uma biblioteca de componentes dentro de
um projeto. Aceita tambem denicoes de tipos e funcoes;
Entidades: uma entidade e qualquer componente VHDL que tenha um conjunto de
portas de comunicacao, com entradas e sadas. Uma entidade descreve um compo-
nente como uma caixa-preta, ou seja, apenas suas portas de entrada e sada sao
visveis;
Arquitetura: e um conjunto de primitivas em VHDL que farao a efetiva descricao do
hardware.

E aqui que as abordagens comportamental, uxo de dados ou estrutural
sao denidas;
Processos: e uma abstracao de hardware que esta sempre atuando. Um processo e
basicamente o modelo de um componente fsico, que possui uma lista de sinais dos
quais depende (chamada de lista de sensitividade). Os processos podem ser sncronos
ou assncronos e diversos deles podem ser denidos dentro de um arquitetura. Os
processos descritos em uma arquitetura sao sempre concorrentes, mas o uxo dentro
de um processo e seq uencial.
Outra caracterstica importante da VHDL e que ela e uma linguagem fortemente ti-
pada, aceitando poucas conversoes entre os tipos de dados aceitos.
Um programa escrito em VHDL possui o seguinte aspecto:
42
-- Uso de bibliotecas. A terceira clausula use faz refer^encia a um pacote
-- chamado componentes
library IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use work.componentes.all;
-- Definic~ao da entidade
entity MULT is
generic (size : integer := 16);
port (NUM1, NUM2 : in std_logic_vector(size-1 downto 0);
CLK, RST : in std_logic;
RES: out std_logic_vector(size*2-1 downto 0));
End MULT;
-- Definic~ao da arquitetura
architecture CALC of MULT is
-- Definic~ao de sinais internos
signal X,X1 : std_logic_vector(size downto 0);
begin
-- Definic~ao de um processo sncrono
REG: process (CLK, RST)
Begin
if RST = 1 then
ESTADO <= n0;
elsif CLKevent and CLK = 1 then
ESTADO <= PROX_ESTADO;
end if;
end process REG;
-- Definic~ao de um processo assncrono
SIGX1: process (X)
Begin
X1 <= X xor "00000000000000001";
End process SIGX1;
End CALC;
A VHDL nao e a unica linguagem de descricao de hardware disponvel. Entre outras,
podemos citar Verilog, SystemC, HandelC, SDL. Entretanto, a maioria dos fabricantes de
FPGAs fornecem ferramentas apenas para as linguagens VHDL e Verilog.
Dentre as vantagens da utilizacao de uma linguagem de descricao de hardware, pode-
mos citar [12]:
permitem maior poder de abstracao ao projetista, portanto, projetos mais complexos
podem ser atacados;
a descricao feita e bem denida, pois essas linguagens possuem regras sintaticas e
semanticas que nao permitem dupla interpretacao;
43
a descricao da especicacao do circuito serve como documentacao e explicita os
objetivos do projeto;
o uso da sntese melhora a produtividade;
a padronizacao dessas linguagens resulta em portabilidade, tornando o codigo reu-
tiliz avel em diferentes ambientes de desenvolvimento.
Evidentemente, esse estilo de projeto nao possui apenas vantagens. Alguns problemas
permanecem ou sao criados pela utilizacao dessas linguagens:
investimento inicial em educacao e treinamento dos projetistas;
a sntese e limitada e muitos problemas devem ser particionados `a mao (mas, nesse
caso, seriam mais dicilmente resolvidos pelo projetista humano);
nao e solucao para todo tipo de projeto;
nao atende a algumas restricoes serias, por exemplo, circuitos voltados ao baixo
consumo, uso de pipeline, etc;
nao existe (ainda) a sntese de circuitos analogicos e mistos.
3.4 Somadores
3.4.1 Meio-somador (half adder)
Executa a soma entre dois bits, gerando uma sada S dada pela soma desses dois bits
e uma sada V
A
que representa o vai-um dessa soma, segundo a tabela a seguir.
Tabela 3.1: Tabela-verdade do meio-somador (half adder).
A
0
B
0
V
A0
S
0
0 + 0 = 0 0
0 + 1 = 0 1
1 + 0 = 0 1
1 + 1 = 1 0
Da tabela 3.1, obtem-se as seguintes equacoes que descrevem a relacao entre as entradas
e as sadas de um meio-somador:
S
0
= A
0
B
0
e (3.1)
V
A0
= A
0
B
0
, (3.2)
o que leva `a implementacao esquematizada na gura 3.6.
44
Figura 3.6: Diagrama esquematico do meio-somador.
3.4.2 Somador completo (full adder)
Executa a soma entre tres bits sendo um deles o vem-um recebido de um bit menos
signicativo. Gera uma sada S dada pela soma desses bits e uma sada V que representa
o vai-um dessa soma.
A seguir, e apresentada a tabela-verdade que descreve o somador completo. Desta
tabela, sao obtidas as equacoes 3.3 e 3.4 para as sadas do somador.
Tabela 3.2: Tabela-verdade do somador completo (full adder).
V
E1
A
1
B
1
V
A1
S
1
0 + 0 + 0 = 0 0
0 + 0 + 1 = 0 1
0 + 1 + 0 = 0 1
0 + 1 + 1 = 1 0
1 + 0 + 0 = 0 1
1 + 0 + 1 = 1 0
1 + 1 + 0 = 1 0
1 + 1 + 1 = 1 1
S
1
= V
E1
(A
1
B
1
), (3.3)
V
A1
= A
1
B
1
+ V
E1
(A
1
+ B
1
). (3.4)
A equacao 3.4 pode ainda ser reescrita como
V
A1
= A
1
B
1
+ V
E1
(A
1
B
1
), (3.5)
o que conduz ao circuito esquematizado na gura 3.7.
3.4.3 Somador ripple carry
Para somarmos n umeros com dois ou mais bits podemos utilizar o somador completo
obtido anteriormente e conectarmos os mesmos em cascata (um seguido do outro). Por
45
Figura 3.7: Diagrama esquematico do somador completo.
Figura 3.8: Diagrama de um somador ripple carry de 4 bits.
exemplo, para somarmos dois n umeros (A + B) de quatro bits, montamos a estrutura
mostrada na gura 3.8.
No primeiro somador (de ordem 0, bit menos signicativo) temos que fazer V
0
= 0 pois
nao temos nenhum bit vindo de uma etapa anterior. Poderia tambem ter sido utilizado o
meio-somador para essa primeira etapa, ja que ele nao possui essa entrada de vem-um.
A sada vai-um de um somador de ordem n e conectada na entrada vem-um de
um somador de ordem n+1. Da a origem do nome ripple carry, o vai-um (carry) vai
se propagando, a partir do primeiro somador (bit 0), ate o ultimo somador (bit mais
signicativo).
Isso torna esse somador lento, ja que o sinal V
4
(o vai-um do ultimo somador) deve
aguardar o sinal V
3
, que por sua vez tem que aguardar o sinal V
2
e assim por diante.
Supondo que o atraso (tempo para que o sinal de sada se estabilize apos uma variacao
no sinal de entrada) de cada etapa seja de t, o sinal V
4
so estara estavel apos um tempo
de 4t. Para somadores de maior ordem (8, 16, 32 bits) esse atraso crescera linearmente.
3.4.4 Somador com vai-um antecipado (carry look ahead)
Ao inves de esperar com que o sinal de vai-um (carry) se propague por todas as
etapas ate a ultima e dado que os bits dos dois n umeros a serem somados ja estao estaveis
na entrada, pode-se estimar com antecedencia o valor que a sada vai-um tera em cada
etapa. Tomando por base a equacao do sinal vai-um obtida no somador completo,
podemos escrever: V
i+1
= A
i
B
i
+V
i
(Ai Bi) V
i+1
= G
i
+P
i
V
i
, onde G
i
= A
i
B
i
e designado generate carry e P
i
= (A
i
B
i
) e designado propagate carry. Assim, temos:
46
_

_
V
1
= G
0
+ P
0
V
0
V
2
= G
1
+ P
1
V
1
= G
1
+ P
1
G
0
+ P
1
P
0
V
0
V
3
= G
2
+ P
2
V
2
= G
2
+ P
2
G
1
+ P
2
P
1
G
0
+ P
2
P
1
P
0
V
0
V
4
= G
4
+ P
3
V
3
= G
3
+ P
3
G
2
+ P
3
P
2
G
1
+ P
3
P
2
P
1
P
0
V
0
(3.6)
Os sinais S
i
s, por sua vez, podem ser obtidos a partir dos sinais P
i
s gerados:
S
i
= V
i
(A
i
B
i
) = V
i
P
i
. (3.7)
A gura 3.9 ilustra um somador de 4 bits com vai-um antecipado.
Figura 3.9: Diagrama de um somador de 4 bits com vai-um antecipado.
Note que o ultimo sinal de vai-um (V
4
) exigiria em seu calculo um tempo dado pelo
atraso da operacao OU-Exclusivo (XOR) utilizada nos P
i
s (enquanto isso os Gis tambem
estariam sendo calculados), mais o atraso da operacao E (AND) entre os P
i
s calculados
e nalmente o atraso da operacao OU (OR). Esse tempo e praticamente igual ao tempo
que o somador completo leva para gerar em sua sada os sinais de soma e vai-um. Dessa
forma, o tempo de resposta desse somador e equivalente ao de apenas uma etapa do
somador anterior (ripple carry).
Note ainda que a adicao de mais etapas nao altera o tempo de resposta desse somador
ja que os sinais V
i
s levam o mesmo tempo para serem calculados.
Entretanto, a adicao de mais etapas torna a logica combinacional desse somador ex-
tremamente complexa. Assim, os somadores que utilizam esse esquema fazem uso de
modulos de 4 bits ligados em uma estrutura hierarquica. Cada modulo deve gerar os
sinais G
G
e P
G
, generate group e propagate group, respectivamente. Esses dois sinais nada
mais sao do que o sinal V
4
desmembrado, sendo calculados como:
G
G
= G
3
+ P
3
G
2
+ P
3
P
2
G
1
+ P
3
P
2
P
1
G
0
, e (3.8)
P
G
= P
3
P
2
P
1
P
0
. (3.9)
A seguinte gura ilustra o diagrama de blocos de um somador carry look ahead de 16
bits:
47
Figura 3.10: Diagrama de um somador de 16 bits com vai-um antecipado.
A logica combinacional utilizada nesse somador de 16 bits e a mesma utilizada em
cada um dos somadores de 4 bits.
3.4.5 Subtrator
Para construirmos um subtrator podemos aproveitar uma das propriedades das portas
XOR (OU-Exclusivo) de atuar como um inversor controlado e que uma subtracao pode
ser efetuada atraves de uma soma se o n umero a ser subtrado estiver representado em
complemento de 2: A B = A + (B) = A + (B + 1) = A + B + 1.
O circuito abaixo pode somar ou subtrair dois n umeros de 4 bits de acordo com o sinal
de controle C. Se C = 0, temos S = A + B e se C = 1, S = A B (e despreza-se o
vai-um nal).
Figura 3.11: Diagrama de um somador-subtrator de 4 bits.
3.5 Matrizes esparsas
Matrizes esparsas sao aquelas que possuem uma grande quantidade de elementos iguais
a zero. Esse tipo de matriz pode ser mais ecientemente armazenada se apenas os ele-
mentos diferentes de zero forem guardados.
Existem diversos metodos para efetuar esse armazenamento [63][19]. Nesses esque-
mas, os elementos diferentes de zero sao armazenados de forma contnua na memoria e,
48
dependendo do metodo adotado, tambem uma limitada quantidade de zeros. Isto, e claro,
requer uma forma de saber como os elementos armazenados se encaixam na matriz com-
pleta. Essas diversas formas de armazenamento tambem permitem que operacoes sobre
matrizes (soma, multiplicacao) sejam efetuadas diretamente sobre a matriz reduzida, sem
a necessidade de se restaurar a matriz completa.
3.5.1 Compressed Row Storage (CRS)

E o metodo mais geral de armazenamento junto com o CCS. Ele nao efetua nenhuma
suposicao acerca da estrutura da matriz esparsa, mas tambem nao armazena nenhum
elemento desnecessario. Por outro lado, nao e muito eciente, precisando de passos adici-
onais (enderecamento indireto) quando se efetuam operacoes (multiplicacao de matrizes,
por exemplo) sobre a forma reduzida obtida.
Dada uma matriz A
i,j
esparsa e assimetrica, denimos nnz como a quantidade de
elementos diferentes de zero em A. Nesse metodo, sao criados 3 vetores: val, col ind
e lin ptr. O vetor val, com comprimento igual a nnz, contem os elementos diferentes
de zero da matriz A, na seq uencia em que aparecem em cada linha, linha por linha. O
vetor col ind guarda um ndice da coluna na qual se encontra cada elemento armazenado
em val (se val(k) = A
i,j
, entao col ind(k) = j). Dessa forma, col ind possui o mesmo
comprimento que val. Finalmente, o vetor lin ptr armazena a posicao dos elementos em
val que iniciam uma nova linha e possui um comprimento igual ao n umero de linhas da
matriz mais 1.
A economia de espaco obtida por esse esquema e razoavel se houver uma grande
quantidade de zeros na matriz esparsa. Supondo uma matriz quadrada, ou seja, i = j = n,
ao inves de serem armazenados n
2
elementos, sao necessarios 2nnz + n + 1 elementos.
Como um exemplo, considere-se a matriz 5x5 dada por:
A =
_
_
_
_
_
_
_
_
10 0 0 2 0
3 9 0 0 3
0 7 8 0 0
4 0 0 8 0
0 4 0 2 1
_
_
_
_
_
_
_
_
; (3.10)
nesse caso, tem-se:
val =
_
10 2 3 9 3 7 8 4 8 4 2 1
_
, (3.11)
col ind =
_
1 4 1 2 5 2 3 1 4 2 4 5
_
e (3.12)
lin ptr =
_
1 3 6 8 10 13
_
. (3.13)
49
3.5.2 Compressed Column Storage (CCS)
Esse metodo e identico ao CRS, exceto que as colunas de A sao armazenadas ao inves
das linhas. Em outras palavras, o formato CCS e igual ao CRS aplicado em A
t
.
Similarmente ao CRS, sao criados 3 vetores: val, lin ind e col ptr, onde val armazena
os elementos diferentes de zero de A, lin ind e umndice das linhas na qual se encontram
os valores guardados em val e col ptr indica qual elemento de val inicia uma nova coluna.
Para a mesma matriz A exemplicada na descricao do metodo CRS, obtemos:
val =
_
10 3 4 9 7 4 8 2 8 2 3 1
_
, (3.14)
lin ind =
_
1 2 4 2 3 5 3 1 4 5 2 5
_
e (3.15)
col ptr =
_
1 4 7 8 11 13
_
. (3.16)
3.5.3 Compressed Diagonal Storage (CDS)
Se a matriz esparsa concentrar os valores diferentes de zero em uma faixa em torno de
sua diagonal principal, entao e mais interessante aproveitar essa estrutura no esquema de
armazenagem.
No CDS, as subdiagonais da matriz esparsa sao armazenadas em posicoes consecutivas
de memoria, nao sendo necessarios os vetores de identicacao de linha e coluna. A matriz
reduzida obtida e tambem mais eciente nas operacoes de multiplicacao.
Entretanto, nesse esquema podem ser armazenados alguns elementos iguais a zero da
matriz original. Alem disso, o formato CDS ira introduzir alguns zeros na matriz reduzida
que nem fazem parte da matriz esparsa, mas necessarios para identicar a posicao original
dos elementos armazenados.
Aplicando o CDS na matriz assimetrica e esparsa dada por
A =
_
_
_
_
_
_
_
_
10 3 0 0 0
3 8 2 0 0
0 4 9 7 0
0 0 0 6 1
0 0 0 5 2
_
_
_
_
_
_
_
_
, (3.17)
obtemos:
val(1) =
_
0 3 4 0 5
_
, (3.18)
val(0) =
_
10 8 9 6 2
_
e (3.19)
50
val(1) =
_
3 2 7 1 0
_
. (3.20)
3.5.4 Jagged Diagonal Storage (JDS)
Esse formato e bastante util na implementacao de metodos iterativos em processadores
paralelos ou vetoriais. Similarmente ao CDS, os vetores obtidos possuem o mesmo compri-
mento da matriz esparsa. Se os valores diferentes de zero nao estiverem bem concentrados
em torno da diagonal principal, o JDS e mais espaco-eciente do que o CDS.
Para se obter a matriz reduzida, na forma simplicada do JDS, os elementos diferentes
de zero sao deslocados para a esquerda e depois as colunas sao armazenadas de forma
consecutiva na memoria. Como as colunas podem nao ter o mesmo tamanho, alguns zeros
sao inseridos para que todos os vetores resultantes possuam o mesmo comprimento. Apos
essas transformacoes na matriz original, sao obtidos os vetores contendo os elementos
diferentes de zero e os zeros inseridos (val) e os ndices das colunas na qual os elementos
pertenciam antes da transformacao (col ind).
Como um exemplo, temos:
A =
_
_
_
_
_
_
_
_
10 0 3 0 0
3 0 8 2 0
1 4 9 7 0
0 0 0 6 1
0 0 5 0 2
_
_
_
_
_
_
_
_

_
_
_
_
_
_
_
_
10 3
3 8 2
1 4 9 7
6 1
5 2
_
_
_
_
_
_
_
_

_
_
_
_
_
_
_
_
10 3 0 0
3 8 2 0
1 4 9 7
6 1 0 0
5 2 0 0
_
_
_
_
_
_
_
_
, (3.21)
sendo obtidos:
_

_
val(1) =
_
10 3 1 6 5
_
val(2) =
_
3 8 4 1 2
_
val(3) =
_
0 2 9 0 0
_
val(4) =
_
0 0 7 0 0
_
e (3.22)
_

_
col ind(1) =
_
1 1 1 4 3
_
col ind(2) =
_
3 3 2 5 5
_
col ind(3) =
_
0 4 3 0 0
_
col ind(4) =
_
0 0 5 0 0
_
. (3.23)
Fica claro que esse metodo nao e muito eciente se a quantidade de zeros nao for
grande ou se as linhas da matriz esparsa nao possurem praticamente a mesma quantidade
de elementos diferentes de zero.
51
Captulo 4
DESCRIC

AO DA IMPLEMENTAC

AO
4.1 Aplicacao de Estruturas Paralelas na comparacao
de seq uencias
Para a comparacao de seq uencias baseadas no algoritmo de Needleman e Wunsch,
as solucoes computacionais seq uenciais nao oferecem um bom desempenho, mesmo com
processadores mais velozes, pois este algoritmo tem complexidade de tempo quadratica,
conforme visto no captulo 2. Portanto, a computacao paralela tem sido empregada na
tentativa de reduzir o tempo de execucao desses algoritmos.
Com n processadores paralelos, e possvel aumentar a velocidade de processamento
por um fator n, desde que o algoritmo estritamente seq uencial usado possa ser reescrito
por operacoes paralelas simultaneas. Como a comparacao de seq uencias e baseada em
computacoes analogas para cada posicao de um vetor linear, pode-se conjecturar que
algoritmos paralelos mais ecientes possam ser elaborados para problemas de comparacao
de seq uencias.
Existem basicamente duas formas de aplicar paralelismo ao problema de comparacao
de seq uencias [34]:
Paralelizando a operacao de comparacao: neste caso, todos os processadores coope-
ram para determinar o escore de cada celula da matriz de similaridades. Como a
granularidade e mais na, o n umero de comunicacoes e maior;
Paralelizando o processo de comparacao: neste caso, cada processador realiza um
n umero de comparacoes de forma independente, ou seja, calcula o escore das celulas
de porcoes menores das seq uencias comparadas. Como a granularidade e mais grossa,
as demandas de comunicacao sao reduzidas. No entanto, o desempenho dependera
de quao balanceada estiver a distribuicao da carga de trabalho.
O segundo metodo e o metodo mais utilizado, porem o primeiro metodo e mais apropri-
ado para computadores SIMD onde todos os processadores executam a mesma instrucao
ao mesmo tempo, e a velocidade de comunicacao e rapida quando comparada `a de pro-
cessamento. Sistemas SIMD geralmente possuem centenas de processadores lentos, mas
52
com baixo custo de comunicacao. Essa e um tipo de arquitetura na qual as estruturas
sistolicas se encaixam totalmente.
O segundo metodo e mais adequado para MIMD, onde cada processador e signica-
tivamente mais poderoso que um processador SIMD, e os processadores executam suas
instrucoes de forma independente, em vez de cooperarem para comparar cada seq uencia
do banco de dados.
4.2 Dependencia de Dados
Pela relacao de recorrencia do algoritmo de Smith-Waterman com penalidade constante
para os espacos (equacao 2.4), pode-se observar que podemos computar s
i,j
se s
i,j1
,
s
i1,j1
e s
i1,j
tiverem sido computados. Assim, o calculo do valor de cada celula da
matriz de similaridades depende apenas da celula da linha e coluna anteriores (mesma
diagonal), da celula da mesma linha e coluna anterior (celula `a esquerda) e da celula da
linha anterior e mesma coluna (celula acima).
Uma forma de paralelizar o calculo da matriz respeitando-se essas dependencias de
dados e calcular antidiagonal por antidiagonal, uma vez que elementos em uma antidia-
gonal so dependem das antidiagonais previamente calculadas. A esse tipo de computacao
paralela d a-se o nome de computacao em onda [69] (gura 4.1).
Figura 4.1: Paralelizacao do calculo da matriz de similaridade.
4.3 Plataforma Utilizada
Para o desenvolvimento do projeto foi utilizada a placa APEX PCI Development Board
do fabricante Altera, contendo o FPGA APEX EP20K400EFC672. Essa placa esta ins-
talada em um computador da Dell com processador Pentium IV. A ferramenta de sntese
adotada foi o Quartus II da propria Altera.
4.4 Descricao Geral
A implementacao realizada neste trabalho foi baseada no algoritmo de comparacao lo-
cal de duas seq uencias proposto por Smith-Waterman, utilizando a equacao de recorrencia
com penalidade constante para os espacos (equacao 2.4), conforme descrito no captulo 2.
53
Seja comparar e obter os melhores alinhamentos de duas seq uencias: a seq uencia de
consulta sendo CATAAGGCT e a seq uencia do banco de dados sendo ACATAGGCAT.
Aplicando a equacao de recorrencia do algoritmo de Smith-Waterman (equacao 2.4) a
essas seq uencias, obtem-se a seguinte matriz de similaridade (gura 4.2), com a origem de
cada valor indicada por uma seta. Essas setas tambem indicam o caminho a ser percorrido
para se obter os alinhamentos. Os valores assinalados com um crculo serao posteriormente
explicados.
Figura 4.2: Matriz de similaridade para as seq uencias ACATAGGCAT e CATAAGGCT.
4.4.1 Estrutura sistolica
Nas diversas implementacoes analisadas na revisao bibliograca do captulo 1, cou
claro que a melhor abordagem para paralelizar em hardware o problema da comparacao
de seq uencias utilizando programacao dinamica era a utilizacao de estruturas sistolicas.
A utilizacao de um vetor sistolico permite dois tipos de mapemanto do problema: a
emulacao das diagonais e a emulacao das colunas (gura 4.3). No primeiro tipo, cada
celula do vetor e responsavel pelo calculo de uma das diagonais da matriz. Para duas
seq uencias com comprimentos n e m, a matriz de similaridade ira possuir n + m 1
diagonais. Dessa forma, essa e a quantidade de celulas necessarias para o vetor sistolico
com essa abordagem. Alem disso, o vetor deve ser bidirecional e as seq uencias a serem
comparadas devem ser deslocadas a partir de extremidades opostas em direcao ao centro
do vetor.
Para o segundo tipo, cada celula do vetor e responsavel pelo calculo de uma coluna
da matriz de similaridade. Nesse mapeamento, o vetor pode ter o comprimento da menor
54
Figura 4.3: Tipos de emulacao da matriz de similaridade.
das seq uencias e seu sentido e unidirecional.
Pelos motivos expostos, a estrategia adotada foi a construcao de uma estrutura
sistolica linear unidirecional. Nessa abordagem, de acordo com o exposto, cada ele-
mento de processamento do vetor sistolico e responsavel pelo calculo de uma das colunas
da matriz de similaridade. A principal razao para a escolha feita e que o tamanho da
estrutura (quantidade de elemento de processamento) depende apenas da seq uencia de
consulta, nao dependendo da seq uencia do banco de dados, podendo essa ter qualquer
tamanho (na verdade, a memoria do sistema e que ira limitar o tamanho da seq uencia do
banco de dados).
Conforme ja discutido no captulo 1, o paralelismo obtido com a utilizacao de uma
estrutura linear sistolica reduz a complexidade de tempo do algoritmo de Smith-Waterman
de O(n m) para O(n + m), ou seja, transforma-se um tempo quadratico em linear.
Para implementar o vetor sistolico, a cada base da seq uencia de consulta deve cor-
responder um elemento de processamento. Com isso, a seq uencia de consulta pode car
armazenada dentro do vetor. Ja a seq uencia proveniente do banco de dados e deslocada,
da esquerda para a direita, para dentro da estrutura sistolica de forma a atravessa-la. A
cada ciclo de relogio, as bases da seq uencia do banco de dados deslocam uma posicao e o
calculo de uma antidiagonal da matriz de similaridade e efetuado segundo o esquema da
gura 4.4.
Para o exemplo anterior, cuja seq uencia de consulta e CATAAGGCT e a seq uencia do
banco de dados e ACATAGGCAT, a estrutura sistolica resultante seria:
Note que a seq uencia proveniente do banco de dados entra no vetor sistolico de maneira
invertida, de modo que o primeiro elemento dessa seq uencia possa ser comparado com o
primeiro elemento da seq uencia de consulta.
Elemento de processamento do vetor sistolico
Uma estrutura sistolica e composta por in umeras instancias de uma unidade menor
55
Figura 4.4: Estrutura linear sistolica uniderecional.
conhecida como elemento de processamento. Essas unidades sao responsaveis por todo
o processamento efetuado dentro do sistema sistolico. Assim, o correto planejamento
dessas unidades e de vital importancia para que a estrutura sistolica obtida possa ter o
desempenho e a simplicidade esperada.
Criterios utilizados
Para o projeto dos elementos de processamento (celulas) da estrutura sistolica foram
inicialmente estabelecidos os seguintes criterios que eles deveriam atender:
i. conseguirem aplicar a equacao de recorrencia (equacao 2.4) do algoritmo de Smith-
Waterman;
ii. serem o mais simples possvel para que utilizem poucos recursos da FPGA e, com
isso, caibam uma quantidade maior de celulas dentro do dispositivo. Assim, se
houver duas ou mais possibilidades de implementar um mesmo circuito, o mais
simples sera o escolhido em relacao ao mais rapido, desde que o impacto nao seja
grande na performance;
iii. possurem uma memoria local para armazenar temporariamente os calculos efetua-
dos.
Mais tarde, vericou-se que somente esses criterios nao eram sucientes e um acrescimo
foi feito a essa lista:
i. conseguirem aplicar as estrategias para minimizar a utilizacao da memoria interna
(essas estrategias serao analisadas posteriormente);
ii. prover mecanismos de entrega dos dados calculados e armazenados para uma memoria
externa.
56
Foi feita uma descricao inicial em VHDL do elemento de processamento baseada nos
criterios iniciais (i, ii e iii) com enfoque principal no criterio ii. Posteriormente, adequou-se
o elemento de processamento para que os criterios iv e v tambem pudessem ser atendidos.
Estrutura interna
De acordo com a equacao 2.4, o calculo do valor de cada celula da matriz de similari-
dades depende apenas da celula da linha e coluna anteriores (mesma diagonal), da celula
da mesma linha e coluna anterior (celula `a esquerda) e da celula da linha anterior e mesma
coluna (celula acima). Dessa forma, para que essa equacao possa ser aplicada dentro do
elemento de processamento, esses tres valores devem estar presentes dentro da celula no
instante do calculo.
Foi notado que o elemento de processamento necessitava armazenar apenas o valor da
diagonal e da linha superior. O valor da coluna `a esquerda viria da celula adjacente como
resultado do calculo feito no ciclo de relogio anterior. A estrutura inicial do elemento de
processamento pode ser vista na gura 4.5.
Figura 4.5: Estrutura interna inicial do elemento de processamento.
A seq uencia de consulta esta armazenada no vetor sistolico, com cada celula desse vetor
correspondendo a uma base dessa seq uencia (B
C
). Em um dado momento, apos um ciclo
de relogio, uma nova base da seq uencia do banco de dados (B
BD
) entra no elemento de
processamento, proveniente da celula adjacente `a esquerda. Essa celula tambem fornece
o valor da coluna `a esquerda (c). Nesse mesmo instante, os valores da diagonal (a) e da
linha superior (b) tambem estao armazenados no elemento de processamento, apos terem
sido gerados internamente e guardados no mesmo pulso de relogio que deslocou a base da
seq uencia do banco de dados para dentro da celula.
Com isso, o elemento de processamento possui em seu interior todos os requisitos para
aplicar a equacao de recorrencia do algoritmo. O novo valor calculado (d) da matriz de
similaridade e fornecido para uma memoria externa e ao mesmo tempo serve como base
para um novo calculo que sera feito por sua celula vizinha `a direita.
Fluxo dos dados em seu interior
57
A dinamica de como esses dados sao gerados pode ser melhor visualizada com o auxlio
da gura 4.6. Para simplicar a analise, o valor fornecido pela celula adjacente `a esquerda
foi colocado dentro do elemento de processamento, ao lado da base da seq uencia do banco
de dados (G2).
Figura 4.6: Fluxo interno dos dados dentro do elemento de processamento.
No instante t, conforme descrito anteriormente, a celula de processamento possui todos
os elementos necessarios para o calculo de um novo valor da matriz de similaridade (esse
valor e calculado por intermedio de uma logica combinacional a ser explicada). Apos o
pulso de relogio, instante t + 1, o dado recebido da celula adjacente `a esquerda (2) passa
a ser o novo valor diagonal do elemento de processamento. O valor calculado dentro do
elemento de processamento (0) passa a ser o novo valor da linha superior e tambem segue
junto com a base da seq uencia do banco de dados (G) para a celula da direita. Ainda nesse
instante, a base da seq uencia do banco de dados que estava na celula adjacente `a esquerda
(A) e deslocada para o interior do elemento de processamento em questao, juntamente
com o valor calculado nessa celula (1), que sera o novo valor da coluna `a direita.
A gura 4.7 (baseada no trecho nal da matriz de similaridade da gura 4.2) ilustra
essa dinamica para varias celulas de processamento, mostrando o uxo dos dados dentro
do vetor sistolico.
Figura 4.7: Dinamica do sistema para varios elementos de processamento.
Note que a sada da ultima celula do vetor sistolico nao e utilizada por nenhuma outra
celula. Entretanto, essa sada contem uma base da seq uencia do banco de dados e o ultimo
valor calculado para a linha dessa base. Assim, para o exemplo em questao, teramos o
seguinte resultado a cada pulso de relogio: C3, A4 e T4. Veremos posteriormente que essas
sadas irao permitir ligar duas implementacoes em cascata (a sada de uma alimentando a
entrada da outra) permitindo que seq uencias de consulta maiores possam ser utilizadas.
58
Logica combinacional
Para a logica combinacional que calcula o novo valor da matriz de similaridade dentro
do elemento de processamento, varias abordagens foram testadas para que ela casse o
menor e mais simples possvel.
Na aplicacao da equacao de recorrencia (equacao 2.4), valores xos (1, 1 e 2) sao
somados aos valores armazenados na celula. Como essas operacoes devem ser efetuadas
em paralelo, mais de um somador e necessario, nao sendo possvel o reaproveitamento de
um unico somador.
Alem disso, os resultados parciais obtidos devem ser comparados para a obtencao de
um novo valor para a matriz de similaridade. Assim, as principais operacoes feitas na
aplicacao da equacao de recorrencia sao somas e comparacoes, devendo essas operacoes
serem tratadas de forma mais minuciosa.
Somadores e comparadores
Um somador que incorporasse a constante a ser utilizada seria mais simples que
um somador generico. A desvantagem dessa estrategia e que o circuito gerado, embora
mais simples, caria restrito. Para um outro esquema de pontuacao para a equacao de
recorrencia, uma nova descricao do somador teria que ser feita.
Das abordagens classicas de somadores vistas no captulo 3, o somador carry look ahead
foi descartado devido `a sua complexidade combinacional. Assim, preferiu-se optar pelo
somador ripple carry ja que a quantidade de bits a serem somados nao seria grande e,
principalmente, pelo criterio ii . O primeiro teste, somador com a constante embutida,
foi feito utilizando a constante 2 em sua notacao em complemento de 2 com 8 bits:
111111110 (na ordem B
7
B
6
B
5
. . . B
0
). Para o bit 0 do somador de 8 bits, pode ser utilizado
o meio somador pois nao temos o sinal de vem-um. Pela tabela-verdade do meio somador
analisada no captulo 3 (com o bit A
n
dessa tabela vindo do valor armazenado na celula
de processamento e o bit B
0
da constante 2), sendo o bit B
0
sempre igual a zero, uma
rapida observacao nos leva ao seguinte resultado: S
0
= A
0
e V
A
0
= 0.
Como V
A
0
= 0, a tabela-verdade do meio somador pode ser novamente utilizada para
o segundo bit desse somador. Sendo o valor de B
1
= 1, temos a seguinte simplicacao:
S
1
=

A
1
e V
A
1
= A
1
.
Para os demais bits do somador (S
2
a S
7
), teremos o valor de B
N
sempre igual a 1.
Assim, simplicando a tabela-verdade do somador completo para essa situacao, obtemos:
S
N
=

A
N


V
E
N
+ A
N
V
E
N
(nao-ou-exclusivo) e V
A
N
= A
N
+ V
E
N
, com N variando de 2
a 7.
O circuito nal do somador de 8 bits com a constante 2 embutida no mesmo pode ser
visto na gura 4.8. Esse circuito e bem mais simples que o demonstrado no captulo 3. O
59
ultimo sinal de vai-um foi mantido para indicar se o resultado da operacao foi positivo
ou negativo.
Figura 4.8: Somador de 8 bits com a constante -2 embutida no mesmo.
Para a implementacao desse somador de 8 bits em VHDL foi utilizada uma descricao
estrutural. Entretanto, apos descrito o elemento de processamento utilizando essa sim-
plicacao e comparando com o resultado de uma descricao em um nvel mais alto (sim-
plesmente A 2, sendo A um vetor logico de 8 bits), vericou-se que nao houve ganho
algum. A quantidade de elementos logicos utilizados da FPGA foi a mesma para as duas
abordagens, como tambem o atraso necessario para efetuar essa operacao.
Testes com as constantes +1 e 1 levaram ao mesmo resultado, ou seja, sem diferenca
nos recursos utilizados na FPGA.
Como a ferramenta de sntese tambem faz uma analise logica do sistema que esta sendo
descrito, a explicacao para tal fato e que a ferramenta efetuou as mesmas simplicacoes
feitas manualmente no circuito.
Com os comparadores, os testes feitos tambem tiveram o mesmo resultado. Os proje-
tos em nvel de portas logicas resultaram na mesma utilizacao de recursos que circuitos
descritos em nveis mais abstratos (A = B ou A > B). Dessa forma, optou-se por fazer
as implementacoes dos somadores e comparadores em um nvel mais alto, deixando a des-
cricao em VHDL mais generica e permitindo que outros esquemas de pontuacao possam
vir a ser implementados com a simples substituicao das constantes utilizadas.
Alem da necessidade de se otimizar o circuito dos somadores e comparadores, era
tambem preciso otimizar a quantidade utilizada desses elementos dentro da celula de
processamento. O resultado dos testes anteriores mostrou tambem que os comparadores
sao menos onerosos (menor quantidade de recursos utilizados) que os somadores. Assim,
quando possvel, foi dada preferencia para a utilizacao de um comparador no lugar de um
somador.
No calculo de um novo valor da matriz de similaridade, o valor da diagonal e somado
com 1 ou 1 se as bases comparadas das duas seq uencias forem iguais ou diferentes,
respectivamente. Essas operacoes podem ser implementadas de duas formas, de acordo
com a gura 4.9.
A implementacao 1 utiliza dois somadores, um comparador e um multiplexador, en-
60
Figura 4.9: Calculo do valor da diagonal.
quanto que a implementacao 2 utiliza um somador, um comparador e um multiplexador.
Independente da quantidade de recursos internos da FPGA requerida pelo somador e
comparador, a implementacao 2 e mais otimizada que a 1. Entretanto, a implementacao
1 e um pouco mais rapida que a 2, pois no circuito 1 as somas e a comparacao estao
sendo feitas simultaneamente, enquanto que na implementacao 2 o multiplexador tem que
aguardar o resultado da comparacao antes de denir qual sera o valor fornecido ao soma-
dor. Como a diferenca de performance e baixa e o principal criterio e o da economia, o
circuito 2 foi o escolhido. A esse resultado parcial, foi dado um nome interno de RES1.
Ja os valores da coluna anterior e da linha superior sao somados com -2 e esses dois
resultados, juntamente com o resultado anterior (RES1) e o 0 sao comparados para denir
o novo valor da matriz de similaridade. Ao inves de comparar esses quatro valores simul-
taneamente para selecionar o maior de todos, podemos comparar os resultados parciais
dois a dois e com uma nova comparacao denir o resultado nal.
Uma dessas comparacoes parciais pode ser obtida de acordo com uma das imple-
mentacoes mostrada na gura 4.10. A esse novo resultado parcial foi dado o nome de
RES2.
Figura 4.10: Calculo do valor relativo `a insercao do espaco.
Novamente, a implementacao 2 se mostrou mais eciente no aspecto de utilizar recursos
da FPGA, embora a 1 seja um pouco mais rapida. Como as operacoes RES1 e RES2 sao
feitas em paralelo, os atrasos das duas implementacoes nao sao somados. Alem disso, a
logica combinacional de uma celula nao precisa aguardar o resultado da celula anterior
para efetuar o seu processamento. A cada ciclo de relogio todos os valores necessarios para
a aplicacao da equacao de recorrencia estao contidos na celula. Desse modo, as operacoes
61
RES1 e RES2 alem de serem feitas em paralelo dentro de uma mesma celula, sao feitas em
paralelo por todas as celulas. Pelo exposto, a escolha das implementacoes mais simples
para esses calculos parciais nao ira acarretar em uma perda notavel na velocidade de
processamento da estrutura sistolica proposta.
Finalmente, para se gerar o resultado nal da equacao, basta comparar RES1, RES2
e 0, selecionando o maior dos tres valores. Isso pode ser feito com um comparador e um
multiplexador. Entretanto, objetivando otimizar a sada de dados para a memoria, uma
outra abordagem foi escolhida.
Apos toda essa analise, percebe-se que o elemento de processamento e essencialmente
combinacional. Os ip-ops utilizados (onde sao armazenados os valores na celula de
processamento) servem apenas como uma barreira temporal para que as operacoes possam
ser efetuadas sem interferencia. Assim, nao foi necessario descrever uma maquina de
estados [28] para controlar o uxo do processamento, tornando a estrutura sistolica ainda
mais simples.
Sada para a memoria externa
Conforme os valores da matriz de similaridade vao sendo calculados, nas regioes onde
as duas seq uencias sao similares, esses valores vao aumentando gradativamente. Se as
duas seq uencias forem praticamente iguais e com a pontuacao utilizada na equacao 2.4, o
valor nal da matriz de similaridade sera bem proximo do comprimento dessas seq uencias.
Como as seq uencias sao grandes, a quantidade de bits necessaria para representar esses
valores tambem sera grande. Para seq uencias relativamente pequenas, com 1.000 bases,
ja seriam necessarios 10 bits para essa representacao.
Com a matriz de similaridade montada, ainda e necessario efetuar um percorrimento
reverso (backtracking) para se obter os alinhamentos. Nesse percorrimento, e preciso
descobrir quais dos tres valores adjacentes originou o dado corrente. Conforme visto no
captulo 2, a origem de cada valor da matriz pode ser identicada por um vetor, permitindo
que o percorrimento reverso possa ser feito baseado nesses vetores (ou ponteiros).
Como os vetores podem ser representados em um comprimento xo, optou-se por
armazena-los na memoria externa ao inves dos valores calculados para a matriz, que iriam
exigir uma grande quantidade de bits e que dependeriam do comprimento das seq uencias
comparadas. Alem disso, o armazenamento do vetor acelera o processo do percorrimento
reverso.
A princpio, dois bits poderiam representar os tres vetores possveis. No entanto, um
valor gerado na matriz de similaridade pode ter mais de uma origem. Para esgotar todas
as possibilidades, a representacao desses vetores deve utilizar tres bits. A gura 4.11
mostra como pode ser feita essa codicacao.
Cada bit da representacao indica um sentido. Assim, um valor da matriz cuja origem
62
Figura 4.11: Codicacao dos vetores da matriz de similaridade.
foi o elemento da diagonal, seria representado por 010, ou seja, apenas com o bit V2
setado. Um valor cuja origem foi a diagonal e a linha superior seria representado por 011.
Para um vetor nulo, que indicaria o nal de uma seq uencia, todos os bits estariam em 0.
O incio de um alinhamento se da quando o valor calculado para a matriz de similari-
dade ultrapassa um certo limite considerado como otimo. Como o valor calculado nao esta
sendo mais fornecido externamente, era necessario indicar quando esse limite havia sido
alcancado e/ou ultrapassado. Assim, foi adicionado um bit na estrutura de representacao
do vetor para essa indicacao. O valor limite utilizado para indicar se um alinhamento deve
ser recuperado e passado ao vetor sistolico como um parametro na compilacao do codigo.
Com base nessa representacao, o dado gerado para a memoria externa possua inicial-
mente 4 bits, independente do tamanho das seq uencias comparadas. Posteriormente, esse
tamanho teve que ser aumentado para que algumas otimizacoes pudessem ser efetuadas.
Geracao dos vetores
Para saber a origem de um novo valor calculado para a matriz de similaridade era
preciso efetuar alguns testes com os resultados parciais obtidos anteriormente. Ate esse
ponto, dois resultados parciais estavam disponveis, RES1, originado pela aplicacao da
equacao de recorrencia ao elemento da diagonal, e RES2, originado pela aplicacao da
equacao de recorrencia ao maior valor dentre os valores da coluna `a esquerda e da linha
superior.
Para que os bits V3, V2 e V1, representando uma seta `a esquerda, uma seta diagonal
e uma seta para cima, respectivamente, indicassem corretamente a origem do valor calcu-
lado, levando-se em conta que ela pode nao ser unica, as seguintes funcoes logicas foram
estabelecidas:
- V1: se os resultados RES1 e RES2 forem positivos e RES1 for menor ou igual a
RES2 e o valor da linha superior for maior ou igual ao da coluna `a esquerda ou se
RES1 for negativo e RES2 positivo e o valor da linha superior for maior ou igual ao
da coluna `a esquerda;
- V2: se os resultados RES1 e RES2 forem positivos e RES1 for maior ou igual a
RES2 ou se o resultado RES1 for positivo e RES2 negativo;
- V1: se os resultados RES1 e RES2 forem positivos e RES1 for menor ou igual a
RES2 e o valor da linha superior for menor ou igual ao da coluna `a esquerda ou se
63
RES1 for negativo e RES2 positivo e o valor da linha superior for menor ou igual ao
da coluna `a esquerda.
Com RES1 e RES2 negativos, os bits V1, V2 e V3 serao iguais a zero, indicando um
vetor nulo. Para que essas funcoes logicas pudessem ser mapeadas, varios sinais logicos
(ags) tiveram que ser denidos dentro do elemento de processamento:
- SIN0: ativo em 1 quando o resultado parcial RES1 e maior ou igual a zero;
- SIN1: ativo em 1 quando o resultado parcial RES2 e maior ou igual a zero;
- FLGD: ativo em 1 quando RES1 e maior que RES2;
- FLGH: ativo em 1 quando o valor da coluna `a esquerda e maior que o da linha
superior;
- FLGI1: ativo em 1 quando o valor da coluna `a esquerda e igual ao da linha superior;
- FLGI2: ativo em 1 quando os resultados parciais RES1 e RES2 sao iguais.
Alem disso, para cada um desses sinais, tambem foi denido o seu complementar:
NSIN0, NSIN1, NFLGD, NFLGH, NFLGI1 e NFLGI2. Alguns testes mostraram que
denir um sinal complementar consumia menos recursos do que car negando (invertendo)
o sinal original.
Com a denicao desses sinais, as funcoes logicas dos bits V1, V2 e V3 foram mapeadas
da seguinte forma:
- V1: SIN0SIN1NFLGDNFLGH + NSIN0SIN1 NFLGH;
- V2: SIN0 SIN1FLGD + SIN0SIN1FLGI2 + SIN0 NSIN1;
- V3: SIN0SIN1NFLGDFLGH + SIN0SIN1 NFLGDFLGI1 + NSIN0SIN1 FLGH
+ NSIN0 SIN1FLGI1.
Na denicao dessas funcoes logicas tomou-se o cuidado de nao utilizar os sinais FLGD e
NFLGD quando um dos resultados parciais RES1 e RES2 fosse negativo. Na representacao
em complemento de 2, um n umero negativo possui seu bit mais signicativo em 1. Assim,
um comparador binario gera resultados incorretos quando dois n umeros de sinais opostos
sao comparados.
Aplicando as tecnicas de simplicacao da algebra de Boole [28], podemos reduzir essas
funcoes logicas para:
- V1: SIN1 NFLGH (NSIN0 + NFLGD);
- V2: SIN0 (NSIN1 + FLGD + FLGI2);
64
- V3: SIN1 (NSIN0 + NFLGH) (FLGH + FLGI1).
Selecao do valor nal da matriz de similaridade
Quando os resultados parciais RES1 e RES2 foram obtidos, foi visto que o novo valor
calculado da matriz de similaridade seria o maior dentre esses dois valores e o 0. Para
essa selecao, poderia ser utilizado um comparador e um multiplexador.
Acontece que um dos valores a serem selecionados e o 0. Assim, podemos fundir o
comparador e o multiplexador e criar uma funcao logica que indique se o valor de RES1
deve ser o escolhido ou entao RES2. Se nenhum deles for selecionado, a funcao logica
automaticamente ira gerar o 0 como resultado nal.
Dois novos sinais foram criados, MUX0 e MUX1, para selecionar os resultados parciais
RES1 e RES2, respectivamente. Dessa forma, o valor nal gerado pode ser obtido pela
seguinte funcao logica: VF = MUX0 RES1 + MUX1 RES2.
O sinal MUX0 deve ser ativado quando os resultados RES1 e RES2 forem positivos e
RES1 for maior ou igual a RES2 ou se o resultado RES1 for positivo e RES2 negativo.
Ja o sinal MUX1 deve ser ativado quando os resultados RES1 e RES2 forem positivos e
RES1 for menor ou igual a RES2 ou se o resultado RES1 for negativo e RES2 positivo.
Aproveitando os sinais de geracao dos vetores, podemos denir as seguintes funcoes
logicas, ja simplicadas, para os sinais MUX0 e MUX1:
- MUX0: SIN0 (NSIN1 + FLGD + FLGI2);
- MUX1: SIN1 (NSIN0 + NFLGH).
Note que o sinal V2 e identico ao sinal MUX0 e que MUX1 representa a parte comum
dos sinais V1 e V3. Por essa razao, os sinais de geracao dos vetores foram redenidos
para:
- V1: MUX1 NFLGH;
- V2: MUX0;
- V3: MUX1 (FLGH + FLGI1).
Com a utilizacao dos mesmos sinais para a geracao dos vetores e selecao do valor nal
calculado, a logica combinacional do elemento de processamento foi bastante simplicada.
Terminado o projeto inicial do elemento de processamento, varias dessas unidades
foram descritas de forma a constituir o vetor sistolico do sistema. Cada uma dessas
unidades ocupou, em media, 30 elementos logicos da FPGA.
No entanto, apos testes iniciais para validar a solucao, um novo problema tinha que
ser resolvido. O sistema em questao foge aos requisitos de entrada e sada discutidos no
captulo 3.
65
As estruturas sistolicas sao apropriadas para tarefas computacionalmente intensas mas
que possuem poucas operacoes de entrada e sada. A comunicacao com o ambiente externo
ao sistema sistolico deveria ocorrer apenas nas celulas das bordas da estrutura.
O vetor sistolico proposto foge a essa regra pois cada celula deve se comunicar com a
memoria externa para que o dado gerado em seu interior possa ser armazenado. Com o
crescimento desse vetor, cresce tambem a quantidade de celulas que precisam acessar a
memoria externa.
Para uma seq uencia de consulta com 1.000 bases, so a quantidade de pinos da FPGA
necessarios para poder escrever os valores gerados na memoria ja inviabilizaria o processo,
fora sinais de endereco e controle. Alem disso, a memoria possui acesso seq uencial, nao
aceitando escritas em paralelo.
Uma alternativa seria enleirar os dados gerados, serializando a escrita na memoria.
Porem, com essa abordagem, todo o ganho obtido com a computacao paralela seria per-
dido.
Dessa forma, era necessario descobrir uma forma de compactar os valores calculados
ou uma maneira de diminuir sua quantidade.
4.4.2 Otimizacao de Utilizacao de Espaco e Armazenamento dos
Alinhamentos
O tamanho consideravel que as seq uencias biologicas podem ter impossibilita o arma-
zenamento da matriz de similaridades em memoria. Hirschberg [29] propos uma imple-
mentacao do algoritmo de Smith-Waterman utilizando espaco linear, aproveitando-se da
propria dependencia de dados existente no calculo da matriz de similaridades, uma vez
que somente os valores da linha anterior e da propria linha sao necessarios para o calculo
de uma determinada linha da matriz.
No entanto, com essa otimizacao, os alinhamentos nao podem ser recuperados pelo
procedimento normal de backtracking, pois a matriz nao e armazenada em memoria. As-
sim, somente as coordenadas iniciais e nais de cada alinhamento sao armazenadas. Dessa
maneira, a adocao de outras estrategias se fez necessario.
Estrategias Adotadas
Conforme ja discutido, pelo enorme montante de dados gerados simultaneamente, era
inviavel que esses dados fossem escritos diretamente na memoria externa. Assim, estava
claro que seria necessario descrever alguma memoria interna ao vetor sistolico para ar-
mazenar temporariamente os valores calculados. Isso permitiria aplicar alguma heurstica
que pudesse minimizar esse armazenamento e, posteriormente, entregar a matriz reduzida
para a memoria externa.
A primeira particularidade observada na matriz de similaridade foi a grande quantidade
66
de elementos iguais a zero existentes. Devido a essa quantidade, podemos considera-la uma
matriz esparsa e aplicar uma das tecnicas de armazenamento vistas no captulo 3 para
esse tipo de matriz.
Entretanto, nem todos os zeros da matriz podem ser descartados. Existem dois tipos
de zeros na matriz de similaridade: aqueles no qual os resultados parciais da equacao de
recorrencia foram todos negativos e a constante 0 foi escolhida como o valor maximo e
aqueles no qual um dos resultados parciais foi igual a zero e esse resultado tem prioridade
sobre a constante 0 da equacao.
A gura 4.12 exemplica esses dois tipos:
Figura 4.12: Tipos de zeros existentes na matriz de similaridade.
No tipo 1, a origem do valor zero calculado nao foi nenhum dos tres valores adjacentes
(diagonal, coluna `a esquerda e linha superior). Ja o zero do tipo 2 teve m ultiplas origens.
Pela equacao de recorrencia, deve ser subtrado 1 do valor da diagonal caso as bases
comparadas sejam diferentes. Do valor da linha superior e sempre subtrado 2. Essas
duas operacoes resultam em zero e indicam a origem do novo valor calculado da matriz.
Assim, nao existe nenhum vetor saindo de um zero do tipo 1, mas podem existir um
ou mais vetores saindo do zero do tipo 2. Esses zeros (tipo 2) nao podem ser eliminados
pois eles podem fazer parte de uma seq uencia considerada boa e que resultara em um
alinhamento a ser obtido.
A princpio, pode parecer nao muito simples diferenciar um zero do tipo 1 de um zero
do tipo 2. Entretanto, os zeros do tipo 1 sao os unicos elementos da matriz de similaridade
que nao possuem vetores saindo deles. Como a celula de processamento descrita gera o
vetor indicando a origem do valor calculado, se o vetor produzido for nulo, ou seja, com
os tres bits V1, V2 e V3 iguais a zero, signica que o dado gerado para aquela celula foi
um zero do tipo 1 e pode ser eliminado.
O incio de qualquer seq uencia dentro da matriz ocorre quando todos os valores adja-
centes (diagonal, linha superior e coluna `a esquerda) ao valor a ser gerado sao zeros do
tipo 1 e as duas bases comparadas sao iguais. Assim, todas as seq uencias tem como valor
inicial um 1 gerado a partir de um zero do tipo 1. Isso faz com que em um percorrimento
reverso de uma seq uencia considerada boa, o ultimo elemento seja sempre um zero do tipo
1. A func ao desse zero e servir como um marca para nalizar o percorrimento reverso.
Essa funcao que alguns zeros do tipo 1 podem ter poderia impedir que eles fossem
desprezados. Mas como toda seq uencia possui o mesmo comportamento inicial, uma
67
marca (ag) colocada no dado gerado para a memoria externa ja implicaria que duas
bases iguais foram comparadas e que o valor 1 foi calculado a partir de um zero do tipo
1 dando incio a uma nova seq uencia. A estrutura do dado fornecido `a memoria externa
foi entao modicada para que essa indicacao fosse possvel.
Esse resultado permitiu, alem de descartar os zeros do tipo 1, armazenar o primeiro
dado de uma seq uencia juntamente com o segundo valor dessa mesma seq uencia. Como so
era necess ario uma marca, o primeiro valor da seq uencia nao precisava mais ser guardado
explicitamente e poderia tambem ser desprezado.
Ainda mais, a aplicacao da equacao de recorrencia na primeira coluna da matriz de
similaridade so resulta em zeros do tipo 1 e em valores iniciais de uma seq uencia. Como
esses dois valores nao precisam mais serem armazenados, conclui-se que todos os dados
da primeira coluna da matriz podem ser descartados.
A proxima observacao feita e que os elementos iguais a zero da matriz (sejam eles
do tipo 1 ou 2) so podem ter setas diagonais apontando para eles. Para que essa seta
exista, ou seja, o zero faca parte de uma seq uencia, as duas bases da diagonal seguinte
ao zero devem ser iguais. Esse fato nao faz a menor diferenca para zeros do tipo 1 pois
eles sao eliminados de qualquer forma. Entretanto, isso permite que alguns zeros do tipo
2 tambem possam ser descartados.
Quando um zero desse tipo for gerado, faz-se uma vericacao antecipada para saber
se esse zero fara parte de uma seq uencia ou nao. Isso e possvel testando as duas bases que
serao utilizadas na geracao do proximo valor da matriz de similaridade que se localiza na
diagonal seguinte a esse zero. Se elas forem iguais (situacao 1), o zero fara parte de uma
seq uencia e deve ser guardado. Se elas forem diferentes (situacao 2), o zero calculado,
mesmo sendo do tipo 2, pode ser eliminado.
A gura 4.13 exemplica o que foi dito acima.
Figura 4.13: Vericacao antecipada para saber se o zero fara parte de uma seq uencia.
Essa vericacao antecipada e facilmente implementada. As duas bases que precisam
ser testadas para decidir se o zero calculado na celula corrente deve ser descartado ou
nao estao presentes nas celulas vizinhas `a esquerda e `a direita. Como o elemento de
processamento em questao ja se comunica com essas duas celulas, essas duas bases podem
ser fornecidas para a celula em questao e comparadas.
A gura 4.14 ilustra a posicao das duas bases que precisam ser comparadas no instante
em que o zero e calculado.
68
Figura 4.14: Posicao das bases para a vericacao antecipada.
Com as otimizacoes feitas ate aqui, um nova economia foi possvel. No preenchimento
da matriz de similaridade, e muito comum que duas bases comparadas sejam iguais e
deem incio a uma nova seq uencia. Na maioria dos casos, as bases comparadas da diagonal
seguinte s ao diferentes e, assim, a seq uencia morre prematuramente. Essas seq uencias
possuem o seguinte formato: 0 1 0, com o primeiro 0 sendo do tipo 1 e o segundo 0
sendo do tipo 2, mas sem nenhuma seta chegando nele.
Como o valor inicial da seq uencia nao e armazenado e o zero do tipo 2 sem setas
chegando nele e descartado, esse tipo de seq uencia e automaticamente eliminado. Essa
situacao pode ser observada na matriz de similaridade da gura 4.2, com as seq uencias
citadas em uma tonalidade mais clara.
Finalmente, os valores gerados na ultima linha e na ultima coluna da matriz so precisam
ser guardados se forem maiores ou iguais ao valor considerado como otimo para uma
seq uencia. Como mais nenhum valor sera calculado a partir desses dados, se uma seq uencia
nao atingiu o valor otimo, ela nao precisara ser recuperada.
Resumindo, as estrategias adotadas para reduzir a quantidade de dados armazenados
da matriz de similaridade foram:
- Zeros que nao possuem setas saindo deles (tipo 1) podem ser descartados;
- Zeros que possuem setas saindo deles (tipo 2) so sao armazenados se sua diagonal
seguinte possuir duas bases iguais;
- A seq uencia 0 1 0 nao e armazenada se o ultimo zero obedecer a regra anterior;
- Nao e necessario armazenar nenhum valor da primeira coluna da matriz de simila-
ridade;
- A ultima coluna so armazena valores iguais ou maiores que o valor otimo.
Vale ressaltar que a aplicacao dessas regras nao acarreta em nenhuma perda de in-
formacao, ou seja, os alinhamentos que podiam ser obtidos antes de sua aplicacao conti-
nuam a ser recuperados apos o uso dessas regras.
A utilizacao dessas simplicacoes na matriz de similaridade da gura 4.2 faz com que
apenas os elementos marcados com um crculo precisem ser armazenados. Essa matriz
possui 110 elementos e apenas 28 tiveram que ser guardados.
69
Varios exerccios feitos com matrizes que variaram de 4 4 (16 elementos) a 15 15
(225 elementos) mostraram que a reducao obtida com essa heurstica cou entre 75 e
80%, ou seja, seria necessario armazenar apenas entre 20 e 25% dos valores gerados para
a matriz de similaridade.
Embora a reducao tenha sido signicativa, a quantidade de memoria necessaria ainda
e consider avel. Para uma comparacao de seq uencias relativamente pequenas, em torno de
1.000 bases, a aplicacao dessas regras reduziria a memoria de 1MB para 200KB. Levando-
se em conta que as seq uencias podem atingir centenas de milhares de bases, essa reducao
ainda nao seria suciente. So para se ter uma ideia, uma comparacao com seq uencias de
400K bases necessitaria de uma memoria inicial de 160GB e que poderia ser reduzida para
32 GB.
Para que todas essas otimizacoes pudessem ser implementadas, a estrutura do dado
gerado para a memoria externa teve que ser bastante alterada. Tres novos tipos de dados
foram denidos: um que indica o incio de um alinhamento (nal de um percorrimento
reverso) e contem duas bases alinhadas, um que indica um dado interno a um alinhamento
e um ultimo que indica que o valor otimo foi alcancado e um percorrimento reverso poderia
ser iniciado nesse ponto. A gura 4.15 ilustra o novo formato do dado a ser fornecido para
a memoria externa.
Nessa nova estrutura, para simplicar a obtencao dos alinhamentos locais das duas
seq uencias, a base da seq uencia do banco de dados tambem foi incorporada ao dado
fornecido ` a memoria externa. Com isso, os alinhamentos podem ser obtidos apenas com os
dados fornecidos, sem a necessidade de se ter em memoria as duas seq uencias comparadas.
Figura 4.15: Novo formato do dado fornecido `a memoria externa.
4.4.3 Outras otimizacoes
Alem de todas as consideracoes feitas ate aqui, no desenvolvimento do projeto foram
notadas algumas outras particularidades do sistema.
70
A celula inicial do vetor sistolico tem sempre os valores da diagonal e da coluna `a
esquerda iguais a 0 e o valor da linha superior sera no maximo igual a 1. Aplicando a
equacao de recorrencia com esses valores, percebe-se que o resultado parcial RES2 sera
sempre negativo, ou seja, nunca sera o escolhido como resultado nal. Dessa forma, a
equacao de recorrencia so precisa ser aplicada ao elemento da diagonal. Como o valor da
diagonal e sempre zero, so existirao dois resultados nais possveis para essa celula: 1 se
as duas bases comparadas forem iguais ou 0 caso contrario.
Por ter uma logica combinacional bastante simplicada, a celula inicial do vetor
sistolico recebeu um tratamento diferenciado e foi descrita `a parte.
Outra observacao feita e que, com os valores utilizados na pontuacao da equacao de
recorrencia, o valor maximo gerado pela celula inicial e igual a 1 (de acordo com o exposto
acima), igual a 2 para a segunda celula da estrutura, igual a 3 para a terceira, assim
sucessivamente, ate a n-esima celula da estrutura que tera um valor maximo calculado
igual a n.
Se todos os elementos de processamento fossem iguais, a sua logica combinacional
interna teria que ser prevista para o pior caso. Supondo novamente um vetor com 1.000
celulas, o valor maximo gerado pela ultima celula seria igual a 1.000. Isso resultaria em
somadores, comparadores e multiplexadores de 10 bits (2
1
0 = 1.024). Essa quantidade
de bits para a segunda celula do vetor representaria um desperdcio enorme ja que ela
necessitaria de apenas 2 bits.
Dessa forma, o elemento de processamento foi descrito com um tamanho interno con-
guravel. A quantidade necessaria de bits para cada celula e passada como um parametro
quando o elemento de processamento e instanciado na descricao em VHDL do vetor
sistolico.
71
Captulo 5
RESULTADOS
Neste captulo sao apresentados os resultados obtidos a partir da implementacao des-
crita no captulo 4. Como essa implementacao se deu apenas em nvel de sntese, os
resultados apresentados foram obtidos a partir de simulacoes feitas na ferramenta de de-
senvolvimento do fabricante. Entretanto, essas ferramentas fornecem resultados bastante
precisos, nao so em termos de funcionalidade do sistema, como tambem em termos de
velocidade nal do sistema, indicando caminhos crticos e atrasos dos sinais. Alem disso,
a comunicacao com o ambiente externo nao e crtica como em um sistema de tempo real,
o que poderia prejudicar os resultados da simulacao.
Para a validacao da arquitetura sistolica projetada nao bastava apenas conhecer os
alinhamentos obtidos na comparacao entre duas seq uencias, mas tambem conhecer toda
a matriz de similaridade para vericar se as diversas otimizacoes sugeridas no captulo 4
estavam sendo feitas corretamente. Assim, os testes foram todos feitos com seq uencias
ctcias cuja matriz de similaridade era conhecida ou poderia ser construda facilmente.
Para o teste de desempenho, vetores de diferentes tamanhos foram sintetizados e suas
freq uencias maximas de operacao foram obtidas a partir de informacoes fornecidas pela
ferramenta de sntese.
5.1 Validacao
Diversos arquivos de estmulo foram criados contendo seq uencias de tamanhos variados.
Nas simulacoes feitas para a validacao, limitou-se o tamanho das seq uencias em 20 bases ja
que o tamanho da matriz de similaridade se torna consideravel para comprimentos acima
desse valor, dicultando bastante a analise e vericacao.
Como primeiro exemplo, a comparacao de duas seq uencias pequenas, com apenas 5
bases cada, e apresentada. Nesse exemplo a base de consulta e CATAG e a base do banco
de dados ATAGC. Depois, e feita uma pequena modicacao na seq uencia da base de
dados, sendo alterada para CATGA. As matrizes de similaridade dessas duas seq uencias
pode ser vista na gura 5.1.
Aplicando as otimizacoes em relacao ao armazenamento da matriz vistas no captulo 4,
72
Figura 5.1: Matrizes de similaridade para as seq uencias CATAG e ATAGC e para CATAG e
CATGA.
apenas os valores circulados devem ser guardados. Note que, no primeiro caso, a matriz
possui 36 elementos mas somente 4 precisam ser salvos, ou seja, apenas 11
A simulacao da primeira comparacao pode ser vista na gura 5.2.
Figura 5.2: Comparacao entre as seq uencias CATAG e ATAGC.
A seq uencia do banco de dados, que e a entrada principal da simulacao, esta delimitada
pelo sinal FLAG IN, lembrando que as bases foram codicadas internamente como A =
00, T = 01, C = 10 e G = 11. O valor otimo fornecido ao sistema esta armazenado em um
sinal interno VAL que, nesse caso, foi igual a 4. Os sinais MEM2, MEM3, MEM4 e MEM5
sao os valores fornecidos para a memoria externa pelas colunas 2, 3, 4 e 5, respectivamente
(a coluna inicial, do espaco, foi considerada como coluna 0). Conforme foi discutido no
captulo 4, a primeira coluna (primeiro caracter da seq uencia) nao precisa fornecer dados
73
externamente.
Como sada do sistema, alem dos dados para a memoria externa, temos ainda os si-
nais BASE OUT, DATA OUT, FLAG OUT (nao colocado na gura) e CONTA. O sinal
BASE OUT e simplesmente a base do banco de dados apos atravessar o vetor sistolico.
Ja o sinal DATA OUT contem os valores calculados na ultima coluna da matriz de simi-
laridade. Note que os valores de DATA OUT estao associados com as bases do banco de
dados que estao na mesma linha. Dessa forma, para essa comparacao (comparacao 1 da
gura 5.1), temos a seguinte seq uencia de sada nos sinais BASE OUT e DATA OUT: A0,
T0, A1, G4 e C2.
Esse formato de sada permite dividir uma seq uencia de consulta que nao caiba no
tamanho maximo do vetor em duas ou mais partes, ou seja, em dois ou mais vetores
sistolicos. A sada do primeiro vetor seria a entrada do segundo e assim, sucessivamente.
O ultimo sinal, CONTA, e o valor de um contador interno e serve para que um pro-
grama externo que esteja recebendo os dados gerados consiga remontar a matriz de si-
milaridade. Pela teoria de matrizes esparsas vista no captulo 3, como a maior parte da
matriz original e desprezada, e necessario fornecer mecanismos para recuperar a posicao
original na matriz completa de um valor armazenado na matriz reduzida. No nosso caso,
a coluna pode ser obtida pelo proprio elemento que gerou o dado externo, assim, um dado
lido de MEM2 e da segunda coluna e um dado lido de MEM5 pertence `a quinta coluna.
Para a informacao da linha, utiliza-se o sinal CONTA que indica o instante no qual o dado
foi gerado. No primeiro ciclo de relogio, so o valor da primeira coluna e primeira linha da
matriz e calculado. No segundo ciclo de relogio, sao calculados o valor da primeira coluna
e da segunda linha e o valor da segunda coluna e primeira linha. No terceiro ciclo, os
valores da primeira coluna e terceira linha, segunda coluna e segunda linha e da terceira
coluna e primeira linha sao gerados. Dessa forma, o valor lido do sinal CONTA menos a
coluna indica a linha do valor lido. Por exemplo, um dado lido de MEM2 com um valor
5 em CONTA indica que esse dado pertence `a segunda coluna e terceira linha da matriz
original. Para a numeracao de linha utilizada foi desconsiderada a linha inicial de zeros da
matriz, ou seja, a primeira linha e a primeira linha que contenha uma base da seq uencia.
Analisando os dados gerados para a memoria externa pela simulacao, verica-se que
MEM2 nao forneceu nenhum valor, MEM3 forneceu apenas o valor 8AH, MEM4 forneceu
dois valores (22H e 39H) e MEM5 apenas 5AH. A quantidade de valores gerados para a
memoria externa confere com os valores circulados na gura 5.1.
MEM3 forneceu o resultado 8AH quando o valor de CONTA era igual a 5, ou seja,
esse resultado pertence `a terceira coluna e segunda linha da matriz original. Ja MEM5
forneceu 5AH quando CONTA continha 9, ou seja, esse elemento esta localizado na quinta
coluna e quarta linha da matriz original. Essas posicoes tambem conferem com o indicado
na gura 5.1.
Finalmente, em relacao ao signicado dos valores gerados, deve-se recorrer `a estrutura
74
apresentada na gura 4.15. Com aquela estrutura, temos o seguinte resultado:
MEM3: 8AH = 10001010B = 1 00 01 010 o percorrimento reverso deve ser feito
na diagonal e foi resultado da comparacao de duas bases T, alem disso, duas bases
A foram comparadas e sao o nal do percorrimento reverso (ou o incio do alinha-
mento);
MEM4: 22H = 00100010B = 0 0x 00 010 o percorrimento reverso deve ser feito na
diagonal e foi resultado da comparacao de duas bases A;
MEM4: 39H = 00111001B = 0 0x 11 001 o percorrimento reverso deve ser para a
linha superior e mesma coluna e a base G da seq uencia do banco de dados deve ser
alinhada com um espaco;
MEM5: 5AH = 01011010B = 0 1x 11 010 esse valor pode ser o ponto inicial de um
percorrimento reverso, que deve ser feito na diagonal e foi resultado da comparacao
de duas bases G.
Novamente, os resultados estao coerentes com a matriz de similaridade obtida para
essa comparacao.
A simulacao da segunda comparacao da gura 5.1, agora com um valor otimo igual a
2, pode ser vista na gura 5.3.
Figura 5.3: Comparacao entre as seq uencias CATAG e CATGA.
Uma analise similar `a que foi feita anteriormente mostra que os resultados gerados nesta
simulacao estao corretos e sao compatveis com a matriz de similaridade da comparacao
2 da gura 5.1.
75
Conforme previsto, apenas 7 valores sao gerados para a memoria externa (1 de MEM2,
2 de MEM3, 3 de MEM4 e 1 de MEM5). Como analise da informacao fornecida por
esses dados, por exemplo, o valor 5AH fornecido por MEM5 indica um possvel incio
de percorrimento reverso (um valor maior ou igual ao valor otimo), que o percorrimento
reverso deve ser feito na diagonal e que as duas bases comparadas foram G.
Como um ultimo resultado de simulacao, os valores gerados pela estrutura sistolica
para a matriz de similaridade obtida pela comparacao das seq uencias ACATAGGCAT e
CATAAGGCT (gura 4.2) sao apresentados na gura 5.4. A seq uencia CATAAGGCT
por ser menor, foi colocada dentro do vetor sistolico e a outra seq uencia (considerada como
a seq uencia proveniente do banco de dados) e que atravessou o vetor. Nessa simulacao
e possvel ver o sinal FLAG OUT e como ele acompanha as bases do banco de dados na
sada do vetor.
Em uma rapida inspecao, verica-se que a seq uencia de sada vinda de BASE OUT e
DATA OUT e igual `a gerada na ultima coluna da matriz, ou seja, A0, C0, A0, T1, A0, G0,
G0, C3, A4 e T4. Ja a quantidade de valores gerados para memoria externa foi 28 (2 de
MEM2, 4 de MEM3, 5 de MEM4, 3 de MEM5, 4 de MEM6, 4 de MEM7, 4 de MEM8 e 2
de MEM9), o mesmo valor que resultaria na contagem dos valores circulados na gura 4.2.
Aparentemente MEM2 so gera um valor de sada, mas e que eles sao iguais e o sinal que
indica um dado valido externo e permitiria essa diferenciacao nao foi mostrado.
Figura 5.4: Comparacao entre as seq uencias ACATAGGCAT e CATAAGGCT.
76
5.2 Desempenho
Para os testes de desempenho, vetores com diversos tamanhos foram sintetizados. Em
cada uma dessas snteses, a ferramenta de desenvolvimento analisou os caminhos crticos e
os diversos atrasos (tempo que a mudanca em sinal leva para gerar outros sinais estaveis)
e determinou a freq uencia maxima de operacao do circuito. Alem disso, a quantidade de
elementos logicos do FPGA utilizados por vetores de comprimentos diversos tambem foi
obtida (tabela 5.1).
Tabela 5.1: Quantidade de elementos logicos utilizados e freq uencia maxima de operacao para
diferentes comprimentos do vetor sistolico.
Quantidade de Quantidade de Freq uencia Media de elementos
celulas no vetor elementos logicos maxima de utilizados por celula
do vetor
5 146 122,49 MHz 29,2
10 507 77,54 MHz 50,7
15 900 70,35 MHz 60
20 1292 64,94 MHz 64,6
25 1758 62,63 MHz 70,32
30 2222 56,45 MHz 74,06
40 3204 56,27 MHz 80,1
50 4403 56,1 MHz 88,06
Pode-se perceber que quanto maior a quantidade de celulas do vetor, menor sua
freq uencia maxima de operacao. Aparentemente, o aumento do n umero de celulas nao
deveria afetar a freq uencia de operacao do circuito. As celulas possuem a mesma estrutura
interna e, assim, o atraso resultante da logica combinacional contida em seu interior sera
o mesmo. Esses atrasos de cada celula nao sao somados, pois as operacoes internas em
cada celula sao executadas em paralelo dentro da estrutura. Dessa forma, o tempo que a
logica combinacional precisaria para ter um sinal estavel na sada indicaria a freq uencia
maxima de operacao do circuito. A adicao de uma nova celula nao alteraria esse tempo.
A explicacao para tal fato e que com poucas celulas na estrutura, elas podem ser alo-
cadas em blocos contguos no FPGA. Isso reduz bastante a necessidade de um roteamento
interno dos sinais, reduzindo os atrasos de comunicacao entre as celulas. Com o aumento
do vetor sistolico, as celulas tem que ser espalhadas pelo FPGA e uma maior quantidade
de estruturas de roteamento precisam ser utilizadas, aumentando o tempo de comunicacao
entre as celulas. Entretanto, esse atraso de comunicacao tambem nao e somado, e o maior
atraso de roteamento (caminho crtico), juntamente com a logica combinacional da celula
e que ira denir a nova freq uencia de operacao do circuito. Assim, a partir de um deter-
minado ponto, a dispersao das celulas no FPGA ja nao ira afetar a freq uencia de operacao
pois o tempo de roteamento ira se estabilizar.
77
A gura 5.5 ilustra esse comportamento assintotico da freq uencia maxima de operacao.
Com poucas celulas, a freq uencia de operacao e fortemente afetada pelos atrasos de rotea-
mento. Com o aumento da estrutura e o espalhamento das celulas no FPGA, os atrasos de
roteamento passam a ser praticamente constantes (ja se atingiu uma determinada distancia
limite entre os blocos), praticamente nao afetando mais a freq uencia de operacao. O valor
limite teorico obtido foi em torno de 56MHz.
Figura 5.5: Freq uencia maxima de operacao x Quantidade de celulas do vetor.
Em termos de quantidade de elementos logicos do FPGA necessarios para sintetizar
vetores de diferentes comprimentos, percebe-se uma relacao linear entre essas quantidades
(gura 5.6), facilitando bastante estimativas de quantas celulas poderiam ser alocadas em
um determinado FPGA.
Por exemplo, para o FPGA da famlia APEX EP20K400EFC672 com 16.640 elementos
logicos existente na placa PCI de testes, estima-se que possam ser alocadas 180 celulas de
um vetor sistolico em seu interior.
Compara cao
O tempo de execucao (comparacao) do sistema projetado e dado pelo tempo que
a seq uencia do banco de dados leva para atravessar a estrutura sistolica. Assim, se a
seq uencia de consulta possuir n elementos e a seq uencia do banco de dados possuir m
elementos, a seq uencia do banco de dados atravessara o vetor em m+n ciclos de relogio.
78
Figura 5.6: Quantidade de elementos logicos utilizados no FPGA x Quantidade de celulas do
vetor.
Dessa forma, podemos deduzir um formula que calcula o tempo de comparacao entre duas
seq uencias:
T
exec
=
m + n
f
clock
(5.1)
Apenas para se ter uma ideia do desempenho que essa implementacao em hardware
poderia proporcionar, supondo que fosse possvel criar um vetor sistolico sem limite de
comprimento, com uma freq uencia de operacao de 50 MHz, teramos os seguintes tempos
(em segundos), comparados com uma implementacao seq uencial e paralela desenvolvidas
em [47]:
79
Tabela 5.2: Comparacao de velocidade entre uma implementacao seq uencial, diversas paralelas
e em hardware do algoritmo baseado em programacao dinamica.
Tamanho das 2 4 8 Vetor
Seq uencias Seq uencial Processadores Processadores Processadores Sistolico
15kB X 15kB 296s 283,18s 202,18s 181,29s 0,000614s
50kB X 50kB 3461s 2884,15s 1669,53s 1107,02s 0,002048s
80kB X 80kB 7967s 6094,19s 3370,40s 2162,82s 0,003277s
150kB X 150kB 24107s 19522,95s 10377,89s 5991,79s 0,006144s
400kB X 400kB 175295s 141840,98s 72770,99s 38206,84s 0,016384s
Embora o desempenho exibido na tabela 5.2 ainda nao possa ser alcancado, por nao ser
possvel colocar essa quantidade de celulas em um FPGA considerando o atual estagio de
integracao, ela demonstra o enorme ganho de velocidade que uma abordagem em hardware
pode proporcionar. Dessa forma, mesmo que as seq uencias tenham que ser divididas em
pedacos menores, de forma que cada pedaco possa ser calculado dentro do FPGA, e depois
os resultados parciais reunidos de modo a produzir a solucao completa, pela diferenca de
velocidade apresentada, essa abordagem merece ser estudada.
80
Captulo 6
CONCLUS

OES
O volume de informacoes geradas para os bancos de dados biologicos tem sido maior
que o crescimento do poder de processamento das maquinas utilizadas para processar essas
informacoes. Dessa forma, encontrar mecanismos ecientes para tratar esses dados e um
desao constante da Bioinformatica.
Dentre as operacoes necessarias para esse tratamento, uma das mais utilizadas e a
comparac ao de seq uencias. O algoritmo de Smith-Waterman, baseado em programacao
dinamica, e o que produz os melhores resultados, mas apresenta complexidades quadraticas
de tempo e espaco, nao sendo utilizado amplamente em projetos de seq uenciamento de
genomas. Os programas mais utilizados sao baseados em probabilidades e heursticas que,
apesar de serem consideravelmente mais rapidos, podem omitir resultados importantes.
Para tentar melhorar o desempenho dos algoritmos baseados em programacao dinamica,
solucoes utilizando paralelismo vem sendo desenvolvidas, tanto em hardware quanto em
software.
Este trabalho mostrou como um hardware dedicado, baseado em uma estrutura sistolica,
e capaz de linearizar a complexidade temporal e reduzir bastante o tempo de processa-
mento desses algoritmos.
Embora o dispositivo gerado tenha sido apenas em nvel de sntese, os resultados
obtidos podem ser considerados bastante conaveis, dada a precisao que a ferramenta de
sntese possui para simulacoes funcionais e temporais.
Para que a implementacao proposta se torne funcional e necessario o desenvolvimento
de um programa que converta as seq uencias para a codicacao interna utilizada no vetor,
que forneca esses dados ao vetor pelo barramento PCI e que leia os dados gerados, mon-
tando a matriz de similaridade completa ou trabalhando com a matriz reduzida para o
obtencao dos alinhamentos. Dada a velocidade na qual os resultados sao produzidos pelo
vetor, o programa devera possuir mecanismos de sincronizacao para nao haver perda de
dados.
Esse mesmo programa poderia dividir as seq uencias em varios pedacos menores e
efetuar a comparacao desses pedacos menores, armazenando os resultados temporarios e
depois montando uma solucao nal. Como a velocidade do hardware projetado e muito
81
grande, mesmo com uma granularidade pequena, que aumenta os custos de comunicacao,
o desempenho nal do sistema ainda devera ser bastante satisfatorio.
Outra possvel implementacao seria utilizar as solucoes propostas em [50] e [47], basea-
das em [14]. Em cada um desses trabalhos foi desenvolvido um programa para paralelizar o
algoritmo de Smith-Waterman e, com isso, obter um ganho de performance. O problema
do calculo da matriz de similaridade foi dividido em blocos e cada um desses blocos e
enviado para um processador do cluster. O hardware aqui proposto poderia ser utilizado
para o calculo de cada um desses blocos menores. Uma placa PCI similar `a utilizada nessa
dissertacao poderia ser colocada em cada computador do cluster que, ao receber o bloco a
ser calculado, repassaria esse bloco para o vetor sistolico e armazenaria os valores gerados.
Dessa forma, teramos dois nveis de paralelismo atuando, em software e em hardware, o
que poderia acelerar bastante o tempo de processamento dessas comparacoes.
Embora nesse trabalho tenha se conseguido simplicar bastante a quantidade de dados
que devem ser guardados da matriz de similaridade, o resultado obtido ainda esta longe de
uma condicao ideal. Pela revisao bibliograca vista no captulo 1, pode-se notar que o alvo
principal das pesquisas e proporcionar um ganho de velocidade ao algoritmo, com poucos
estudos sobre otimizacoes de espaco. Essa otimizacao e extremamente importante, dada
a enorme quantidade de elementos que a matriz de similaridade pode possuir. Ja notando
esse problema, Cuvillo [14] sugere uma heurstica para guardar apenas os alinhamentos
que poderiam ser considerados bons, ignorando os demais. A uniao das otimizacoes aqui
propostas com as utilizadas por Cuvillo poderiam ser avaliadas, bem como a aplicacao de
outras tecnicas que pudessem reduzir ainda mais a quantidade de dados armazenados.
Outro problema tambem nao resolvido completamente foi o fornecimento dos valores
gerados pelo vetor para uma memoria externa. Como varios valores podem ser gerados
simultaneamente, para que eles pudessem ser escritos em uma unica memoria, uma seri-
alizacao desses dados seria necessaria. Isso acarretaria uma perda da performance obtida
nos calculos em paralelo. Entre as possveis solucoes poderia se avaliar a utilizacao de
memorias entrelacadas [35] e a divisao da memoria em blocos. Alem disso, a famlia
APEX de FPGAs da Altera, possui facilidades para implementar memorias de conte udo
(CAM), que tambem poderiam ser avaliadas.
Finalmente, nas simplicacoes manuais feitas nos somadores e comparadores percebeu-
se que a ferramenta de sntese gerou os mesmos resultados automaticamente. Entretanto,
na denicao dos sinais internos para a geracao dos vetores e escolha do melhor valor para a
celula, algumas simplicacoes manuais e algumas outras observacoes descritas no captulo
4 resultaram em snteses mais otimizadas que as obtidas automaticamente. Uma an alise
mais aprofundada desses resultados fugia ao escopo desta pesquisa. Assim, poderia ser alvo
de estudo uma metodologia que forneca mecanismos ou aponte caminhos ao projetista para
que ele possa decidir que parte da descricao deve ser simplicada automaticamente e que
parte requer uma analise manual mais detalhada. A possvel criacao de uma biblioteca de
82
componentes ou unidades funcionais otimizadas que pudessem ser utilizadas em projetos
de maior porte tambem poderia fazer parte desse estudo.
83
REFER

ENCIAS BIBLIOGR

AFICAS
[1] IEE standard VHDL language reference manual, IEEE std. Relatorio tecnico, The
Institute of Electrical and Electronics Engineers, 1988.
[2] Primer on Molecular Genetics. U.S. DOE Department of Energy., 1991.
[3] Initial sequencing and analysis of the human genome. Relatorio tecnico, The Genome
International Sequencing Consortium, Fevereiro de 2001.
[4] Adario, A. M. S., Bampi, S., e Jacobi, R. P. Recongurable architectures. volume 12,
paginas 133136, Porto Alegre: PPGC da UFRGS, 1997.
[5] Adario, A. M. S., Roehe, E. L., e Bampi, S. Dynamically recongurable achitecture
for image processor applications. Em Design Automation Conference, paginas 623
628. ACM, 1999.
[6] Altschul, S. F., Gish, W., Miller, W., Myers, E. W., e Lipman, D. J. Basic local
alignment search tool. Journal of Molecular Biology, 215:403410, 1990.
[7] Amabis, J. M. e Martho, G. R. Curso Basico de Biologia, volume 1. Editora Moderna,
1988.
[8] Amabis, J. M. e Martho, G. R. Curso Basico de Biologia, volume 2. Editora Moderna,
1988.
[9] Arnold, J. M., Buell, D. A., e Davis, E. G. Splash 2. ACM Symposium on Parallel
Algorithms and Architectures, 1992, Junho.
[10] Aschenden, P. J. The Designers Guide to VHDL. Morgan Kaufmann Publishers,
Inc., San Francisco, CA, 1996.
[11] Brutlag, D. L., Dautricourt, J. P., Maulik, S., e Relph, J. Improved sensitivity of
searches of biological sequence databases. CABIOS, 6 (3):237245, 1990.
[12] Carro, L. Projeto e Prototipacao de Sistemas Digitais. Editora Universidade/UFRGS,
Porto Alegre, RS, 2001.
[13] Cormen, T. H., Leiserson, C. E., e Rivest, R. L. Introduction to Algorithms. MIT
Press: McGraw Hill, 1990.
[14] Cuvillo, J. Whole genome comparison using a multithreaded parallel implementation.
Dissertacao de Mestrado, Universidade de Delaware, 2001.
[15] Dalton, J. Absorption of gases by water and other liquids. 1803.
[16] Dayho, M. O., Scwartz, R. M., e Orcutt, B. C. A model of evolucionary change
in proteins. volume 5, paginas 345352, Washington, DC, 1978. Natl. Biomed. Res.
Foundation.
[17] Cuvillo, J. B.del , Martins, W. S., Gao, G. R., Cui, W., e Kim, S. ATGC: Another
tool for genome comparison. Relatorio tecnico.
84
[18] E., M. P. R. T. D. The Verilog Hardware Description Language. Kluwer Academics
Publishers, 1991.
[19] Eijikhout,. Lapack working note 50: Distributed sparse data structures for linear
algebra operations. Relatorio tecnico, Computer Science Department, University of
Tennessee, Knoxville, TN, 1992.
[20] Gajski, D., Dutt, N., Wu, A., e Lin, S. Sigh Level Systems Introduction to Chip and
System Design. Kluwer Academic Publishers, Massachusets, Estados Unidos, 1992.
[21] Gibas, C. e Jambeck, P. Developing Bioinformatics Computer Skills. OReilly, 2001.
[22] Gokhale, M. Splash: A recongurable linear logic array. Procedings of 1990 Interna-
tional Conference on Parallel Processing, paginas 526532, 1990.
[23] Gotoh,. An improved algorithm for matching biological sequences. J. Mol. Biol.,
162:705708, 1982.
[24] Grice, J. A., Hughey, R., e Speck, D. Parallel sequence alignment in limited space.
Em Proc. Int. Conf. Intelligent Systems for Molecular, paginas 145153. AAAI/MIT
Press, 16-19 de Julho de 1995.
[25] Guccione, S. A. e Keller, E. Gene matching using jbits. Xilinx, Inc., 2002.
[26] Hadley, J. D. e Hutchings, B. L. Design methodologies for partially recongured
systems. paginas 7884, California, Estados Unidos, 1995.
[27] Heniko, S. e Heniko, J. G. Aminoacid substitution matrices from proteins blocks.
volume 89, paginas 1091519, 1992.
[28] Hill, F. J. e Peterson, G. R. Computer Aided Logical Design with Emphasis on VLSI.
John Wiley & Sons, Inc, 4 edicao, 1993.
[29] Hirschberg, D. A linear space algorithm for computing maximal common subsequen-
ces. Communications of the ACM, 18:341343, 1975.
[30] Hirschberg, J. D., Hughey, R., e Karplus, K. Krestel: A programmable array for
sequence analysis. Em Proc. Int. Conf. Application-Specic Systems, Architectures
and Processors, paginas 2534. IEEE CS, 19-21 de Agosto de 1996.
[31] Hoang, D. T. A systolic array for the sequence alignment problem. Relatorio Tecnico
CS-92-22, Brown University, Providence, RI, 1992.
[32] Hoang, D. T. e Lopresti, D. P. FPGA implementation of systolic sequence alignment.
1992.
[33] Hughes, N. Implementing sequence matching algorithms with hardware compilation.
Relat orio tecnico, St. Hughs College.
[34] Hughey, R. Parallel hardware for sequence comparison and alignment. CABIOS,
12(6):473479, Dezembro de 1996.
[35] Hwang, K. Advanced Computer Architecture. McGraw-Hill International Editions,
Nova Iorque, 1993.
[36] Information Sciences Institute - East, http:// www.east.isi.edu/projects/SLAAC/.
Slaac project. World Wide Web site.
[37] Kung, H. T. Why systolic architectures? IEEE Computer, 15 (1):3746, Janeiro de
1982.
[38] Lavenier, D. Dedicated hardware for biological sequence comparison. 1996.
85
[39] Lavenier, D. SAMBA - Systolic Accelerators for Molecular Biological Applications.
Relatorio Tecnico 988, IRISA, Marco de 1996.
[40] Lavenier, D. Speeding up genome computations with a systolic accelerator. SIAM
News, 31(8):17, Outubro de 1998.
[41] Lewin, B. Genes VII. Artmed, Porto Alegre, RS, Brasil, 2001.
[42] Lipsett, R., Schaefer, C., e Ussery, C. VHDL: Hardware Description and Design.
Kluwer Academic Press, 1989.
[43] Lipton, R. J. e Lopresti, D. A systolic array for rapid string comparison. Em Chapel
Hill Conference on VLSI, paginas 363376, 1985.
[44] Luscombe, N. M., Greenbaum, D., e Gerstein, M. Yearbook Of Medical Informatics
2001, chapter What is bioinformatics? An introduction and overview, paginas 83
100. International Medical Informatics Association, 2001.
[45] Martins, W. S., Cuvillo, J. B.del , Useche, F. J., Theobald, K. B., e Gao, G. R.
A multithreaded parallel implementation of a dynamic programming algorith for
sequence comparison. Relatorio tecnico.
[46] Martins, W. S., Cuvillo, J.del , Cui, W., e Gao, G. R. Whole genome alignment using
a multithreaded parallel implementation. Relatorio tecnico.
[47] Melo, R. C. F. Comparacao de seq uencias biologicas utilizando dsm. Dissertacao
de Mestrado, Departamento de Ciencia da Computacao, Universidade de Braslia,
Braslia, DF, Janeiro de 2003.
[48] Michel, P., Lauther, U., e Duzy, P. The Synthesis Approach to Digital Systems Design.
Kluwer Academic Publishers, Massachusets, Estados Unidos, 1992.
[49] Michele, G. D. Synthesis and Optimization of Digital Circuits. McGraw-Hill, 1994.
[50] Murakami, M. M. Uma nova abordagem para pesquisa paralela em bancos de da-
dos biologicos utilizando algoritmos de comparacao de seq uencias baseados em pro-
gramacao dinamica. Dissertacao de Mestrado, Departamento de Ciencia da Com-
putacao, Universidade de Braslia, Braslia, DF, Marco de 2003.
[51] Needleman, S. B. e Wunsch, C. D. A general method applicable to the search for
similarities in the amino acid sequence of two proteins. volume 48, paginas 443453,
1970.
[52] Splash 2, S. G. D.on . Dzung t. hoang. paginas 185191, Los Alamitos, CA, 1993.
IEEE Computer Society Press.
[53] ONSA - Organization for Nucleotide Sequencing and Analysis,
http://watson.fapesp.br/onsa/Genoma3.htm. Genoma3.
[54] Page, I. Recongurable processor architectures. Microprocessors and Microsystems
(Special Issue on Codesign), 20:185196, 1996.
[55] Pappas, N. P. Searching biological sequence databases using distributed adaptive
computing. Dissertacao de Mestrado, Virginia Polytechnic Institute and State Uni-
versity, Blacksburg, Virginia, Janeiro de 2003.
[56] Paracel, Inc, http://www.paracel.com/. 2001.
[57] Paracel Inc, http://www.paracel.com/products/pdfs/gm2 datasheet.pdf. The Gene-
matcher2 System Datasheet, 2002.
[58] Patzer, A. Highly parallel DNA sequence matching and alignment processor.
86
[59] Pearson, W. R. e Lipman, D. L. Improved tools for biological sequence comparison.
Proceedings Of The National Academy Of Science USA, 85:24442448, Abril de 1988.
[60] Puttegowda, K., Worek, W., Pappas, N., Dandapani, A., e Athanas, P. A run-time
recongurable system for gene-sequence searching. Proceedings of the International
VLSI Design Conference, Janeiro de 2003.
[61] Rognes, T. ParAlign: a parallel sequence alignment algorithm for rapid and sensitive
database searches. Nucleic Acids Research, 29(7):16471652, 2001.
[62] Rognes, T. e Seeberg, E. Six-fold speed-up of Smith-Waterman sequence data-
base searches using parallel processing on common microprocessors. Bioinformatics,
16(8):699706, 2000.
[63] Saad,. Sparskit: A basic tool kit for sparse matrix computation. Relatorio Tecnico
CSRD TR 1029, University of Illinois, Urbana, IL, 1990.
[64] Setubal, J. C. e Meidanis, J. Computational Molecular Biology. PWS, 1997.
[65] Simpson, A. J. G. The genome sequence of the plant pathogen xylella. Nature,
406:151157, Julho de 2000.
[66] Smith, T. e Waterman, M. Identication of common molecular subsequences. Journal
of Molecular Biology, 147:195197, 1981.
[67] TimeLogic Corp, http://www.timelogic.com. 2002.
[68] TimeLogic Corp, http://www.timelogic.com/ decypher intro.html. DeCypher, 2002.
[69] Trelles, O. On the parallelization of bioinformatic applications. volume 2, 2001.
[70] Villasenor, J. e Amgione-Smith, W. Congurable computing. Scientic American,
19:5458, 1997.
[71] Waterman, M. S. Sequence alignments. paginas 5392. CRC Press, 1989.
[72] Watson, J. D. e Crick, F. H. Molecular structure of nucleic acids: A structure for
deoxyribose nucleic acid. Nature, 171:737738, Abril de 1953.
[73] White, C. T., Singh, R. K., Reintjes, P. B., Lampe, J., Erickson, B. W., Det-
tlo, W. D., Chi, V. L., e Altschul, S. F. Bioscan: A vlsi system based for biosequence
analysis. paginas 504509. IEEE Computer Society Press, 1991.
[74] Worek, W. J. Matching genetic sequences in distributed adaptive computing sys-
tems. Dissertacao de Mestrado, Virginia Polytechnic Institute and State University,
Blacksburg, Virginia, Julho de 2002.
[75] Xilinx, Inc., http://www.xilinx.com.
[76] Yamaguchi, Y., Maruyama, T., e Konagaya, A. High speed homology search with
FPGAs. Pacic Symposion on Biocomputing, paginas 271282, 2002.
[77] Yang, B. H. W. A parallel implementation of Smith-Waterman sequence comparison
algorithm. Relatorio Tecnico ID: 4469409, Instituicao, 2002.
[78] Yu, C. W., Kwong, K. H., Lee, K. H., e Leong, P. H. W. A smith-waterman systolic
cell. The Chinese University of Hong Kong, 2003.
87

You might also like