• Nenhum resultado encontrado

1.5 Descrição de Hardware

2.2.5 Arquiteturas de Somadores

Somadores são circuitos digitais importantes que são utilizados não somente em unidades lógicas aritméticas, mas também em outras partes de processadores para cál- culo de endereços, índices de tabelas e operações similares. Meio somadores e somadores completos de um bit são circuitos versáteis utilizados para construções de diversas arqui- teturas de somadores. Um circuito meio somador de um bit recebe dois bits de entrada x e y e produz um bit de soma 𝑠 = 𝑥 ⊕ 𝑦 = ¯𝑥𝑦 + 𝑥¯𝑦 e um bit de carry out 𝑐𝑜𝑢𝑡 = 𝑥𝑦. A Figura 11ilustra três possibilidades de implementação lógica do circuito [21].

Um circuito somador completo de um bit tem como entrada três bits x, y e 𝑐𝑖𝑛 e produz um bit de soma 𝑠 = 𝑥 ⊕ 𝑦 ⊕ 𝑐𝑖𝑛 = 𝑥𝑦𝑐𝑖𝑛+ ¯𝑥¯𝑦𝑐𝑖𝑛+ ¯𝑥𝑦 ¯𝑐𝑖𝑛+ 𝑥¯𝑦 ¯𝑐𝑖𝑛 e um bit de carry out 𝑐𝑜𝑢𝑡 = 𝑥𝑦 + 𝑥𝑐𝑖𝑛+ 𝑦𝑐𝑖𝑛. Este circuito pode ser implementado utilizando dois circuitos meio somadores e uma porta lógica ou de duas entradas conforme ilustrado na Figura 12

[21].

Figura 12: Circuito somador completo de 1 bit [21].

A arquitetura de somadores utilizada por Nedjah [15] no multiplicador modular de Montgomery é a RCA. O circuito desta arquitetura, ilustrada na Figura 13 para quatro bits, é simples, o que permite um tempo de desenvolvimento menor para o projeto do circuito, bem como uma área menor para sua implementação, mas deixa a desejar em desempenho, pois a propagação dos sinais é lenta. O princípio de operação consiste na propagação do sinal de carry na cadeia dos somadores completos de um bit até que o último somador completo de um bit processe o sinal de carry de saída da soma (bit mais significativo da soma) [21].

Na arquitetura RCA, o caminho crítico é definido a partir da quantidade de bits do somador. Para um somador de 𝑛 bits, o caminho crítico é definido como o atraso de três portas lógicas (correspondente ao atraso das entradas e do processamento do carry de entrada) mais (𝑛 − 1) × 2, que corresponde às portas lógicas de propagação do carry. Exemplificando para um caso onde 𝑛 é igual a 1024 bits, o atraso total é de 3 + 1023 × 2, de 2049 portas lógicas [21].

Figura 13: Arquitetura RCA de quatro bits [21].

Uma forma de desenvolver um circuito somador mais rápido é através da inserção de uma lógica de baixa latência para auxílio do cálculo do bit de carry. O nome da arqui- tetura de somadores que dispõem desta técnica é somadores com lógica vai-um antecipado - CLA (Carry-Lookahead Adder ).

Um exemplo de um somador de 32 bits com arquitetura CLA é descrito a seguir. Como entrada deste somador, tem-se o operando x, o operando y e o sinal de carry de entrada 𝑐𝑖𝑛. O carry de entrada do bit 1 do somador é exatamente o carry de saída do bit 0 do somador, cuja equação lógica é:

𝑐1𝑖𝑛 = 𝑥0𝑦0+ (𝑥0⊕ 𝑦0)𝑐𝑖𝑛

De modo análogo, o carry de entrada do bit 2 do somador é dado por:

𝑐2𝑖𝑛 = 𝑥1𝑦1+ (𝑥1⊕ 𝑦1)𝑐1𝑖𝑛 Substituindo o valor do 𝑐1

𝑖𝑛 na equação lógica do 𝑐2𝑖𝑛, tem-se:

𝑐2𝑖𝑛 = 𝑥1𝑦1+ (𝑥1⊕ 𝑦1)[𝑥0𝑦0+ (𝑥0⊕ 𝑥0)𝑐𝑖𝑛)]

Observa-se que estas equações podem ser expandidas até o cálculo do último bit de carry. Entretanto, a expansão das equações é de ordem exponencial. Reagrupando a equação lógica do carry de forma genérica, obtêm-se:

𝑐𝑖+1𝑖𝑛 = 𝑥𝑖𝑦𝑖+ (𝑥𝑖⊕ 𝑦𝑖)𝑐𝑖𝑖𝑛

