Uma Unidade Lógica e Aritmética Reversível - PPGINF

Propaganda
WECIQ 2006 - Artigos
Uma Unidade Lógica e Aritmética Reversível
Amanda Leonel Nascimento1, Luis A. Brasil Kowada2, Wilson Rosa de Oliveira3
1
Departamento de Sistemas Computacionais, Escola Politécnica de Pernambuco
Universidade de Pernambuco (UPE) – Recife, PE
2
Programa de Engenharia de Sistemas e Computação
Universidade Federal do Rio de Janeiro (UFRJ) - Rio de Janeiro, RJ
3
Departamento de Estatística e Informática,
Universidade Federal Rural de Pernambuco (UFRPE) – Recife, PE
[email protected], [email protected], [email protected]
Abstract. Reversible logic is at the heart of a number of applications in
Unconventional Models of Computing such as Quantum Computing,
Nanotechnology and Optics Computing. The Arithmetic-Logic Unit (ALU)
represents the basis of the processor of any classic (conventional) computer. In this
paper it is proposed a basic reversible ALU (R-ALU) which can be executed in both
classical and quantum computers. The main modules of the reversible unit are
described followed by a discussion of the implications of some applications of
quantum computing in the R-ALU functioning.
Resumo. A lógica reversível tem se tornado a base para um número significativo
de aplicações em Modelos de Computação Não-Convencionais, tais como a
Computação Quântica, a Nanotecnologia e até mesmo a Computação Óptica. De
modo diferente, mas não menos importante, uma Unidade Lógica e Aritmética
(ULA) representa a base do processador de um computador. Neste artigo,
propomos uma ULA reversível (ULA-R) básica, que pode ser utilizada tanto para
construir computadores clássicos reversíveis quanto computadores quânticos.
Descrevemos os principais módulos da unidade reversível e discutimos as
implicações de algumas aplicações quânticas em seu funcionamento.
1. Introdução
A Computação Clássica convencional é expressa, essencialmente, em termos de passos
irreversíveis, ou seja, a partir do resultado de uma operação, não é possível obter os dados de
entrada. Isto acontece, por exemplo, com a operação erase, que apaga um bit de informação,
liberando energia em forma de calor. O circuito, além de aquecer, desperdiça energia
[Vignatti et al. 2004].
Recentemente, a Computação Reversível emergiu como uma alternativa promissora,
por garantir a implementação de circuitos de forma conservativa, isto é, sem perdas de
informação ou calor (na verdade, perdas ínfimas). Circuitos reversíveis tornaram-se motivo
de grande interesse, não apenas pela economia de energia. Com a miniaturização crescente
dos componentes lógicos e a duplicação da velocidade dos computadores aproximadamente a
cada dois anos, estimadas pela Lei de Moore [Nielsen and Chuang 2005], o aquecimento
tornou-se uma barreira para as novas tecnologias, tais como a Nanotecnologia [Vignatti et al.
2004].
149
Além de substituir os circuitos clássicos convencionais, otimizando o consumo de
energia, a principal motivação para a Computação Reversível é o fato de a Computação
Quântica ser inerentemente reversível. Um computador reversível pode seguir a arquitetura
de Von Newmann, contando com uma Unidade Lógica e Aritmética (ULA), uma Unidade de
Controle, registradores, além de outros dispositivos secundários. Mas a forma como estas
unidades são projetadas deve seguir o modelo reversível. Nas seções seguintes, propomos
uma ULA reversível (ULA-R). Inicialmente, apresentamos os modelos de algumas ULAs.
Em seguida, os módulos mais freqüentes, em uma ULA convencional, são descritos
reversivelmente, para a arquitetura apresentada.
2. Unidades Lógicas e Aritméticas
2.1. ULA Clássica (ULA-C)
Em geral, o circuito de uma ULA-C básica tem por entrada duas palavras binárias (conjunto
de bits) A e B de n bits cada, chamadas “operandos”, e um código F de seleção,
especificando a operação a ser gerada, conforme mostrado na figura 1(a). Sendo x o
tamanho dessa entrada binária F , a função aritmética ou lógica a ser executada é selecionada
entre um conjunto de 2 x possíveis funções implementadas na ULA. A saída mais simples é
composta por uma palavra S = f ( A, B ) , também de n bits, e por um sinal carry-out que é
ativado quando ocorre um “vai-um” no último bit do resultado da operação. Internamente, é
composta por módulos menores, que executam funções específicas.
2.2. ULA Quântica (ULA-Q)
Figura 1. (a) Símbolo padrão para ULA-C convencional na representação em
diagrama de blocos. Setas de espessuras diferentes são utilizadas de acordo
com a quantidade de bits dos dados, indicada pelo valor próximo a elas.
(b) Arquitetura de um computador quântico resistente a falhas, proposto em
[Oskin, Chong and Chuang 2002]. Os bancos de memórias quânticas dão
suporte à conversão eficiente de código. A ULA-Q executa todas as operações
quânticas, auxiliada pelo gerador de q-bit ancilla. O escalonador dinâmico
controla todo o processo.
Também em computadores quânticos, a ULA é a unidade mais importante. Em [Oskin,
Chong and Chuang 2002], os autores propõem uma arquitetura para computadores
quânticos tolerantes a falhas. No coração dessa arquitetura, se encontra a ULA-Q,
150
responsável por realizar operações quânticas de cálculos e correções de erro. Na figura
1(b), é mostrado o diagrama desta arquitetura.
2.3. ULA Reversível (ULA-R)
Semelhante a uma ULA Clássica, mas que pode operar reversivelmente. Propomos uma
Unidade Aritmética e Lógica Reversível básica para inteiros não-negativos. A
representação da ULA-R, tanto para o modelo clássico quanto para o quântico, é dada
na figura 2.
Assim como em [Vedral et al. 1996], as entradas são codificadas na forma
binária na base computacional dos bits selecionados, sendo chamadas de registro. Ou
ainda, quando necessária a representação decimal, utilizaremos a notação de Dirac
adotada por [Mermin 2002]: x n , em que x indicará o valor decimal; e n , o número
de bits do registro. Esta representação é utilizada habitualmente para bits quânticos
(q-bits), mas neste texto será utilizada também para representar bits reversíveis
clássicos, pois, a menos que se explicite o contrário, não há superposição de estados. A
decomposição binária de qualquer registro x n , neste trabalho, é dada por
xn−1 ⊗ xn− 2 … x1 ⊗ x0 , onde ⊗ representa o produto tensorial; e o valor
armazenado equivale a x = 2n−1 xn−1 + 2n− 2 xn− 2 + … + 20 x0 .
Figura 2. Representação em bloco da Unidade Lógica e Aritmética Reversível (ULA-R)
Na ULA-R, assim como na ULA-C, a função a ser gerada é selecionada a partir
de um código F de operações. A tabela 1 ilustra as operações que podem ser executadas
reversivelmente nesta ULA após sua implementação. Sempre é possível a
implementação no qual o resultado ocupa bits diferentes dos utilizados pelos operandos.
Mas é ideal utilizar o menor número de bits.
F0
F1
F2
F3
A
B
0
F0
F1
F2
F3
...
A
n
n
I
¬A
¬B
...
n
A=B
A>B B
S=f(A,B)
Figura 3. Combinação dos diferentes módulos no interior da ULA reversível. O
resultado está representado por uma seqüência de n bits, que, em algumas
operações, podem ocupar o lugar de um dos operandos.
151
Cada função é implementada através de um circuito básico conforme será
mostrado nas seções seguintes. Estes circuitos podem ser concatenados, sendo
controlados pelos bits que definem F , segundo demonstrado na figura 3. Assim,
somente um circuito é ativado por vez.
Tabela 1. Códigos
F de seleção em uma Unidade Lógica Aritmética e Reversível básica
CÓDIGO
SAÍDA
OPERAÇÃO
0000
I
Identidade das entradas
0001
¬A
Inverte A
0010
¬B
Nega B
0011
A∧ B
A AND B
0100
A∨ B
A OR B
0101
A⊕ B
A XOR B
0110
A+ B
A somado a B
0111
B− A
A subtraído de B
1000
A× B
A multiplicado por B
1001
A÷ B
A dividido por B
1010
Rol A
Deslocamento do resgistro A à esquerda
1011
Rol B
Deslocamento do resgistro B à esquerda
1100
Ror A
Deslocamento do resgistro A à direita
1101
Ror B
Deslocamento do resgistro B à direita
1110
A= B
Detector de igualdade entre A e B
1111
A > B, A ≠ B
Comparador entre A e B
3. Módulos Lógicos Básicos Reversíveis
3.1. NOT
A porta clássica NOT, que inverte o bit de entrada, já realiza uma operação unitária. A
generalização para o caso quântico tanto pode ser dada diretamente pelo operador
 0 1 quanto através de portas reversíveis controladas que invertam o q-bit alvo. O
