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 PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/535—Dividing only
- G06F7/537—Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
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.
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)
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 |
EP2596422A4 (en) * | 2010-07-01 | 2016-04-27 | Ericsson Telefon Ab L M | CIRCULAR FLOATING VIRGIN NUMBER GENERATOR AND CIRCULAR FLOATING VIRGIN NUMBER ADDITIONER |
CN104025025B (zh) | 2011-12-28 | 2018-08-28 | 英特尔公司 | 用于对打包数据元素执行增量编码的系统、装置和方法 |
WO2013100989A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | Systems, apparatuses, and methods for performing delta decoding on packed data elements |
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)
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 |
US5128889A (en) * | 1990-02-22 | 1992-07-07 | Matsushita Electric Industrial Co., Ltd. | Floating-point arithmetic apparatus with compensation for mantissa truncation |
JPH03245226A (ja) | 1990-02-22 | 1991-10-31 | Matsushita Electric Ind Co Ltd | 浮動小数点乗算装置 |
JP2943255B2 (ja) * | 1990-06-25 | 1999-08-30 | 日本電気株式会社 | 逆数算出回路 |
JP3199371B2 (ja) * | 1990-07-30 | 2001-08-20 | 松下電器産業株式会社 | 丸め装置 |
JPH0823812B2 (ja) | 1990-08-24 | 1996-03-06 | 松下電器産業株式会社 | 浮動小数点データの演算方法および演算装置 |
DE69133072T2 (de) | 1990-08-24 | 2003-03-20 | Matsushita Electric Industrial Co., Ltd. | Verfahren und Gerät zur Berechnung von Gleitkommadaten |
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 | 演算装置及びプログラム |
-
2006
- 2006-05-05 US US11/381,870 patent/US9146706B2/en active Active
-
2007
- 2007-04-20 EP EP07761040A patent/EP2021916A2/en not_active Ceased
- 2007-04-20 MX MX2008014047A patent/MX2008014047A/es active IP Right Grant
- 2007-04-20 CN CN200780015639.5A patent/CN101432689B/zh active Active
- 2007-04-20 RU RU2008147911/08A patent/RU2413972C2/ru not_active IP Right Cessation
- 2007-04-20 WO PCT/US2007/067119 patent/WO2007130803A2/en active Application Filing
- 2007-04-20 KR KR1020087029579A patent/KR20090007478A/ko active Search and Examination
- 2007-04-20 CA CA2649857A patent/CA2649857C/en not_active Expired - Fee Related
- 2007-04-20 JP JP2009509936A patent/JP5102288B2/ja active Active
- 2007-04-20 BR BRPI0711301-3A patent/BRPI0711301A2/pt not_active Application Discontinuation
- 2007-05-02 TW TW096115621A patent/TWI350990B/zh active
-
2011
- 2011-08-08 JP JP2011173104A patent/JP5307202B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
WO2007130803A3 (en) | 2008-06-26 |
US20070260662A1 (en) | 2007-11-08 |
JP5307202B2 (ja) | 2013-10-02 |
KR20090007478A (ko) | 2009-01-16 |
RU2413972C2 (ru) | 2011-03-10 |
CA2649857A1 (en) | 2007-11-15 |
JP2009536409A (ja) | 2009-10-08 |
US9146706B2 (en) | 2015-09-29 |
CN101432689A (zh) | 2009-05-13 |
JP2012022691A (ja) | 2012-02-02 |
EP2021916A2 (en) | 2009-02-11 |
TWI350990B (en) | 2011-10-21 |
CN101432689B (zh) | 2014-04-02 |
RU2008147911A (ru) | 2010-06-10 |
TW200821916A (en) | 2008-05-16 |
JP5102288B2 (ja) | 2012-12-19 |
CA2649857C (en) | 2016-01-05 |
WO2007130803A2 (en) | 2007-11-15 |
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 | |
US9645791B2 (en) | Multiplier unit with speculative rounding for use with division and square-root operations | |
KR20060103920A (ko) | 스케일링된 정수를 사용하는 부동 소수점 연산 | |
US10459689B2 (en) | Calculation of a number of iterations | |
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 | |
US11704092B2 (en) | High-precision anchored-implicit processing | |
CN118519608A (zh) | 浮点加法运算装置及方法、电子装置和存储介质 |
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 |