BRPI0711301A2 - unidade de lógica aritmética iterativa de precisão controlada - Google Patents

unidade de lógica aritmética iterativa de precisão controlada Download PDF

Info

Publication number
BRPI0711301A2
BRPI0711301A2 BRPI0711301-3A BRPI0711301A BRPI0711301A2 BR PI0711301 A2 BRPI0711301 A2 BR PI0711301A2 BR PI0711301 A BRPI0711301 A BR PI0711301A BR PI0711301 A2 BRPI0711301 A2 BR PI0711301A2
Authority
BR
Brazil
Prior art keywords
result
precision
bit
arithmetic logic
rounding
Prior art date
Application number
BRPI0711301-3A
Other languages
English (en)
Inventor
Kenneth Alan Dockser
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0711301A2 publication Critical patent/BRPI0711301A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • G06F7/537Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding

Landscapes

  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

UNIDADE DE LóGICA ARITMéTICA ITERATIVA DE PRECISãO CONTROLADA. Uma Unidade de Lógica Aritmética Iterativa (IALU) de precisão controlada incluída em um processador produz resultados de sub-precisão, isto é, resultados possuindo uma precisão de bit menor que a precisão total. Em uma modalidade, a IALU de precisão controlada compreende um circuito de lógica aritmética e um circuito de controle de precisão. O circuito de lógica aritmética é configurado para processar iterativamente operandos de uma primeira precisão de bit para obter um resultado. O circuito de controle de precisão é configurado para terminar o processamento de operando iterativo quando o resultado alcança uma segunda precisão de bit programada menor que a primeira precisão de bit. Em uma modalidade, o circuito de controle de precisão faz com que o circuito de lógica aritmética termine o processamento de operando iterativo em resposta a um indicador recebido pelo circuito de controle. A IALU de precisão controlada compreende adicionalmente lógica de arredondamento configurada para arredondar o resultado de sub-precisão.

Description

