• Nenhum resultado encontrado

Algoritmo de Montgomery Modificado em Lógica Binária

1.5 Descrição de Hardware

2.2.3 Algoritmo de Montgomery Modificado em Lógica Binária

Considerando a expressão (𝑆 +𝑎𝑖×𝐵+𝑞𝑖×𝑀 ) presente na linha cinco do Algoritmo 2, o resultado da expressão depende dos valores das variáveis 𝑎𝑖 e 𝑞𝑖 a cada iteração do laço do comando for. Os possíveis resultados para esta expressão são apresentados na Tabela 2.

Tabela 2: Resultado da expressão da linha cinco do Algoritmo2.

𝑎𝑖 𝑞𝑖 𝑆 + 𝑎𝑖× 𝐵 + 𝑞𝑖× 𝑀 0 0 𝑆 1 0 𝑆 + 𝐵 0 1 𝑆 + 𝑀 1 1 𝑆 + 𝑀 𝐵1 1MB é o resultado de 𝑀 + 𝐵

A partir da Tabela2, uma versão em lógica binária do algoritmo de Montgomery é apresentado no Algoritmo 5. A linha quatro do Algoritmo 2se transforma na linha cinco do Algoritmo5. A operação de 𝑎𝑖× 𝑏0 consiste de uma máscara aplicada no bit 𝑏0 a cada

iteração do valor de 𝑖. A soma dos bits 𝑎𝑖 × 𝑏0 com o bit 𝑠0 é feita através do circuito

digital que tem a propriedade de soma, ou seja, através de uma porta ou-exclusivo de duas entradas. Como a expressão completa é, na verdade, 𝑠0 + 𝑎𝑖 × 𝑏0 𝑚𝑜𝑑 2, o próprio

circuito ou-exclusivo já realiza a operação modular para este caso, não sendo necessário nenhuma lógica adicional.

A linha cinco do Algoritmo2se transforma no trecho compreendido entre as linhas seis a 14 do Algoritmo5. Neste caso, o Algoritmo5expande a representação dos operandos em bits para visualização da soma através de circuitos somadores completos de um bit. O comando que percorre todos os bits dos operandos é o for da linha seis, através da variável j. O trecho entre as linhas sete a 11 refletem a seleção da parcela a ser somada com o valor anterior do produto modular, enquanto as linhas 12 e 13 representam a soma bit a bit dos operandos e os sinais de propagação de carry dos somadores completos de um bit.

Assumindo o Algoritmo5como base é possível construir uma arquitetura em forma de matriz, conforme ilustrada na Figura 6. Para esta arquitetura em forma de matriz, a variável i representa as linhas, enquanto a variável j representa as colunas.

Os elementos processadores da arquitetura em formato matricial do multiplicador modular de Montgomery calculam os bits 𝑠𝑗 do resíduo 𝑆. Isto representa o cálculo da expressão 𝑠(𝑖+1)𝑗 = 𝑠(𝑖)𝑗+1 xor 𝑥(𝑖)𝑗 xor 𝑐𝑎𝑟𝑟𝑦 do Algoritmo 5 e o carry de propagação (𝑠(𝑖)𝑗+1 and 𝑥(𝑖)𝑗 ) or (𝑠(𝑖)𝑗+1 and 𝑐𝑎𝑟𝑟𝑦) or (𝑥(𝑖)𝑗 and 𝑐𝑎𝑟𝑟𝑦) para os elementos vizinhos. A arquitetura do elemento processador básico, isto é, as 𝑐é𝑙𝑢𝑙𝑎𝑠𝑖,𝑗, onde 1 ≤ 𝑖 ≤ 𝑛 − 1 e 1 ≤ 𝑗 ≤ 𝑛 − 1, é ilustrada na Figura 7. Esta arquitetura implementa as instruções das linhas seis a 14 do Algoritmo 5, que consistem de um somador completo e um multiplexador de

Algorithm 5 Pseudocódigo Algoritmo de Montgomery Modificado em Lógica Binária - 𝑆𝑦𝑠𝑀 𝑜𝑛(𝐴, 𝐵, 𝑀, 𝑀 𝐵) 1: int 𝑆 = 0; 2: bit 𝑥; 3: bit 𝑐𝑎𝑟𝑟𝑦 = 0; 4: for 𝑖 = 0 to 𝑛 do 5: 𝑞𝑖 = 𝑠 (𝑖) 0 xor (𝑎𝑖 and 𝑏0) 6: for 𝑗 = 0 to 𝑛 do 7: switch (𝑎𝑖, 𝑞𝑖) 8: 1, 1 : 𝑥(𝑖)𝑗 = 𝑚𝑏𝑗; 9: 1, 0 : 𝑥(𝑖)𝑗 = 𝑏𝑗; 10: 0, 1 : 𝑥(𝑖)𝑗 = 𝑚𝑗; 11: 0, 0 : 𝑥(𝑖)𝑗 = 0; 12: 𝑠(𝑖+1)𝑗 = 𝑠(𝑖)𝑗+1 xor 𝑥(𝑖)𝑗 xor 𝑐𝑎𝑟𝑟𝑦;

