O algoritmo BLAST visa alinhar 2 sequˆencias de DNA. Estando as duas sequˆencias codificadas e armazenadas em registradores s e t, a primeira etapa do algoritmo ´e dividir a sequˆencia t
5.1 Processador de extens˜ao 85 ... ... Processador Extensão Processador Extensão Processador Extensão Processador Extensão Árbitro Memória i j d
Figura 20: Processadores de extens˜ao paralelos escrevendo em mem´oria
em palavras menores de tamanho w. Ap´os realizar essa divis˜ao, o algoritmo busca pequenos trechos idˆenticos, comparando peda¸cos de w bits entre s e t. Para cada um desses trechos idˆenticos encontrados, chamados de sementes, ´e gerado uma etiqueta, que cont´em a posi¸c˜ao dessa semente nas sequˆencias s e t. ´E a partir dessa etiquetas que ´e realizada a etapa de extens˜ao.
Cada etiqueta ´e armazenada no formato (i, j, d). O ´ındice i corresponde a posi¸c˜ao na sequˆencia s onde foi encontrada a igualdade. O ´ındice j corresponde a posi¸c˜ao na sequˆencia t onde foi encontrada a igualdade. O ´ındice d corresponde ao n´umero de bits de igualdade que cada semente tem, sendo que w ´e o valor inicial.
Como descrito no Cap´ıtulo 2, realizar a extens˜ao consiste em recuperar o valor das etiquetas, e analisar se aumentando o valor de w, as sequˆencias continuam sendo semelhantes. Essa compara¸c˜ao se d´a tanto para a esquerda, quanto para a direita. Por exemplo, supondo que a etiqueta (10, 5, 4) ´e recebida pelo processador de extens˜ao. Isso indica que a partir das posi¸c˜oes s10 e t5, os pr´oximos 4 bits ser˜ao idˆenticos, resultando nos trechos (s10, s9, s8, s7) e (t5, t4, t3, t2).
Para realizar a extens˜ao `a esquerda, o processador ir´a recuperar o conte´udo pr´oxima posi¸c˜ao das duas sequˆencias: s11 e t6, compar´a-los, e caso o valor seja positivo, atualizar os ´ındices. O mesmo deve ser feito para o outro lado da sequˆencia, ou seja, para a extens˜ao `a
direita, ser˜ao recuperados as posi¸c˜oes s6 e t1.
Para sequˆencias muito grandes, a extens˜ao em um sentido, direita ou esquerda, pode le- var muito mais tempo do que em outro sentido. Visando otimizar a utiliza¸c˜ao de recursos nesse cen´ario, os processadores de extens˜ao tem componentes espec´ıficos para estender a semente `a direita e `a esquerda trabalhando paralelamente, por´em se comunicando. A fun¸c˜ao de cada componente ´e detalhada na Figura 21, onde ´e apresentada a arquitetura de um processador de
5.1 Processador de extens˜ao 86
extens˜ao.
Como descrito, um processador, recebe a etiqueta vinda de umas das filas. Essa etiqueta ´e carregada em contadores. A sa´ıda desses contadores ´e monitorada, gerando as interrup¸c˜oes atrav´es de l´ogica combinacional. No fim do processo, o valor dos contadores ´e armazenado em uma mem´oria de sa´ıda. Toda a l´ogica do processador de extens˜ao ´e baseada em compara¸c˜oes e somas, cujos resultados incrementam os contadores de (i, j, d), e consequentemente modificam os ´ındices que s˜ao utilizados para recuperar novas posi¸c˜oes, como visto na Figura 21.
Etiqueta (i, j ) i Contador i j d Contador j Contador d registrador t registrador s PI NI PI NI bit bit bit bit j i w j i Comparador Comparador ! !" # $ % & Somador i 1 NI ' ' Somador j 1 NI ' ' Somador i 1 PI ' ( d ( Somador j 1 PI) ' ( d (
Figura 21: Arquitetura do processador de extens˜ao
Ao receber uma etiqueta, o processador carrega seus contadores com os valores contidos nessa etiqueta. Ap´os isso, testa o valor dos contadores atrav´es de um circuito l´ogico-aritm´etico, que calcula o ´ındice das posi¸c˜oes que precisam ser recuperadas nos registradores. Ap´os calcular esses ´ındices, o processador solicita, atrav´es do barramento de controle, o bit contido em cada uma dessas posi¸c˜oes. O funcionamento ´e idˆentico a uma mem´oria, onde ´e calculado um endere¸co, e o dado contido naquele endere¸co ´e retornado.
Ap´os recuperar os bits de s e j, o processador testa se h´a igualdade ou n˜ao, utilizando o circuito combinacional mostrado na Figura 21. Com esse resultado, o processador decide se continua ou se para a extens˜ao. Em caso de igualdade, o processador deve incrementar o contador e atualizar os ´ındices. Quando encontra uma diferen¸ca, o processador armazena o valor presente dos contadores, i, j e d, em mem´oria e informa ao controlador que est´a livre. A extens˜ao para a esquerda, trabalha com os contadores i e j. De forma an´aloga, a extens˜ao
5.1 Processador de extens˜ao 87
Tabela 14: Lista de interrup¸c˜oes do processador Interrup¸c˜ao Situa¸c˜ao
Int(1) jt atingiu o limite inferior:(0, ou w − 1) Int(2) jt atingiu o limite superior:(n − 1) Int(3) is atingiu o limite inferior:(0, ou w − 1) Int(4) is atingiu o limite superior:(m − 1) Int(5) si−1 diferente de tj−1
Int(6) si+1 diferente de tj+1
para a direita, procura similaridades a direita, incrementando o contador d e atualizando os ´ındices em caso de igualdade.
Independentemente do lado que a extens˜ao estiver sendo feita, direita ou esquerda, ´e necess´ario que o processador saiba quando deve parar de realizar a extens˜ao. Numa sequˆencia de 18 bits, quando o processador atingir a posi¸c˜ao 18, ele deve receber um sinal indicando o fim da repeti¸c˜ao. De forma an´aloga, na extens˜ao para o outro lado, quando estiver na posi¸c˜ao 0, ele deve reconhecer que n˜ao h´a mais o que fazer com aquela sequˆencia. Para informar ao processador e aos outros componentes que essas posi¸c˜oes foram atingidas, elaborou-se um mecanismo de interrup¸c˜oes.
As opera¸c˜oes realizadas pelo processador tˆem limites superiores e inferiores, que indi- cam quando a posi¸c˜ao mais significativa ´e atingida, e quando a posi¸c˜ao menos significativa ´e atingida. Dessa forma, quando a extens˜ao atinge a primeira ou a ´ultima posi¸c˜ao poss´ıvel de um registrador, ´e gerado um sinal de interrup¸c˜ao. As interrup¸c˜oes dos processadores s˜ao apresen- tadas na Tabela 14. Al´em das posi¸c˜oes limites, ocorre tamb´em uma interrup¸c˜ao quando os bits carregados s˜ao diferentes. Cada interrup¸c˜ao tem significado local, apenas para o processador p em quest˜ao e o seu respectivo controlador de etapa. O objetivo desses sinais de interrup¸c˜ao ´e informar ao controlador de etapa que aquele processador n˜ao pˆode mais realizar a extens˜ao em um dos sentidos, ou em ambos os sentidos. Dessa forma, o controlador de etapa daquele processador, identificar´a qual pr´oxima a¸c˜ao dever´a realizar.
Dentro do processador de extens˜ao, os ´ındices e as etiquetas s˜ao atualizadas, utilizando estruturas de compara¸c˜ao semelhantes a da etapa de semeadura e contadores para armazenar a pontua¸c˜ao. Quando da op¸c˜ao por separar a parte alta e a parte baixa das sequˆencias, o objetivo era tamb´em simplificar o hardware, o que realmente aconteceu, pois as estruturas para comparar um bit se resumem, na maioria das vezes, a portas l´ogicas.
Quando atingir uma pontua¸c˜ao que n˜ao puder ser melhorada, os valores dos contadores ser˜ao armazenados em uma mem´oria que constitui a sa´ıda da extens˜ao para avalia¸c˜ao da