• Aucun résultat trouvé

Anneaux de Dedekind

Dans le document algèbre 2 (Page 117-121)

II. Modules

16. Anneaux de Dedekind

A ULA de um processador adaptado ao padrão MIPS deve conter as operações lógicas e aritméticas necessárias para executar as instruções de mesmo tipo presentes no MIPS-I. A inclusão de mais operações reflete no aumento da quantidade de área em chip, mas também resulta em uma diminuição do número de ciclos de relógio necessários para a sua execução. Portanto, deve ser uma decisão de projeto Área x Desempenho.

Para executar as operações lógicas, recomenda-se que todas as funções lógicas básicas e complementares (and, or, nand, nor, xor, xnor, not) estejam disponíveis. Uma operação and de 32 bits utilizará 32 portas lógicas and de duas entradas, sendo a mesma configuração para as demais funções lógicas. Portanto, em virtude da sua simplicidade, tais funções não causam um impacto significativo em área sobre a quantidade de elementos lógicos.

As instruções aritméticas MIPS-I são: adição, adição com operando imediato, subtração (todos com ou sem detecção de overflow), multiplicação e divisão (com sinal e sem sinal). É fundamental que a ULA contenha ao menos um circuito somador. Para as demais operações fundamentais, a decisão de projeto é utilizar circuitos específicos para cada operação ou na forma de algoritmos utilizando apenas somadores.

A melhor forma de efetuar a subtração é utilizar a técnica de Complemento a 2, pois esta utiliza apenas somas e complementos (utilizando uma porta lógica not) e não necessita de um circuito subtrator, o que reduz a área do dispositivo. Para as instruções de multiplicação e divisão em MIPS, é importante saber que estas exigem a utilização dois registradores HI e LO, e que poderá ser necessário trabalhar com a transferência de dados entre estes registradores dependendo da forma escolhida para sua execução.

A operação de multiplicação com sinal pode ser feita por meio de um circuito multiplicador, um algoritmo de sequência de somas, ou seguir a estratégia do algoritmo de Booth, em que apenas as adições e deslocamentos são realizados. Esta última é a que apresenta a melhor vantagem em termos de economia em área, pois ao invés de usar um elemento multiplicador, apenas a ULA é utilizada para estas funções. Por outro lado, toda a lógica de multiplicação é realizada pela unidade de controle através de um algoritmo inserido no microprograma, o que demanda muito mais ciclos de relógio para sua execução, prejudicando o seu desempenho. A Figura 5.1 apresenta um fluxograma de execução do algoritmo de Booth para uma multiplicação com sinal.

69

Figura 5.1 - Fluxograma de multiplicação por algoritmo de Booth

Fonte: [Patterson, 2007]

Para implementar o algoritmo, são necessários registradores para armazenar o multiplicador (Q) e o multiplicando (M), um somador/subtrator, uma lógica de deslocamento, uma estrutura de decisão e alguns registradores e bits de controle para armazenar as variáveis Q-1 (bit posicionado logicamente à direita do bit menos significativo do multiplicador) e Qin (que concatena os valores de Q0 e Q-1). Como é necessário efetuar um deslocamento no valor do quociente, e este é distribuído entre HI e LO, também é necessário criar um mecanismo de transferência de dados entre os registradores para manter o significado correto do valor resultante. Sugere-se a criação da instrução SRC (Shift Right with Carry), para setar o MSB de um registrador ao deslocar um valor para a direita, necessário para implementar a correta relação entre HI e LO.

A operação de divisão, apesar de ser mais complexa, também pode ser realizada usando apenas adições, subtrações e deslocamentos, evitando a adição de um bloco funcional divisor. Esta opção também reduz a complexidade do caminho de dados e

70 aumenta a complexidade do controle. Como procedimentos adicionais, faz-se necessário implementar uma lógica de extensão de sinal (para divisão com sinal) e extensão de zeros à esquerda (para divisão sem sinal) e, se desejado, flags de erros de divisão por zero. A Figura 5.2 detalha o processo de divisão com sinal pela estratégia de Booth.

Figura 5.2 – Fluxograma de uma divisão por algoritmo de Booth

Fonte: [Patterson, 2007]

Em ambos os casos, podem ocorrer iterações em que não são realizadas operações de somas/subtrações, sendo efetuados apenas os deslocamentos. Dependendo de como esta lógica foi projetada no dispositivo, significa que podem ocorrer interações com somas + deslocamentos, necessitando de dois ciclos de relógio, e interações com apenas um ciclo. Isto faz com que não seja possível definir uma quantidade fixa de ciclos de relógio para sua execução, podendo-se se apenas afirmar que são necessários no mínimo 32 ciclos para tais operações.

Um circuito multiplicador ou divisor interno na ULA geralmente necessita de 32 ciclos de relógio por operação, enquanto um componente multiplicador ou divisor

71 dedicados pode realizar tais procedimentos em um único ciclo de relógio, o ideal para instruções em máquinas RISC. No entanto, a inclusão de multiplicadores e divisores pode provocar uma alteração na frequência de relógio do processador. Em testes com dispositivos da família Cyclone II Altera®, a frequência de operação de um processador a 50 MHz regrediu para 7 MHz após a inclusão de uma megafunção multiplicador.

Também é necessário algum método de deslocamento para esquerda ou direita, para instruções específicas de deslocamento ou como parte de outras instruções. Este deslocamento pode ser realizado usando um componente deslocador específico ou internamente pela ULA. O deslocamento de apenas um bit por ciclo não implica em praticamente nenhum custo adicional em área, mas, consequentemente, um deslocamento de 32 bits precisa de 32 ciclos de relógio. Já um componente deslocador pode deslocar até 32 bits em um único ciclo, mas são necessários mais elementos lógicos, além de bits adicionais para seleção da direção e da quantidade de bits, o que também implica em uma diminuição da frequência de operação, já que aumenta o caminho percorrido por uma palavra de 32 bits no caminho de dados do processador, acarretando também em um tempo maior para que a instrução seja efetuada.

Dans le document algèbre 2 (Page 117-121)