X=
1 0 


diagrama correspondente a este módulo de n bits é dado na figura 4(a). Note que a
saída substitui o valor de entrada.
3.2. AND
O módulo AND é responsável por realizar a operação AND ( ∧ ) entre os dois operandos,
reversivelmente. Assim, as saídas deste componente assumem o estado 1 apenas
quando os q-bits de entrada também estiverem em 1 . Conforme a figura 4(b), é
possível observar a necessidade de um novo bit para cada operador.
152
3.3. OR
Este módulo efetua a operação OR ( ∨ ) entre os operandos. Podemos construir uma
porta reversível OR a partir da AND vista anteriormente. Seguindo a Lei de De Morgan,
basta aplicarmos o operador X às entradas ou utilizarmos uma porta Toffoli com
controles ativados em 0 e q-bit alvo no estado 1 . Assim como na porta AND, a
simulação de cada porta OR necessita de um novo bit, segundo descrito na figura 4(c).
3.4. XOR
O último módulo lógico básico desta ULA é talvez o mais simples de ser construído
reversivelmente. Pois a implementação da versão reversível da porta XOR, com CNOT,
dispensa q-bits extras. Desta maneira, o componente apenas realiza a operação
exclusive-OR, equivalente à soma módulo 2, entre o par de entrada. O resultado da
operação ocupa um dos bits de entrada na figura 4(d).
Figura 4. Circuitos reversíveis para operações lógicas com operandos de n bits.
(a) Inversor (b) AND (c) OR (d) XOR
4. Módulos Aritméticos Reversíveis
Os módulos reversíveis apresentados nesta seção tratam-se de componentes derivados
dos circuitos propostos por [Vedral et al. 1996] e dos algoritmos aritméticos reversíveis
descritos em [Kowada 2006].
4.1. Somador
Um somador completo clássico (full adder) é um componente que apresenta 3 entradas:
o par a e b a ser somado e a terceira, adicional, chamada de carry-in ( ci ) ou “vem-um”;
e 2 saídas: a soma módulo 2 dos bits de entrada e o carry-out ( co ) ou “vai-um”.
A versão reversível de um somador completo pode ser obtida utilizando-se
apenas 4 portas, conforme o circuito apresentado na figura 5(a). O resultado da
operação substitui um dos operandos. A tabela 2 descreve os passos da evolução deste
módulo.
Assim como no modelo clássico, a expansão deste módulo também pode ser
realizada em série ou cascata, para adição entre operadores de tamanho n . O primeiro
carry-in é inicializado em 0 , e o carry-out da última soma corresponde ao sn do
resultado Soma = sn sn−1 … s0 .
153
Tabela 2. Passos da evolução do circuito somador reversível
P0
P1
P2
P3
P4
ci
ci
ci
ci
ci
a
a
a
a
a
b
b
a⊕b
a⊕b
a ⊕ b ⊕ ci
0
a∧b
a∧b
( a ∧ b ) ⊕ ( ci ∧ ( a ⊕ b ))
( a ∧ b ) ⊕ ( a ∧ c i ) ⊕ ( b ∧ ci )
4.2. Subtrator
O circuito clássico para subtração trata-se de um componente um tanto mais complicado
que o somador (detalhes em [Uyemura 2002]). Em contrapartida, o modelo reversível
de um subtrator é mais simples, basta executarmos o somador de modo reverso.
Compare as figuras 5(a) do somador e 5(b) do subtrator reversíveis.
Este módulo apresenta uma entrada e uma saída adicionais, chamadas borrow,
que assumem o estado 1 quando a subtração realizada equivale a 0 − 1 . (Confira a
evolução para esses valores usando a tabela 3)
Também é possível a expansão em série com subtratores reversíveis para
palavras de tamanho n . O último borrow representa sn - o bit mais significativo do
resultado Subtração = sn sn−1 … s0 , e seu estado em 1 indica resultado negativo da
operação. Neste caso, a saída da subtração equivale a 2n +1 − ( A − B ) [Kowada 2006].
Tabela 3. Passos da evolução do circuito subtrator reversível
P0
P1
P2
P3
P4
ci
ci
ci
ci
ci
a
a
a
a
a
b
ci ⊕ b
ci ⊕ b
a ⊕ ci ⊕ b
a ⊕ b ⊕ ci
0
0
ci ∧ ( ci ⊕ b )
( ci ∧ ci ) ⊕ ( b ∧ ci )
ci ⊕ ( b ∧ ci )
Figura 5. (a) Somador Completo (b) Subtrator reversível
4.3. Multiplicador
Existem poucos algoritmos eficientes, clássicos ou reversíveis, como o Karatsuba
[Kowada et al 2006] e o de Booth [Vargas 2004]. Para o circuito multiplicador desta
ULA-R, utilizamos o algoritmo padrão para multiplicação reversível, descrito em
154
[Kowada 2006]. É possível construí-lo a partir de somadores controlados, que realizam
a soma se o estado do controle for 1 , ou retornam o segundo operando caso contrário
(confira a figura 6).
Figura 6. Esquema em blocos do circuito MULT1 apresentado em [Kowada 2006],
executando a . b , sendo
b = bn-1 … b0 . Algumas linhas de entrada de cada
somador são agrupadas em uma única linha de saída.
Iniciamos a primeira soma controlada com os estados 20. a e 0 . Se b0 = 1 ,
a operação é realizada, e o resultado, 20. a - equivalente a a multiplicado por b0 será o segundo operando do próximo somador. Quando bi = 0 , a multiplicação
prossegue com o resultado anterior ao somador controlado por bi , uma vez que o
segundo operando é simplesmente repassado quando o controle não é ativado.
4.4. Divisor
Também aqui utilizamos o algoritmo para divisão reversível descrito em [Kowada
2006], uma das únicas literaturas a tratar do modelo reversível desta operação.
Basicamente, a idéia deste circuito divisor de a m por b n é fazer determinadas
subtrações sucessivas (confira a figura 7).
Figura 7. Circuito divisor reversível de a por b . O registrador quântico do
quociente é obtido pelo produto tensorial
x m − n ⊗ x m − n − 1 ⊗ … ⊗ x0 . E a
saída inferior equivale ao resto da divisão [Kowada 2006].
155
Iniciamos subtraindo 2m − n . b de a . É aplicado um CNOT com controle ativado
pelo estado 0 no carry-out da operação. Desta forma, quando co = 0 (isto é,
operando inferior maior ou igual ao seguinte), o q-bit mais significativo do quociente
passa para o estado 1 e a subtração é mantida. O resultado dessa operação segue no
lugar do operando inferior da próxima. De outro modo, quando co = 1 (isto é,
operando inferior menor que o superior), o q-bit seguinte do quociente mantém-se no
estado 0 , e a subtração é desfeita pelo somador com controle ativado pelo estado 0 .
O resultado prossegue até o final da divisão, quando o último estado do registro do
quociente é gerado e, enfim: Y = a − b (2m − n xm − n + 2m − n−1 xm − n−1 + … + 2 x1 + x0 ) .
5. Módulos Lógicos Reversíveis
5.1. Detector de Igualdade
A versão clássica deste módulo trata-se de um componente responsável por detectar, bit
a bit, a igualdade entre duas palavras de n bits cada. Utiliza-se a função exclusive-NOR
1 se ai = bi
 0 se ai ≠ bi