13: 𝑐𝑎𝑟𝑟𝑦 = (𝑠(𝑖)𝑗+1 and 𝑥(𝑖)𝑗 ) or (𝑠(𝑖)𝑗+1 and 𝑐𝑎𝑟𝑟𝑦) or (𝑥(𝑖)𝑗 and 𝑐𝑎𝑟𝑟𝑦);

14: end for

15: end for

16: return 𝑆;

quatro canais de um bit.

A arquitetura do elemento processador da primeira linha e da primeira coluna, isto é, a 𝑐é𝑙𝑢𝑙𝑎0,0, é ilustrada na Figura 8. Além do cálculo das linhas seis a 14 do Algoritmo 5, este elemento processador também realiza o cálculo do valor de 𝑞𝑖 na linha cinco. Entretanto, como 𝑠(0)0 é 0 (iteração 𝑖 = 0 do algoritmo), o cálculo de 𝑞𝑖 fica reduzido a expressão (𝑎𝑖 and 𝑏0). Além disso, um somador completo de um bit não se faz necessário

porque o carry de entrada também é igual a 0, então a expressão 𝑠(0)1 xor 𝑥0

0 xor 𝑐𝑎𝑟𝑟𝑦

fica reduzida a 𝑥00 e a expressão (𝑠(0)1 and 𝑥00) or (𝑠(0)1 and 𝑐𝑎𝑟𝑟𝑦) or (𝑥00 and 𝑐𝑎𝑟𝑟𝑦) fica reduzida a 0.

Os elementos processadores restantes da primeira coluna da arquitetura fazem o mesmo processamento que os elementos processadores básicos e, assim como o elemento processador da primeira linha e da primeira coluna, calcula o bit 𝑞𝑖 porém para o caso geral, isto é, quando 𝑠𝑖0 não é nulo. Além disso, um somador completo de um bit pode ser substituído por um meio somador de um bit uma vez que o sinal de carry para estes elementos são nulos. Uma ilustração da arquitetura destes elementos processadores é apresentada na Figura 9.

A arquitetura dos elementos processadores da primeira linha, 𝑐é𝑙𝑢𝑙𝑎𝑠0,𝑗, excluindo

a 𝑐é𝑙𝑢𝑙𝑎0,0 é dada pela Figura 10. Como 𝑠(𝑖)𝑛 = 0, não se justifica a utilização de um somador completo de um bit. Sendo assim, o mesmo é substituído por um meio somador. O cálculo de 𝑀 +𝐵 é realizado uma única vez no início do processo de multiplicação modular. Esta operação pode ser feita através de uma cadeia de somadores completos

Figura 6: Arquitetura em formato matricial do multiplicador modular de Montgomery [15].

Figura 7: Arquitetura do elemento processador básico [15].

conectados serialmente ou alguma outra arquitetura de somadores mais eficiente [15]. Cada linha da arquitetura é responsável pelo cálculo da expressão (𝑆 + 𝑎𝑖× 𝐵 + 𝑞𝑖 × 𝑀 ) a cada iteração da variável i do Algoritmo 2. Entretanto, a expressão completa consiste em (𝑆 + 𝑎𝑖 × 𝐵 + 𝑞𝑖 × 𝑀 )/2. Em lógica binária, a divisão pelo número dois

Figura 8: Arquitetura do elemento processador da primeira linha e da primeira coluna - 𝑐é𝑙𝑢𝑙𝑎0,0 [15].

Figura 9: Arquitetura dos elementos processadores da coluna da direita - 𝑐é𝑙𝑢𝑙𝑎𝑠𝑗,0 [15].

Figura 10: Arquitetura dos elementos processadores da primeira linha - 𝑐é𝑙𝑢𝑙𝑎𝑠0,𝑗 [15].

representa o deslocamento de um bit para a direita. Sendo assim, o valor do 𝑆 que é entrada para a linha seguinte da matriz de elementos processadores é deslocado de um bit para a direita. Dessa forma, o cálculo é realizado de acordo com o Algoritmo 2.

Para validar a arquitetura sistólica apresentada na Figura 6, fez-se uma imple- mentação em Verilog HDL para quatro e oito bits. Verificou-se os estágio intermediários dos valores de 𝑆, ou seja, os valores da variável 𝑆 em cada uma das linhas da matriz de elementos processadores, bem como o seu resultado final. Os softwares desenvolvidos também verificaram dos valores intermediários e finais.

Por fim, conclui-se que a arquitetura apresentada realizou as operações com núme- ros de até oito bits com sucesso. Como os hardwares desenvolvidos para quatro e oito bits foram realizados através de processos modulares, em que a diferença entre eles consiste somente no aumento da quantidade de bits, pôde-se concluir que a arquitetura proposta por Nedjah [15] realiza a operação de multiplicação modular de Montgomery conforme apresentada pelos Algoritmos 1, 2 e5.

Documentos relacionados