"UNIDADE DE LÓGICA ARITMÉTICA ITERATIVA DE PRECISÃO CONTROLADA"
CAMPO
A invenção atual relaciona-se geralmente a processadores, e relaciona-se particularmente a realizar operações aritméticas iterativas de sub-precisão em um processador.
FUNDAMENTOS
Processadores convencionais incluem uma ou mais unidades de lógica aritmética para realizar operações iterativas tais como operações de divisão, raiz quadrada e transcendental (por exemplo, SENO, COSSENO). As operações aritméticas iterativas são executadas convencionalmente até que um resultado seja produzido que tenha uma precisão de bit fixa, definida. Isto é, os operandos são processados iterativamente para produzir um resultado possuindo precisão total, isto é, uma precisão alvo tal como a precisão associada com um registrador de resultado ou uma precisão associada com os operandos de inicio. Por exemplo, o "Institute of Electrical and Electronics Engineersxx(IEEE) definiu um padrão associado com aritmética de ponto flutuante binária, freqüentemente referida como IEEE 754. O padrão IEEE 754 especifica formatos de número, operações básicas, conversões, e condições excepcionais em relação às operações de ponto flutuante de precisão única e dupla.
Números de ponto flutuante complacentes com IEEE 754 incluem três componentes básicos: um bit de marca, um expoente, e uma mantissa. A mantissa é separada adicionalmente em uma parte de inteiros e em uma parte de fração. Somente os bits de fração são armazenados na codificação. Para números normais, a parte de inteiros é implicitamente igual ao valor de 1. Números de precisão única complacentes com IEEE 754 são representados por um bit de marca, de um expoente de 8 bits e de uma fração de 23 bits quando os números de precisão dupla são representados por um bit de marca, um expoente de 11 bits e uma fração de 52 bits. Como tal, o processamento iterativo de números de ponto flutuante complacentes com IEEE 754 produz resultados possuindo precisão de 24 bits para operandos de precisão única e precisão de 53 bits para operandos de precisão dupla. Por exemplo, um processador equipado com uma ALU complacente com IEEE 754 de precisão única produz resultados possuindo uma precisão total de 24 bits. Entretanto, certas aplicações, tais como aplicações de gráficos complacentes com openGL, podem não exigir resultados possuindo precisão única de 24 bits total. Como tal, consumo de potência e ciclos de processamento desnecessários ocorrem calculando resultados a precisão única de 24 bits total para aplicações que podem tolerar algo menor do que precisão única total, por exemplo, precisão de 16 bits.
Alguns processadores convencionais produzem resultados possuindo uma precisão menor do que aquela do formato alvo. Entretanto, estes processadores terminam operações aritméticas iterativas brevemente do formato alvo somente quando os operandos sendo acionados têm uma precisão menor do que o formato alvo. Por exemplo, um processador precisão dupla pode realizar uma operação de precisão única em operandos de precisão única, produzindo um resultado de precisão única, mesmo quando o formato de registrador alvo é aquele de um valor de precisão dupla. Como tal, alguns processos de aritmética convencional são dependentes de precisão de operandos, e assim, produzem resultados possuindo uma precisão total equivalente àquela dos operandos. Como resultado, potência e ciclos de processador podem desnecessariamente ser consumidos para produzir resultados que têm uma precisão maior do que aquela que pode ser tolerável ou aceitável para determinadas aplicações.
SUMÁRIO DA INVENÇÃO
De acordo com métodos e equipamentos ensinados aqui, uma Unidade de Lógica Aritmética Iterativa (IALU) de precisão controlada incluída em um processador produz resultados de sub-precisão, isto é, resultados que têm uma precisão de bit menor do que precisão total. Em uma ou mais modalidades, a IALU de precisão controlada compreende um circuito de lógica aritmética e um circuito de controle de precisão. O circuito de lógica aritmética é configurado para processar iterativamente operandos de uma primeira precisão de bit para obter um resultado. O circuito de controle de precisão é configurado para terminar o operando iterativo processando quando o resultado consegue uma segunda precisão programada de bit menor do que a primeira precisão de bit. Como é o caso para operações de precisão total, operações de precisão reduzidas podem produzir mais bits do que são necessários no resultado final para habilitar arredondamento apropriado. Estes "bits de arredondando" são referidos geralmente como bits de guarda, arredondamento, e sticky. Em uma modalidade, o circuito de controle de precisão faz com que o circuito de lógica aritmética termine o operando iterativo em processamento em resposta a um indicador recebido pelo circuito de controle. A IALU de precisão controlada compreende adicionalmente lógica de arredondamento configurada para incrementar condicionalmente o resultado do bit menos significativo (LSB) de um resultado de sub-precisão baseado no modo de arredondamento, no LSB e nos bits de arredondamento. Em uma modalidade, a lógica de arredondamento é configurada para arredondar o resultado alinhando um valor de arredondamento com o LSB do resultado e somando condicionalmente o valor de arredondamento alinhado ao resultado.
Assim, em pelo menos uma modalidade, os resultados da sub-precisão são gerados em um processador iterativamente processando operandos de uma primeira precisão de bit para obter um resultado e terminando o processamento de operando iterativo quando o resultado consegue uma segunda precisão programada de bit menor do que a primeira precisão de bit. Ademais, a largura dos resultados da sub-precisão pode ser ajustada preenchendo o resultado de modo que o resultado preenchido tenha uma largura de bit correspondente à primeira precisão de bit.
Em uma outra modalidade, um processador compreende a IALU de precisão controlada. O processador compreende ainda um elemento de armazenamento configurado para armazenar a segunda precisão programada de bit como um valor fixo ou como um valor dinamicamente alterável. Se a segunda precisão programada de bit é armazenada como um valor dinamicamente alterável, pode ser modificada em resposta a uma ou mais instruções recebidas pelo processador. A IALU de precisão controlada é configurada para terminar o processamento iterativo do operando em resposta a um indicador recebido pelo processador. Em uma modalidade, o indicador é um bit de flag armazenado em um registrador incluído no processador.
Naturalmente, a invenção atual não é limitada às características acima. Aqueles versados na técnica reconhecerão características adicionais ao ler a seguinte descrição detalhada, e ao ver os desenhos em anexo.
BREVE DESCRIÇÃO DOS DESENHOS Fig. 1 é um diagrama de blocos que ilustra uma modalidade de um processador incluindo uma unidade de lógica aritmética iterativa (IALU) de precisão controlada.
Fig. 2 é um diagrama de blocos que ilustra uma modalidade da IALU de precisão controlada da Fig. 1.
Fig. 3 é um fluxograma de lógica que ilustra uma modalidade de lógica de programa para realizar uma operação aritmética iterativa.
Fig. 4 é um diagrama de blocos que ilustra uma modalidade da IALU de precisão controlada da Fig. 1 compreendendo ainda um circuito de arredondamento.
Fig. 5 é um fluxograma de lógica que ilustra uma modalidade de lógica de programa para arredondar um resultado de sub-precisão produzido pela IALU de precisão controlada da Fig. 4.
Fig. 6 é um fluxograma de lógica que ilustra outra modalidade de lógica de programa para arredondar um resultado de sub-precisão produzido pela IALU de precisão controlada da Fig. 4.
DESCRIÇÃO DETALHADA
Figura 1 ilustra uma modalidade de um processador que inclui uma ou mais unidades de lógica aritméticas iterativas (IALUs) de precisão controlada 12. A IALU de precisão controlada 12, sob controle de um circuito de controle de precisão 14 incluído na ou associado com a IALU 12, é configurada para terminar o processamento de aritmética iterativa antes de resultados produzidos pela IALU 12 obter precisão total. Isto é, em resposta a um valor de Precisão de Bit Programada (PBP) recebido pelo circuito de controle de precisão 14, o circuito de controle 14 faz com que a IALU 12 gere resultados de sub-precisão, isto é, resultados que têm uma precisão de bit menor do que uma precisão alvo tal como a precisão associada com um registrador de resultado ou uma precisão associada com os operandos de inicio. 0 valor de PBP indica uma precisão desejada de bit associada com os resultados gerados pela IALU 12. Como tal, o circuito de controle de precisão 14, em resposta ao valor de PBP, pode fazer com que a IALU 12 termine o processamento de operandos antes que o resultado obtenha precisão total. 0 resultado de sub-precisão produzido pela IALU 12 tem assim uma precisão de bit correspondente ao valor de PBP e a precisão não-total. 0 valor de PBP pode ser conservado em um elemento de armazenamento incluído no processador 10, por exemplo, um registrador de propósito geral ou especial 16 ou uma memória cache de dados 18. Em uma modalidade, o valor de PBP é fisicamente configurado, e não é assim reprogramável. Em uma outra modalidade, o valor de PBP é um valor dinamicamente alterável armazenado no registrador PBP 16 ou no cache de dados 18, sendo assim modificável. O valor de PBP pode ser fornecido ao processador 10 como parte de uma instrução ou de uma série de instruções, por exemplo, como parte de uma palavra de instrução muito longa.
Independentemente de como o valor de PBP é gerado, armazenado, ou modificado, o circuito de controle de precisão 14 usa o valor de PBP para controlar se a IALU de precisão controlada 12 está para terminar antecipadamente operações aritméticas iterativas, isto é, antes que o resultado consiga a precisão total. Ao contrário das técnicas convencionais, o circuito de controle de precisão 14 pode fazer com que a IALU 12 termine operações aritméticas iterativas antes que um resultado obtenha a precisão total independente da precisão do operando. Em vez disso, o circuito de controle de precisão 14 baseia sua lógica de terminação antecipada no valor de PBP, que não é associado diretamente com a precisão de um operando. Em conseqüência, a IALU de precisão controlada 12 é capaz de gerar resultados de sub- precisão independentemente da precisão do operando, desse modo reduzindo consumo de potência e melhorando o desempenho do processador 10 quando o processador 10 está executando aplicativos que podem tolerar resultados de sub- precisão, por exemplo, aplicativos gráficos.
O processador 10 inclui ainda uma unidade de instruções 20, uma ou mais unidades de carga/armazenamento 22, e um cache de instruções 24. A unidade de instruções 20 fornece o controle centralizado do fluxo de instruções a várias unidades de execução tais como a unidade de carga/armazenamento 22 e a IALU de precisão controlada 12. As unidades de execução podem executar múltiplas instruções paralelamente. Como tal, o processador 10 pode ser superescalar e/ou superencadeado. Os caches de instruções e de dados 18, 24 habilitam os registradores de sistema (não mostrados) e as unidades de execução a rapidamente acessar instruções e dados. Ademais, os dados podem ser movidos entre o cache de dados 18 e os registradores de sistema através de uma das unidades de execução, por exemplo, a unidade de carga/armazenamento 22.
Figura 2 ilustra uma modalidade da IALU de precisão controlada 12. Nesta modalidade, a IALU 12 inclui um circuito de lógica aritmética 26. O circuito de lógica aritmética 26 é configurado para executar operações aritméticas iterativas tais como divisão, raiz quadrada e funções transcendentais. O circuito de lógica aritmética 26 recebe operandos dos registradores 28, 30 incluídos no processador 10. Em um exemplo, os operandos são complacentes em precisão única de IEEE 7 54, e assim, cada registrador 28, 30 armazena um bit de marca, um expoente de 8 bits e uma fração de 23 bits. Em um outro exemplo, os operandos são complacentes em precisão dupla de IEEE 7 54, e assim, cada registrador 28, 30 armazena um bit de marca, um expoente de 11 bits e uma fração de 52 bits. Em outros exemplos, os operandos têm uma precisão total diferente do que os padrões IEEE 754, tais como os operandos suficientes para os aplicativos personalizados ou do padrão openGL.
Para facilidade de explanação somente, a operação detalhada da IALU de precisão controlada 12 é descrita em seguida com referência aos operandos que têm uma precisão total que corresponda à precisão única de IEEE 754 (referida aqui geralmente como precisão única). Entretanto, aqueles versados na técnica compreenderão prontamente que uma ou mais modalidades da IALU de precisão controlada 12 são inteiramente capazes de processar os operandos que têm qualquer precisão de bit, e assim, podem terminar operações aritméticas iterativas curtas de precisão total independentemente de que precisão define a precisão total.
Retornando a figura 2, o circuito de lógica aritmética 26 processa iterativamente os operandos de precisão única recebidos dos registradores de operando 28, 30, segundo as indicações da etapa 100 da figura 3. 0 circuito de controle de precisão 14, em resposta ao conteúdo do registrador PBP 16 ou de uma ou mais instruções, permitirá que o circuito de lógica aritmética 26 termine o processamento iterativo ininterrupto ou fará com que o circuito de lógica aritmética 2 6 execute uma "terminação antecipada" terminando processamento iterativo antes de obter um resultado de precisão total, segundo as indicações da etapa 102 da figura 3. Como parte da informação recebida do registrador PBP 16 ou da maneira prevista por uma ou mais instruções, o circuito de controle de precisão 14 recebe um indicador (RDP) que determina se o circuito de 'lógica aritmética 26 é para terminar processamento antecipadamente, isto é, produzir um resultado de sub-precisão. Em uma modalidade, o indicador é um bit de flag ajustado no registrador PBP 16. Se o indicador não é ajustado, a seguir o circuito de controle de precisão 14 permite que o circuito de lógica aritmética 26 itere completamente para a precisão única, produzindo desse modo um resultado de precisão total, como mostrado pela Etapa 104 da figura 3. Entretanto, se o indicador é ajustado, a seguir o circuito de controle de precisão 14 ativa um sinal de controle (CTRL), fazendo com o circuito de lógica aritmética 26 pare a iteração quando bits suficientes são gerados para uma sub-precisão desejada, incluindo quaisquer bits de arredondamento que forem necessários, produzindo desse modo um resultado de sub- precisão, como mostrado pela Etapa 106 da figura 3.
O valor de PBP indica uma precisão de bit do resultado em que o circuito de controle de precisão 14 faz com que o circuito de lógica aritmética 26 termine o processamento. Por exemplo, se o valor de PBP indica uma precisão de bit de 16 bits, a seguir o circuito de controle de precisão 14 faz com que o circuito de lógica aritmética 26 pare de iterar quando o resultado intermediário tem bits suficientes para produzir um resultado corretamente arredondado com uma precisão de bit de 16 bits.
Em uma modalidade, um bit da RDP sem um valor de PDP é utilizado para produzir um resultado de sub-precisão de um tamanho predeterminado. Em uma modalidade alternativa, o valor de PDP sem um bit RDP é utilizado para habilitar também a operação de precisão reduzida.
Em uma modalidade, o circuito de controle de precisão 14 compreende uma máquina de estado ou um contador para rastrear o número de iterações aritméticas realizadas. Como tal, o circuito de controle de precisão 14 monitora o processamento de circuito de lógica aritmética. Quando o circuito de lógica aritmética 26 produz um resultado intermediário que tem bits suficientes para produzir um resultado corretamente arredondado com uma precisão de bit que casa com o valor de PBP, o circuito de controle de precisão 14 ativa o sinal de controle, fazendo com desse modo que o circuito de lógica aritmética 26 termine processamento. Por exemplo, o circuito de controle de precisão 14 conta o número de ciclos de processamento realizados pelo circuito de lógica aritmética 26, fazendo com que o circuito de lógica aritmética 26 termine o processamento quando a contagem indica que a precisão de bit do resultado final casará com aquela do valor de PBP.
A IALU de precisão controlada 12 armazena o resultado gerado em um registrador de resultado 32 incluído no processador 10. O registrador de resultado 32 tem uma largura de bit suficiente para armazenar resultados de precisão total. Para resultados de precisão única, o registrador 32 contém 23 posições de bit para armazenar um resultado de fração de precisão total (onde X=23). O circuito de lógica aritmética 26 pode preencher resultados de sub-precisão ao armazenar o resultado no registrador 32, assim assegurando-se de que o conteúdo do registrador 32 tenha uma largura de bit preenchida correspondente à precisão total. Em uma modalidade, o circuito de lógica aritmética 26 preenche um resultado da sub-precisão adicionando uma quantidade de bits de lógica zero suficientes ao resultado tais que o resultado preenchido de sub-precisão tem uma largura de bit equivalente à precisão total. A IALU 12 pode armazenar resultados de sub-precisão no registrador de resultado 32, entretanto, os X-N bits de registrador não serão válidos onde N = a posição de bit significativamente maior do que o valor de PBP. Alternativamente, a IALU 12 armazena resultados de sub- precisão em um outro registrador de resultado (não mostrado) onde a largura de bit do outro registrador corresponde ao valor de PBP.
O circuito de lógica aritmética 26 pode truncar um ou mais bits menos significativos (LSBs) de operando de modo que os operandos truncados tenham uma precisão de bit menor do que precisão de operando total e maior ou igual a precisão associada com o valor de PBP. O circuito de lógica aritmética 26 trunca um ou mais LSBs de operando em resposta a um valor truncado (TRUNC) recebido do circuito de controle de precisão 14. 0 circuito de controle de precisão 14 obtém o valor truncado do registrador PBP 16 ou de uma ou mais instruções. Em um exemplo, o circuito de lógica aritmética 26 trunca um ou mais LSBs de operando mascarando os LSBs de operando.
Figura 4 ilustra uma outra modalidade da IALU de precisão controlada 12, onde a IALU 12 inclui ainda a lógica de arredondamento 34 para arredondar resultados produzidos pelo circuito de lógica aritmética 26. Nesta modalidade, o circuito de lógica aritmética 26 compreende um divisor de precisão única 36 e um registrador de quociente 38 para temporariamente manter resultados de quociente. A lógica de arredondamento convencional implementa um ou mais algoritmos de arredondamento para apagar LSBs de um resultado e ajustar os bits retidos. Por exemplo, a lógica de arredondamento convencional implementa um ou mais dos seguintes algoritmos de arredondamento: arredondar ao par mais próximo, arredondar para zero, arredondar para cima, e/ou arredondar para baixo. Os bits de guarda, arredondamento e sticky podem ser usados para ajudar no processo de arredondamento. Entretanto, os circuitos de arredondamento convencionais têm dificuldade em arredondar resultados de sub-precisão. Isto é particularmente assim quando a precisão de bit associada com os resultados de sub-precisão muda, por exemplo, em resposta a alterações dinâmicas do valor de PBP, assim fazendo com que os LSB, bits de guarda, arredondamento e sticky do resultado movam posições.
A lógica de arredondamento 34 incluída na IALU de precisão controlada 12 leva em conta a precisão de bit associada com os resultados de sub-precisão, incluindo precisões de bit dinamicamente alteráveis, identificando o LSB de um resultado de uma sub-precisão especifico. A lógica de arredondamento 34 leva em conta o LSB de um resultado de sub-precisão alinhando um valor de arredondamento com o LSB, assim permitindo arredondamento apropriado do resultado. A lógica de arredondamento 34 inclui um circuito de arredondamento 40 e um somador 42. O circuito de arredondamento 40 processa o valor de PBP para determinar que posição de bit associada com um resultado particular é para ser incrementado condicionalmente. Por exemplo, o circuito de arredondamento 40, em resposta ao vai or de PBP, identifica o LSB do resultado armazenado no registrador de quociente 38 que deve ser incrementado condicionalmente. Em uma modalidade, o circuito de arredondamento 40 compreende um deslocador. 0 deslocador move ou desloca um valor de arredondamento de modo que o valor de arredondamento seja alinhado com o(s) LSB(s) de um resultado especifico de sub-precisão, como ilustrado pela Etapa 200 da figura 5. O valor de arredondamento pode ser alinhado deslocando um valor de 'um' lógico a uma posição de bit que corresponde a um LSB do valor de PBP. Como tal, o valor de arredondamento compreende um padrão de bit que tem todos os zero lógico à exceção da posição de bit que corresponde ao LSB do resultado correspondente. O valor de arredondamento deslocado é fornecido então ao somador 42 como um operando. Um resultado de sub-precisão produzido pelas funções aritméticas do circuito de lógica 26 como o outro operando, por exemplo, um resultado armazenado no registrador de quociente 38. 0 somador 42 soma condicionalmente o valor de arredondamento deslocado ao resultado gerado pelo circuito de lógica aritmética 26 para produzir um resultado exatamente arredondado, como ilustrado pela Etapa 202 da figura 5. Aqueles versados na técnica apreciarão que o resultado pode ser arredondado baseado no LSB, bits de guarda, arredondamento e sticky conjuntamente com o modo de arredondamento usando uma de várias técnicas de incremento condicionais conhecidas, cada qual está dentro do escopo das modalidades divulgadas aqui.
Em uma outra modalidade, o circuito de arredondamento 40 compreende um decodificador para alinhar um valor de arredondamento com o(s) LSB(s) de um resultado de sub-precisão, assim permitindo o arredondamento apropriado do resultado. O decodificador recebe o valor de PBP e gera um valor de arredondamento que corresponde ao valor de PBP, como ilustrado pela Etapa 300 da figura 6. Em uma modalidade, o valor de arredondamento compreende um padrão de bit que tem todos os zeros lógicos à exceção da posição de bit que corresponde ao LSB do valor de PBP. A posição de bit do valor de arredondamento que corresponde ao LSB do valor de PBP compreende um 'um' lógico. O valor de arredondamento é fornecido então ao somador 42 como um operando e um resultado produzido pelas funções aritméticas do circuito de lógica 26 como o outro operando. O somador 42 soma condicionalmente o valor de arredondamento ao resultado gerado pelo circuito de lógica aritmética 26 para produzir um resultado exatamente arredondado, como ilustrado pela Etapa 302 da figura 6. Assim, deslocando corretamente um valor de arredondamento ou decodificando o valor de PBP para produzir um operando de arredondamento e condicionalmente somando o operando de arredondamento a um resultado correspondente, a IALU de precisão controlada 12 é capaz de produzir resultados exatos de sub-precisão.
Com a escala de variações acima e de aplicações na mente, deve-se compreender que a invenção atual não está limitada pela descrição antecedente, nem é limitada pelos desenhos em anexo. Em lugar disso, a invenção atual é limitada somente pelas seguintes reivindicações e por seus equivalentes legais.