(XNOR) como função de equivalência, uma vez que: ai ⊕ bi = 
O módulo reversível pode ser construído com portas CNOTs seguidas por uma
porta Toffoli generalizada, ativada nos estados 0 , segundo a figura 8a. A evolução do
módulo é dada na tabela 8b ao lado.
P0
a0
a0
b0
a0 ⊕ b0
an−1
an−1
bn−1
an−1 ⊕ bn −1
a0 ⊕ b0 ∧ … ∧ an−1 ⊕ bn −1
0
(a)
P1
(
)
(
)
(b)
Figura 8. (a) Módulo detector de igualdade reversível. (b) Evolução do circuito.
5.2. Comparador
Semelhante ao módulo anterior, o comparador é um sistema combinacional que indica a
relação entre as magnitudes das palavras de entrada. Propomos a implementação de um
comparador reversível que revela se A > B . E acrescentamos uma última porta, para
indicar se A ≠ B , conforme a figura 9. Pois, segundo o subtrator B − A , quando A > B ,
o estado do último borrow mede 1 . Assim, utilizaremos o módulo da subtração para
auxiliar esta operação.
156
Figura 9. Rede de comparadores reversíveis. Se todas as subtrações
correspondentes resultarem no estado
0 , as duas palavras não são diferentes.
5.3. Rotate Left Logical ( ROL)
Os dois últimos módulos apresentados executam o deslocamento de bits em um registro
clássico, para campos adjacentes. Quando a operação deve ocorrer da direita para a
esquerda, o componente a ser ativado é o Rotate Left Logical. Propomos utilizar um
conjunto de CNOTs que simule o operador SWAP. Assim, o módulo ROL pode ser
implementado com o trio controlado conforme a ordem descrita na figura 10(a).
5.4. Rotate Right Logical (ROR)
No Rotate Right Logical clássico, uma posição de bit recebe o conteúdo do seu vizinho
imediatamente à esquerda, efetuando o deslocamento dos dados para a direita. Um ROR
também pode ser implementado com o trio SWAP, entretanto, em ordem inversa,
apresentada na figura 10(b).
Figura 10. Deslocadores de registro: (a) Rotate Left Logical (b) Rotate Right Logical
157
6. Aplicações Quânticas
Até agora, tratamos apenas reversivelmente da ULA proposta, isto é, ainda não foram
exploradas propriedades inerentes à Computação Quântica, tais como superposição de
estados ou processamento paralelo.
Em [Milosav 2005], é demonstrada uma maneira típica de operar um somador
quântico, explorando a capacidade de um computador quântico permanecer
simultaneamente em estados distintos superpostos. Entretanto, o autor apresenta um
circuito que, erroneamente, gera o estado equivalente a (a ∧ b) ⊕ (a ∧ b ) ⊕ (b ∧ ci )
para a saída carry-out, comprometendo a operação. Obviamente, utilizamos aqui o
somador desta ULA-R (confira a operação corrigida na figura 11). E, preparando-se
com uma transformação Walsh-Hadamard (mais detalhes em [Nielsen and Chuang
2005]) os q-bits das n entradas a serem somadas, o somador quântico é capaz de
realizar a soma de todos os 2n estados superpostos possíveis.
Figura 11. Somador quântico completo operando sobre a superposição dos 4
estados possíveis nas entradas a serem adicionadas. Ψ é o estado do registro
AB ; e Φ , o estado dos 4 possíveis resultados [Milosav 2005].
Se, entretanto, aplicamos o paralelismo quântico a uma das entradas de um
multiplicador reversível, podemos obter, executando apenas uma única vez a ULA-R,
todos os múltiplos desejados da entrada não superposta inicialmente. O registrador
quântico resultante da multiplicação contém todos os múltiplos de A n na forma
A.x
n+ m
, sendo x
bits assim como B
m
m
, isto é, qualquer número que possa ser representado por m q-
.
Essas aplicações sugerem um possível ganho exponencial de velocidade de
processamento da ULA-R proposta sobre uma ULA-C. Contudo, de acordo com os
princípios de medição na Mecânica Quântica, ao medirmos uma saída superposta, todo
o paralelismo é desfeito, e apenas um dos resultados será obtido ao final, perdendo-se os
demais. E, tratando-se de uma transformação Hadamard, as probabilidades dos
resultados são iguais entre si, possibilitando a saída de qualquer um desses na medição.
Para que o paralelismo quântico tenha uma utilidade imediata em uma ULA-R,
necessitamos da aplicação de algoritmos quânticos apropriados para a extração dos
resultados desejados no processamento maciço quântico. Alguns poucos circuitos
158
aritméticos eficientes, como em [Draper 2000] e [Nguyen 2001], têm sido obtidos com
sucesso quanto às melhorias resultantes de aplicações quânticas, em geral, graças à
Transformada de Fourier Quântica.
7. Conclusões
A Computação Reversível tornou-se indispensável para muitos dos modelos de
computação em desenvolvimento, como a Computação Quântica. Apresentamos uma
ULA reversível básica, semelhante às clássicas, que opera de modo reversível. Contudo,
nem sempre a conversão direta pode produzir um menor circuito ou mais eficiente.
A partir dos módulos reversíveis apresentados, é possível construir uma ULA
que execute em um computador quântico. Porém, dado o estado atual das pesquisas em
Computação Quântica, nos encontramos um tanto distantes da implementação de uma
ULA inerentemente quântica, como Chuang idealizou em [Oskin, Chong and Chuang
2002], realizando até mesmo a correção de erros em um processador quântico. Uma
ULA-R é certamente mais um passo até essa realização.
Referências
Draper, T.G. (2000). Addition on a Quantum Computer. ArXiv:quant-ph/ 0008033.
Kowada, L. A. B. (2006). Construção de Algoritmos Reversíveis e Quânticos. Tese de
Doutorado – COPPE / UFRJ.
Kowada, L. A. B.; Portugal, R. Figueiredo and C. M. H. de (2006). Reversible
Karatsuba. Journal of Universal Computer Science.vol 12, n. 5 pg 499-511.
Mermin, N.D. (2002). From Cbits to Qbits: Teaching Computer Scientists Quantum
Mechanics. ArXiv:quant-ph/ 0207118.
Milosav, M.U. (2005). Quantum Circuits Engineering: Efficient Simulation and
Reconfigurable Quantum Hardware. Ph.D. Thesis. Universitatea “Politehnica” Din
Timiçoara, România.
Nielsen, M. A. and Chuang, I. L. (2005). Computação Quântica e Informação Quântica.
Bookman.
Nguyen, A. Q. (2001). Optimal Reversible Quantum Circuit for Multiplication. Tech
Reports/2004010, v.2.
Oskin, M.; Chong, F. T. and Chuang, I. L. (2002). A Practical Architecture for Reliable
Quantum Computers. IEEE Computer, Jan.2002. pg 79-87
Thapliyal, H and Srinivas, M. B. (2006). Novel Reversible Multiplier Architecture
Using Reversible TSG Gate. Center for VLSI and Embedded Technologies.
Uyemura, J. P. (2002). Sistemas Digitais – Uma Abordagem Integrada. Thomson
Learning.
Vargas, F. L. (2004). Engenharia de Computadores I. DEE, PUCRS.
Vedral, V.; Barenco, A. and Ekert, A. (1996). Quantum Networks for Elementary
Arithmetic Operations. Physical Review A, v.54, n.1.
159
Vignatti, A. L.; Netto Summa, F. and Bittencourt, L. F. (2004). Uma Introdução à
Computação Quântica. Departamento de Informática. UFPR.
160
Download