A partir da forma genérica é possível observar que os termos (𝑥𝑖𝑦𝑖) e (𝑥𝑖 ⊕ 𝑦𝑖) se repetem algumas vezes. Estes termos são denominados gerador (𝑔𝑖) e propagador (𝑝𝑖).

𝑔𝑖 = 𝑥𝑖𝑦𝑖 𝑝𝑖 = 𝑥𝑖⊕ 𝑦𝑖

Utilizando estas relações, defini-se a equação para 𝑐𝑖 𝑖𝑛:

𝑐𝑖+1𝑖𝑛 = 𝑔𝑖+ 𝑝𝑖𝑐𝑖𝑖𝑛

Com base nesta definição, tem-se as seguintes equações lógicas dos carries para os bits de 0 a 4:

𝑐1𝑖𝑛 = 𝑔0+ (𝑝0𝑐𝑖𝑛) 𝑐2𝑖𝑛 = 𝑔1+ (𝑝1𝑔0) + (𝑝1𝑝0𝑐𝑖𝑛) 𝑐3𝑖𝑛 = 𝑔2+ (𝑝2𝑔1) + (𝑝2𝑝1𝑔0) + (𝑝2𝑝1𝑝0𝑐𝑖𝑛)

onde 𝑐𝑖𝑛 é o carry de entrada do somador e 𝑐4𝑖𝑛 é o carry de saída do somador.

Mesmo essa formulação mais simplificada leva à equações muito grandes e, por- tanto, a circuitos lógicos grandes e de alto custo de implementação em hardware, mesmo considerando um somador de 32 bits [22]. Uma técnica utilizada para contornar este problema consiste em utilizar múltiplos níveis de lógicas CLA [21].

Uma outra forma de fazer o cálculo da soma de dois operandos é através da arqui- tetura de antecipação de sinal de carry através de computação paralela - PPA (Parallel- Prefix Adders). Esta técnica é equivalente à técnica do CLA e a diferença fundamental é a forma como o bloco de geração do carry é implementado [23]. A arquitetura genérica PPA foi proposta por Ladner e Fischer [24] em 1980 e acelerou o tempo de resposta de um somador de 𝑛 bits em tecnologia VLSI.

O projeto de um somador com arquitetura PPA geralmente é dividido em três passos. O primeiro passo consiste em criar os sinais de geração e propagação para todos os bits dos operandos. O segundo passo consiste do cálculo dos carries intermediários através do agrupameto lógico dos sinais de geração e propagação. No terceiro e último passo, os bits da soma do circuito somador são calculados com os sinais de propagação e com os bits de carry gerados a partir do agrupamento lógico dos sinais de geração e propagação [23]. A Figura14 ilustra esse processo.

Figura 14: Passos para projeto de um somador de arquitetura PPA [23].

Esta abordagem abre possibilidades para novos arranjos de lógica de cálculo para- lelo de carries que apresentam uma quantidade enorme de vantagens e desvantagens em termos de profundidade de níveis lógicos do caminho crítico, quantidade de elementos, fan-out e quantidade de interconexões. Dessa forma, o projeto de somadores se reduz ao arranjo de lógica dos grupos de geração e propagação - GPGL (Group Propagate and Ge- nerate Logic) apresentado na Figura15. A soma é calculada através de uma lógica simples de ou-exclusivo entre o grupo propagação e o agrupameto lógico dos sinais de geração e propagação [25].

O arranjo da lógica de geração dos carries intermediários caracteriza o tipo de somador PPA projetado. Dentre os arranjos de lógica mais conhecidos, pode-se citar:

Figura 15: Exemplo esquemático somador quatro bits arquitetura PPA [25].

Kogge-Stone, Brent-Kung e Han-Carlson.

O somador com arranjo de Kogge-Stone - KSA (Kogge-Stone Adder ) possui as ca- racterísticas de menor profundidade de níveis lógicos possível do caminho crítico e o menor fan-out, em contrapartida, este também possui uma grande quantidade de elementos e interconexões [23].

O somador com arranjo de Brent-Kung - BKA (Brent-Kung Adder ) tem como característica principal a menor quantidade possível de elementos, o que aumenta o apro- veitamento de área, mas possui uma profundidade de níveis lógicos do caminho crítico que impactam na latência desta estrutura [23].

O somador com arranjo Han-Carlson - HCA (Han-Carlson Adder ) combina as técnicas dos somadores KSA e BKA e apresenta uma estrutura balanceada entre a pro- fundidade de níveis lógicos do caminho crítico, quantidade de elementos e de interconexões [23].

Documentos relacionados