Claims (33)

1. Um método para realizar uma operação aritmética iterativa em um processador, compreendendo: processar iterativamente operando de uma primeira precisão de bit para obter um resultado; e terminar o processamento iterativo quando o resultado alcança uma segunda precisão de bit programada menor que a primeira precisão de bit.
2. O método, de acordo com a reivindicação 1, compreendendo adicionalmente preencher o resultado tal que o resultado preenchido possui uma largura de bit correspondente à primeira precisão de bit.
3. O método, de acordo com a reivindicação 2, em que preencher o resultado tal que o resultado preenchido possua uma largura de bit correspondente à primeira precisão de bit compreende anexar um ou mais bits de zero lógico ao resultado.
4. O método, de acordo com a reivindicação 1, compreendendo adicionalmente armazenar o resultado em um registrador possuindo uma largura de bit menor que a da primeira precisão de bit.
5. O método, de acordo com a reivindicação 1, compreendendo adicionalmente truncar um ou mais bits menos significativos (LSBs) dos operandos antes de iniciar o processamento iterativo tal que os operandos truncados possuam uma precisão de bit menor que a primeira precisão de bit e maior ou igual à segunda precisão de bit programada.
6. O método, de acordo com a reivindicação 5, em que truncar um ou mais dos LSBs de operando compreende mascarar um ou mais dos LSBs de operando.
7. O método, de acordo com a reivindicação 1, compreendendo adicionalmente arredondar o resultado.
8. O método, de acordo com a reivindicação 7, em que arredondar o resultado compreende: alinhar um valor de arredondamento com um bit menos significativo (LSB) do resultado; e somar condicionalmente o valor de arredondamento alinhado ao resultado.
9. O método, de acordo com a reivindicação 8, em que alinhar o valor de arredondamento com o LSB do resultado compreende deslocar o valor de arredondamento tal que o valor de arredondamento possui um 'um' lógico localizado em uma posição de bit correspondente ao LSB do resultado.
10. O método, de acordo com a reivindicação 8, em que alinhar o valor de arredondamento com o LSB do resultado compreende decodificar a segunda precisão de bit programada para produzir um operando de arredondamento.
11. O método, de acordo com a reivindicação 1, compreendendo adicionalmente modificar a segunda precisão de bit programada em resposta a uma mudança no conteúdo de um registrador incluído no processador.
12. O método, de acordo com a reivindicação 1, compreendendo adicionalmente modificar a segunda precisão de bit programada em resposta a uma ou mais instruções recebidas pelo processador.
13. Uma unidade de lógica aritmética iterativa para uso em um processador, compreendendo: um circuito de lógica aritmética configurado para processar iterativamente operandos de uma primeira precisão de bit para obter um resultado; e um circuito de controle de precisão configurado para terminar o processamento iterativo quando o resultado alcançar uma segunda precisão de bit programada menor que a primeira precisão de bit.
14. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 13, em que o circuito de lógica aritmética é configurado adicionalmente para preencher o resultado tal que o resultado preenchido possua uma largura de bit correspondente à primeira precisão de bit.
15. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 14, em que o circuito de lógica aritmética é configurado adicionalmente para preencher o resultado tal que o resultado preenchido possua uma largura de bit correspondente à primeira precisão de bit anexando um ou mais bits de zero lógico ao resultado.
16. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 13, em que o circuito de lógica aritmética é configurado adicionalmente para truncar um ou mais bits menos significativos (LSBs) dos operandos tal que os operandos truncados possuem uma precisão de bit menor que a primeira precisão de bit e maior ou igual à segunda precisão de bit programada.
17. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 16, em que o circuito de lógica aritmética é configurado para truncar um ou mais dos LSBs de operando mascarando um ou mais dos LSBs de operando.
18. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 13, compreendendo adicionalmente lógica de arredondamento configurada para arredondar o resultado.
19. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 18, em que a lógica de arredondamento é configurada para arredondar o resultado alinhando um valor de arredondamento com um bit menos significativo (LSB) do resultado e somando condicionalmente o valor de arredondamento alinhado ao resultado.
20. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 19, em que a lógica de arredondamento é configurada para alinhar o valor de arredondamento com o LSB do resultado deslocando o valor de arredondamento tal que o valor de arredondamento possui um 'um' lógico localizado em uma posição de bit correspondente ao LSB do resultado.
21. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 19, em que a lógica de arredondamento é configurada para alinhar o valor de arredondamento com o LSB do resultado decodificando a segunda precisão de bit programada para produzir um operando de arredondamento.
22. A unidade de lógica aritmética iterativa, de acordo com a reivindicação 13, em que o circuito de controle de precisão é configurado para terminar o processamento iterativo em resposta a um indicador recebido pelo circuito de controle de precisão.
23. Um processador compreendendo uma unidade de lógica aritmética iterativa configurada para processar iterativamente operandos de uma primeira precisão de bit para obter um resultado e terminar o processamento iterativo quando o resultado alcança uma segunda precisão de bit programada menor que a primeira precisão de bit.
24. O processador, de acordo com a reivindicação 23, em que a unidade de lógica aritmética iterativa é configurada adicionalmente para preencher o resultado tal que o resultado preenchido possua uma largura de bit correspondente à primeira precisão de bit.
25. O processador, de acordo com a reivindicação 23, compreendendo adicionalmente um registrador para armazenar o resultado, o registrador possuindo uma largura de bit menor que a primeira precisão de bit.
26. O processador, de acordo com a reivindicação -23, em que a unidade de lógica aritmética iterativa é configurada adicionalmente para arredondar o resultado.
27. 0 processador, de acordo com a reivindicação -26, em que a unidade de lógica aritmética iterativa é configurada para arredondar o resultado alinhando um valor de arredondamento com um bit menos significativo (LSB) do resultado e somando condicionalmente o valor de arredondamento alinhado ao resultado.
28. O processador, de acordo com a reivindicação -27, em que a unidade de lógica aritmética iterativa é configurada para alinhar o valor de arredondamento com o LSB do resultado deslocando o valor de arredondamento tal que o valor de arredondamento possui um 'um' lógico localizado em uma posição de bit correspondente ao LSB do resultado.
29. 0 processador, de acordo com a reivindicação -27, em que a unidade de lógica aritmética iterativa é configurada para alinhar o valor de arredondamento com o LSB do resultado decodificando a segunda precisão de bit programada para produzir um operando de arredondamento.
30. O processador, de acordo com a reivindicação -23, compreendendo adicionalmente um elemento de armazenamento configurado para armazenar a segunda precisão de bit programada como um valor fixo ou como um valor dinamicamente alterável.
31. 0 processador, de acordo com a reivindicação -30, em que o valor dinamicamente alterável armazenado é modificado em resposta a uma ou mais instruções recebidas pelo processador.
32. 0 processador, de acordo com a reivindicação -23, em que a unidade de lógica aritmética termina o processamento iterativo em resposta a um indicador recebido pelo processador.
33. O processador, de acordo com a reivindicação 32, em que o indicador compreende um bit de flag armazenado em um registrador incluido no processador.
BRPI0711301-3A 2006-05-05 2007-04-20 unidade de lógica aritmética iterativa de precisão controlada BRPI0711301A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/381,870 2006-05-05
US11/381,870 US9146706B2 (en) 2006-05-05 2006-05-05 Controlled-precision iterative arithmetic logic unit
PCT/US2007/067119 WO2007130803A2 (en) 2006-05-05 2007-04-20 Controlled-precision iterative arithmetic logic unit

Publications (1)

Publication Number Publication Date
BRPI0711301A2 true BRPI0711301A2 (pt) 2011-11-22

Family

ID=38662342

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0711301-3A BRPI0711301A2 (pt) 2006-05-05 2007-04-20 unidade de lógica aritmética iterativa de precisão controlada

Country Status (11)

Country Link
US (1) US9146706B2 (pt)
EP (1) EP2021916A2 (pt)
JP (2) JP5102288B2 (pt)
KR (1) KR20090007478A (pt)
CN (1) CN101432689B (pt)
BR (1) BRPI0711301A2 (pt)
CA (1) CA2649857C (pt)
MX (1) MX2008014047A (pt)
RU (1) RU2413972C2 (pt)
TW (1) TWI350990B (pt)
WO (1) WO2007130803A2 (pt)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100125621A1 (en) * 2008-11-20 2010-05-20 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
US8495121B2 (en) * 2008-11-20 2013-07-23 Advanced Micro Devices, Inc. Arithmetic processing device and methods thereof
CN103069381B (zh) * 2010-07-01 2016-06-01 瑞典爱立信有限公司 循环浮点数生成器、循环浮点数加法器、生成循环浮点数方法及循环浮点数相加方法
CN104040482B (zh) 2011-12-28 2018-02-16 英特尔公司 用于在打包数据元素上执行增量解码的系统、装置和方法
CN104025025B (zh) 2011-12-28 2018-08-28 英特尔公司 用于对打包数据元素执行增量编码的系统、装置和方法
RU2610247C1 (ru) * 2015-10-19 2017-02-08 Олег Александрович Козелков Многофункциональное логическое устройство
US10296292B2 (en) * 2016-10-20 2019-05-21 Advanced Micro Devices, Inc. Dynamic variable precision computation
CN107038016B (zh) * 2017-03-29 2019-11-15 广州酷狗计算机科技有限公司 一种基于gpu的浮点数转换方法及装置
US10684824B2 (en) 2018-06-06 2020-06-16 Nvidia Corporation Stochastic rounding of numerical values

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3434114A (en) * 1966-09-23 1969-03-18 Ibm Variable floating point precision
US3626427A (en) * 1967-01-13 1971-12-07 Ibm Large-scale data processing system
JPS5378742A (en) * 1976-12-23 1978-07-12 Toshiba Corp Multiplication control system
US4276607A (en) * 1979-04-09 1981-06-30 Sperry Rand Corporation Multiplier circuit which detects and skips over trailing zeros
JPS61213927A (ja) * 1985-03-18 1986-09-22 Hitachi Ltd 浮動小数点演算処理装置
US4823260A (en) 1987-11-12 1989-04-18 Intel Corporation Mixed-precision floating point operations from a single instruction opcode
US5249149A (en) 1989-01-13 1993-09-28 International Business Machines Corporation Method and apparatus for performining floating point division
DE68926289T2 (de) 1989-01-13 1996-10-10 Ibm Gleitkommadivisions-Verfahren und -Anordnung
JPH03245226A (ja) 1990-02-22 1991-10-31 Matsushita Electric Ind Co Ltd 浮動小数点乗算装置
US5128889A (en) 1990-02-22 1992-07-07 Matsushita Electric Industrial Co., Ltd. Floating-point arithmetic apparatus with compensation for mantissa truncation
JP2943255B2 (ja) * 1990-06-25 1999-08-30 日本電気株式会社 逆数算出回路
JP3199371B2 (ja) * 1990-07-30 2001-08-20 松下電器産業株式会社 丸め装置
JPH0823812B2 (ja) 1990-08-24 1996-03-06 松下電器産業株式会社 浮動小数点データの演算方法および演算装置
EP0472148B1 (en) 1990-08-24 2001-05-09 Matsushita Electric Industrial Co., Ltd. Method and apparatus for computing floating point data
US5268855A (en) 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
GB2287333B (en) * 1994-03-11 1998-02-11 Advanced Risc Mach Ltd Data processing multiplier
WO1995031767A1 (en) * 1994-05-11 1995-11-23 Vlsi Technology, Inc. Floating-point processor with apparent-precision based selection of execution-precision
US6108772A (en) * 1996-06-28 2000-08-22 Intel Corporation Method and apparatus for supporting multiple floating point processing models
US6029243A (en) * 1997-09-19 2000-02-22 Vlsi Technology, Inc. Floating-point processor with operand-format precision greater than execution precision
US6490607B1 (en) 1998-01-28 2002-12-03 Advanced Micro Devices, Inc. Shared FP and SIMD 3D multiplier
US6487575B1 (en) 1998-08-31 2002-11-26 Advanced Micro Devices, Inc. Early completion of iterative division
US6173303B1 (en) * 1998-11-06 2001-01-09 National Semiconductor Corp. Multiply circuit and method that detects portions of operands whose partial products are superfluous and modifies partial product manipulation accordingly
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
RU2276805C2 (ru) 2001-07-13 2006-05-20 Интел Зао Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
US6922714B2 (en) 2002-05-09 2005-07-26 International Business Machines Corporation Floating point unit power reduction scheme
NZ524378A (en) * 2003-02-24 2004-12-24 Tait Electronics Ltd Binary shift and subtract divider for phase lock loops
JP2004310432A (ja) 2003-04-07 2004-11-04 Casio Comput Co Ltd 演算装置及びプログラム

Also Published As

Publication number Publication date
US20070260662A1 (en) 2007-11-08
EP2021916A2 (en) 2009-02-11
RU2413972C2 (ru) 2011-03-10
RU2008147911A (ru) 2010-06-10
US9146706B2 (en) 2015-09-29
KR20090007478A (ko) 2009-01-16
JP5102288B2 (ja) 2012-12-19
CA2649857C (en) 2016-01-05
CA2649857A1 (en) 2007-11-15
JP2012022691A (ja) 2012-02-02
JP5307202B2 (ja) 2013-10-02
CN101432689A (zh) 2009-05-13
WO2007130803A3 (en) 2008-06-26
CN101432689B (zh) 2014-04-02
WO2007130803A2 (en) 2007-11-15
TWI350990B (en) 2011-10-21
TW200821916A (en) 2008-05-16
JP2009536409A (ja) 2009-10-08
MX2008014047A (es) 2008-11-14

Similar Documents

Publication Publication Date Title
BRPI0711301A2 (pt) unidade de lógica aritmética iterativa de precisão controlada
US8595279B2 (en) Floating-point processor with reduced power requirements for selectable subprecision
US9766857B2 (en) Data processing apparatus and method using programmable significance data
US8745111B2 (en) Methods and apparatuses for converting floating point representations
US6138135A (en) Propagating NaNs during high precision calculations using lesser precision hardware
US10146503B2 (en) Rounding floating point numbers
US20160364209A1 (en) Apparatus and method for inhibiting roundoff error in a floating point argument reduction operation
KR100847934B1 (ko) 스케일링된 정수를 사용하는 부동 소수점 연산
US10459689B2 (en) Calculation of a number of iterations
US20150363169A1 (en) Multiplier unit with speculative rounding for use with division and square-root operations
US8005884B2 (en) Relaxed remainder constraints with comparison rounding
JPH02227726A (ja) 制御方法
US7237000B2 (en) Speed of execution of a conditional subtract instruction and increasing the range of operands over which the instruction would be performed correctly
US20220129245A1 (en) High-precision anchored-implicit processing

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]

Free format text: MANTIDO O INDEFERIMENTO UMA VEZ QUE NAO FOI APRESENTADO RECURSO DENTRO DO PRAZO LEGAL