BRPI0708284A2 - processador de ponto flutuante com exigências de potência reduzida para sub-precisão selecionável - Google Patents
processador de ponto flutuante com exigências de potência reduzida para sub-precisão selecionável Download PDFInfo
- Publication number
- BRPI0708284A2 BRPI0708284A2 BRPI0708284-3A BRPI0708284A BRPI0708284A2 BR PI0708284 A2 BRPI0708284 A2 BR PI0708284A2 BR PI0708284 A BRPI0708284 A BR PI0708284A BR PI0708284 A2 BRPI0708284 A2 BR PI0708284A2
- Authority
- BR
- Brazil
- Prior art keywords
- floating point
- floating
- precision
- bits
- logic
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Nonlinear Science (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Power Sources (AREA)
- Complex Calculations (AREA)
- Measurement And Recording Of Electrical Phenomena And Electrical Characteristics Of The Living Body (AREA)
Abstract
PROCESSADOR DE PONTO FLUTUANTE COM EXIGêNCIAS DE POTêNCIA REDUZIDA PARA SUB-PRECISáO SELECIONáVEL. Um método e aparelho para a realização de uma operação de ponto flutuante com um processador de ponto flutuante possuindo uma determinada precisão são descritos. Uma sub-precisão para a operação de ponto flutuante em um ou mais dos números de ponto flutuante é selecionada. A seleção da sub-precisão resulta em um ou mais bits excessivos para cada um dos um ou mais números de ponto flutuante. A potência pode ser removida de um ou mais componentes no processador de ponto flutuante que, do contrário, seria utilizado para armazenar ou processar os um ou mais bits excessivos, e a operação de ponto flutuante é realizada com a potência removida dos um ou mais componentes.
Description
"PROCESSADOR DE PONTO FLUTUANTE COM EXIGÊNCIAS DE POTÊNCIAREDUZIDA PARA SUB-PRECISÃO SELECIONÁVEL"FUNDAMENTOS
Os processadores de ponto flutuante são unidadescomputacionais especializadas que realizam determinadasoperações matemáticas, por exemplo, multiplicação, divisão,funções trigonométricas, e funções exponenciais, a altasvelocidades. Portanto, sistemas computacionais poderososfreqüentemente incorporam processadores de ponto flutuante,como parte do processador principal ou como um co-processador. Uma representação de ponto flutuante de umnúmero inclui comumente um componente de sinal, um expoentee uma mantissa. Para se encontrar o valor de um número deponto flutuante, a mantissa é multiplicada por uma base(comumente 2 em computadores) elevada à potência doexpoente. 0 sinal é aplicado ao valor resultante.
A precisão do processador de ponto flutuante édefinida pelo número de bits utilizado para representar amantissa. Quanto mais bits na mantissa, maior a precisão. Aprecisão do processador de ponto flutuante dependegeralmente da; aplicação em particular. Por exemplo, opadrão ANSI/IEEE-754 (comumente seguido pelos computadoresmodernos) especifica um formato único de 32 bits possuindoum sinal de 1 bit, um expoente de 8 bits, e uma mantissa de23 bits. Apenas a fração de 23 bits da mantissa éarmazenada na codificação de 32 bits, um bit inteiro,imediatamente à esquerda do ponto binário, é implicado. 0IEEE-754 também especifica um formato duplo de 64 bitspossuindo um sinal de 1 bit, um expoente de 11 bits, e umamantissa de 53 bits. Análogo à codificação única, apenas afração de 52 bits da mantissa é armazenada na codificaçãode 64 bits, um bit inteiro, imediatamente à esquerda doponto binário, é implicado. A maior precisão resulta em umamaior exatidão, mas comumente resulta em consumo de energiaaumentado.
0 desempenho das operações aritméticas de pontoflutuante pode resultar em ineficiência computacional visto que os processadores de ponto flutuante são comumentelimitados à precisão fornecida pelo formato único, ou ambbsos formatos, único e duplo. Enquanto algumas aplicaçõespodem exigir esses tipos de precisão, outras aplicaçõespodem não exigir. Por exemplo, algumas aplicações gráficaspodem apenas exigir uma mantissa de 16 bits. Para essasaplicações gráficas, qualquer precisão além de 16 bits deprecisão tende a resultar em consumo de energiadesnecessário. Essa é uma preocupação particular paradispositivos operados por bateria onde a potência se tornacritica, tal como telefones sem fio, assistentes digitaispessoais (PDA), laptops, consoles de jogos, pagers, ecâmeras, apenas para citar alguns. Se for sabido que umaplicativo exige sempre uma determinada precisão reduzida,o processador de ponto flutuante pode ser projetado econstruído de acordo com essa precisão reduzida. Para osprocessadores de finalidade geral, no entanto, a situaçãocomum é que para determinados aplicativos, por exemplo,geração de gráficos em 3D, uma precisão reduzida pode seraceitável, e para outros aplicativos, por exemplo,implementação de funções de Sistema de PosicionamentoGlobal (GPS), uma maior precisão pode ser necessária.Portanto, existe uma necessidade na técnica para se criarum processador de ponto flutuante no qual a precisãoreduzida, ou sub-precisão, do formato de ponto flutuante éselecionável. As técnicas de gerenciamento de energiatambém podem ser empregadas para garantir que esseprocessador de ponto flutuante não consuma mais energia doque o necessário para suportar a sub-precisão selecionada.SUMÁRIO
Um aspecto de um método de realização de umaoperação de ponto flutuante com um processador de pontoflutuante possuindo um formato de precisão é descrito. 0método inclui a seleção de uma sub-precisão para a operaçãode ponto flutuante em um ou mais números de pontoflutuante, a seleção da sub-precisão resultando em um oumais bits excessivos para cada um dos um ou mais números cieponto flutuante. 0 método inclui adicionalmente a remoçãoda potência de um ou mais componentes no processador deponto flutuante que, do contrário, seria utilizado paraarmazenar ou processar os um ou mais bits excessivos, erealizar a operação de ponto flutuante com potênciaremovida dos um ou mais componentes.
Um aspecto de um processador de ponto flutuantepossuindo um formato de precisão é descrito. 0 processadorde ponto flutuante inclui um controlador de ponto flutuanteconfigurado para selecionar uma sub-precisão para umaoperação de ponto flutuante em um ou mais números de pontoflutuante, a seleção da sub-precisão resultando em um oumais bits excessivos para cada um dos um ou mais números deponto flutuante, o controlador de ponto flutuante sendoconfigurado adicionalmente para remover potência de um oumais componentes no processador de ponto flutuante que, docontrário, seria utilizado para armazenar ou processar umou mais dos bits excessivos. O processador de pontoflutuante inclui adicionalmente um operador de pontoflutuante configurado para realizar a operação de pontoflutuante.
Outro aspecto de um processador de pontoflutuante possuindo um formato de precisão é descrito. Oprocessador de ponto flutuante inclui um registro de pontoflutuante possuindo uma pluralidade de elementos dearmazenamento configurados para armazenar uma pluralidadede números de ponto flutuante, e um operador de pontoflutuante configurado para realizar uma operação de pontoflutuante em um ou mais dos números de ponto flutuantearmazenados no registro de ponto flutuante. O processadorde ponto flutuante inclui adicionalmente um controlador deponto flutuante configurado para selecionar uma sub-precisão para uma operação de ponto flutuante em um ou maisnúmeros de ponto flutuante, a seleção da sub-precisãoresultando em um ou mais bits excessivos para cada um dosum ou mais dos números de ponto flutuante, os um ou maisbits excessivos sendo armazenados em um ou mais doselementos de armazenamento do registro de ponto flutuante,e onde o controlador de ponto flutuante é adicionalmenteconfigurado para remover a potência dos elementos dearmazenamento para os um ou mais bits excessivos.
Um aspecto adicional de um processador de pontoflutuante possuindo um formato de precisão é descrito. Oprocessador de ponto flutuante inclui um registro de pontoflutuante configurado para armazenar uma pluralidade denúmeros de ponto flutuante, e um operador de pontoflutuante possuindo lógica configurada para realizar umaoperação de ponto flutuante em um ou mais dos números deponto flutuante armazenados no registro de ponto flutuante.O processador de ponto flutuante inclui adicionalmente umcontrolador de ponto flutuante configurado para selecionaruma sub-precisão para uma operação de ponto flutuante nosum ou mais dos números de ponto flutuante, a seleção dasub-precisão resultando em um ou mais bits excessivos paracada um dos ditos um ou mais números de ponto flutuante, eonde o controlador de ponto flutuante é adicionalmenteconfigurado para remover energia de uma parte da lógicaque, do contrário, seria utilizada para processar os um oumais bits excessivos.
Deve-se entender que outras modalidades doprocessador de ponto flutuante, e do método de realizaçãodas operações de ponto flutuante, se tornarão prontamenteaparentes aos versados na técnica a partir da descriçãodetalhada a seguir, na qual várias modalidades doprocessador de ponto flutuante e do método de realizaçãodas operações de ponto flutuante são apresentadas 1 edescritas por meio de ilustração. Como será realizado,outras modalidades diferentes do processador de pontoflutuante e do método de realização das operações de pontoflutuante são possíveis, e os detalhes utilizados paradescrever essas modalidades podem ser modificados em muitosaspectos. Portanto, os desenhos e a descrição detalhadadevem ser considerados como ilustrativos por natureza e nãocomo restritivos.
BREVE DESCRIÇÃO DOS DESENHOS
A figura 1 é um diagrama de blocos funcionalilustrando um exemplo de um processador de ponto flutuantecom sub-precisão selecionável;
A figura 2 é uma ilustração gráfica de um exemplode um arquivo de registro de ponto flutuante utilizado emum processador de ponto flutuante com sub-precisãoselecionável;
A figura 3a é um diagrama conceituai ilustrandoum exemplo de uma adição de ponto flutuante realizadautilizando-se um processador de ponto flutuante com sub-precisão escalonável; e
A figura 3b é um diagrama conceituai ilustrandoum exemplo de uma multiplicação de ponto flutuante que érealizada utilizando-se um processador de ponto flutuantecom sub-precisão selecionável.DESCRIÇÃO DETALHADA
A descrição detalhada apresentada abaixo comrelação aos desenhos em anexo deve descrever as váriasmodalidades da presente descrição, mas não deve representara única modalidade na qual a presente descrição pode serpraticada. A descrição detalhada inclui detalhesespecíficos, a fim de permitir uma compreensão profunda Idapresente descrição. Será apreciado pelos versados natécnica, no entanto, que a presente descrição pode serpraticada sem esses detalhes específicos. Em alguns casos,as estruturas e componentes bem conhecidos são apresentadossob a forma de diagrama de blocos, a fim de ilustrar maisclaramente os conceitos da presente descrição.
Em pelo menos uma modalidade de um processador deponto flutuante, a precisão para uma ou mais operações deponto flutuante podem ser reduzidas a partir do formatoespecificado. Adicionalmente, as técnicas de gerenciamentode potência podem ser empregadas para garantir que oprocessador de ponto flutuante não consuma mais energia doque o necessário para suportar a sub-precisão selecionada.As instruções fornecidas para o processador de pontoflutuante para realização das operações matemáticas podemincluir um campo de controle programável. O campo decontrole pode ser utilizado para selecionar a sub-precisãodo formato de ponto flutuante e gerenciar o consumo deenergia. Pela seleção da sub-precisão do formato de pontoflutuante, de acordo com a necessária para uma operaçãoparticular, reduzindo, assim, o consumo de energia doprocessador de ponto flutuante para suportar a sub-precisãoselecionada, uma maior eficiência além de uma economiaenergética significativa podem ser alcançadas.
A figura 1 é um diagrama de blocos funcionalilustrando um exemplo de um processador de ponto flutuante(FPP) 100 com sub-precisão selecionável. O processador deponto flutuante 100 inclui um arquivo de registro de pontoflutuante (FPR) 110; um controlador de ponto flutuante(CTL) 130; e um operador matemático de ponto flutuante(FPO) 140. O processador de ponto flutuante 100 pode serimplementado como parte do processador principal, um co-processador, ou uma entidade separada conectada aoprocessador principal através de um barramento ou outrocanal.
O arquivo de registro de ponto flutuante 100 podeser qualquer mfeio de armazenamento adequado. Na modalidadeilustrada na figura 1, o arquivo de registro de pontoflutuante 110 inclui várias localizações de registroendereçável 115-1 (REGI), 115-2 (REG2), ..., 115-N (REGN),cada uma configurada para armazenar um operando para umaoperação de ponto flutuante. Os operandos podem incluir,por exemplo, dados de uma memória e/ou resultados deoperações de ponto flutuante anteriores. Instruçõesfornecidas para o processador de ponto flutuante podem serutilizadas para mover os operandos para e da memóriaprincipal.
A figura 2 ilustra de forma esquemática umexemplo da estrutura de dados para um arquivo de registrode ponto flutuante 110 utilizado em um processador de pontoflutuante 100 com sub-precisão selecionável, como descritoem conjunto com a figura 1. Na modalidade ilustrada nafigura 2, o arquivo de registro de ponto flutuante 110inclui dezesseis localizações de registro endereçáveis,cada localização de registro sendo referida com referêncianumérica 200 na figura 2, por motivos de conveniência. Cadalocalização de registro 200 é configurada para armazenar umnúmero de ponto flutuante binário de 32 bits, em um formatoúnico de 32 bits IEEE-754. Em particular, cada localizaçãode registro 200 contém um sinal de 1 bit 202, um expoentede 8 bits 204, e uma fração de 24 bits 206. Deve-se,obviamente, compreender, no entanto, que outras modalidadesdo processador de ponto flutuante 100 podem incluir umarquivo de registro de ponto flutuante 110 que é formatadodiferentemente do formato único de 32 bits IEEE (incluindo,mas não limitado, ao formato duplo de 64 bits IEEE) , e/oupode conter um número diferente de localizações deregistro.
Com referência novamente à figura 1, ocontrolador de ponto flutuante 130 pode ser utilizado paraselecionar a sub-precisão das operações de ponto flutuanteutilizando um. sinal de controle 133. Um registro decontrole (CRG) 137 pode ser carregado com bits de seleçãode sub-precisão, por exemplo, transmitidos no campo decontrole de uma ou mais instruções. De uma forma a serdescrita em maiores detalhes posteriormente, os bits deseleção de pub-precisão podem ser utilizados pelocontrolador de ponto flutuante 130 para reduzir a precisãodos operandos. Os bits de seleção de sub-precisão podem serutilizados também para desligar as partes do processador deponto flutuante 100. Por meio de exemplo, os bits deseleção de sub-precisão podem ser utilizados para remover apotência dos elementos de registro de ponto flutuante paraos bits que não são necessários para a sub-precisãoselecionada. Os bits de seleção de sub-precisão tambémpodem ser utilizados para remover energia da lógica nooperador de ponto flutuante FPO 140 que não é utilizadoquando a sub-precisão selecionada é reduzida. Uma série decomutadores pode ser utilizada para remover e aplicarpotência aos elementos de registro de ponto flutuante elógica no operador de ponto flutuante 140. Os comutadores,que podem ser internos ou externos ao registro de pontoflutuante 110 e ao operador de ponto flutuante 140, podemser transistores de efeito de campo ou qualquer outro tipode comutador.
O operador de ponto flutuante 140 pode incluir umou mais componentes configurados para realizar as operaçõesde ponto flutuante. Esses componentes podem incluir, "masnão estão limitados a, unidades computacionais como umadicionador de ponto flutuante (ADD) 142 configurado pairaexecutar instruções de adição e subtração de pontoflutuante, e um multiplicador de ponto flutuante (MUL) 144configurado para executar as instruções de multiplicação deponto flutuante. Como observado na figura 1, cada uma dasunidades de computação ADD 142 e MUL 144 no operador deponto flutuante 140 é acoplado um ao outro e ao arquivo deregistro de ponto flutuante 110 de uma forma a permitir queos operandos sejam transferidos entre as unidades decomputação, assim como entre cada unidade de computação e oarquivo de registro de ponto flutuante 110. O operador deponto flutuante pode ser acoplado ao registro de pontoflutuante através de conexões individuais 134, 135, 136,137, 138 e 139, como ilustrado ou pode ser acoplado atravésde um barramento ou qualquer outro acoplamento adequado. Empelo menos uma modalidade do processador de ponto flutuante100, a saida de qualquer uma das unidades computacionais(ADD 142 e MUL 144) pode ser a entrada de qualquer outraunidade computacional. 0 arquivo de registro de pontoflutuante 110 pode ser utilizado para armazenar resultadosintermediários, além dos resultados que são enviados dooperador de ponto flutuante 140.
O adicionador 142 pode ser um adicionador deponto flutuante convencional, configurado para realizar asoperações aritméticas padrão em um formato de pontoflutuante. O multiplicador 144 pode ser um multiplicador deponto flutuante convencional, configurado para realizar amultiplicação de ponto flutuante. O multiplicador 144 podeimplementar com, por meio de exemplo, um algoritmo Booth ouBooth modificado, e pode incluir a lógica de geração deproduto parcial que gera os produtos parciais, e um númerode adicionadores de economia de onda que adicionam osprodutos parciais.
Enquanto por motivos de simplicidade apenas iamadicionador 142 e um multiplicador 144 são ilustrados nafigura 1, o operador de ponto flutuante 140 também podeincluir outras unidades computacionais (não ilustradas),que são conhecidas da técnica, e que são configuradas paraexecutar outros tipos de operações matemáticas de pontoflutuante. Essas unidades computacionais podem incluir, masnão estão limitadas a: um divisor de ponto flutuanteconfigurado para realizar as instruções de divisão de pontoflutuante; um extrator de raiz quadrada de ponto flutuanteconfigurado para realizar as instruções de extração de raizquadrada de ponto flutuante; um operador exponencial deponto flutuante configurado para executar as instruçõesexponenciais de ponto flutuante; um operador logaritmico deponto flutuante configurado para realizar as instruçõespara o cálculo das funções logaritmicas; e um operadortrigonométrico de ponto flutuante configurado para realizaras instruções para o cálculo de funções trigonométricas.
Diferentes modalidades do processador de pontoflutuante 100 podem incluir apenas uma, ou algumas, outodas as unidades computacionais listadas acima. Porexemplo, o adicionador 142 e o multiplicador 144 podem,cada um, incluir uma ou mais sub-unidades convencionais bemconhecidas tal como alinhadores que alinham os operandos deentrada, normalizadores que mudam o resultado para umformato padrão, e arredondadores que arredondam osresultados baseados em um modo de arredondamentoespecificado. Os elementos de circuito bem conhecidos talcomo inversores de bit, multiplexadores, contadores ecircuitos lógicos combinatoriais também são incluídos noadicionador 142 e no multiplicador 144.
Como ilustrado na figura 1, o operador de pontoflutuante 140 é acoplado ao arquivo de registro de pontoflutuante 110 de forma que para cada instrução de umaoperação de ponto flutuante solicitada, a unidadecomputacional relevante, isso' é, o adicionador 142 ou omultiplicador 144, possa receber do arquivo de registro deponto flutuante 110 um ou mais operandos armazenados em umaou mais das localizações de registro REGI,...,REGN.
Depois do recebimento dos operandos do arquivo deregistro de ponto flutuante 110, uma ou mais unidadescomputacionais no operador de ponto flutuante 140 podemexecutar as instruções da operação de ponto flutuantesolicitada nos operandos recebidos, na sub-precisãoselecionada pelo controlador de ponto flutuante 130. A saídapode ser enviada de volta para o registro de ponto flutuante110 para armazenamento, como ilustrado na figura 1.
Em uma modalidade do processador de pontoflutuante 100, um modo selecionável de software pode serutilizado para reduzir a precisão das operações de pontoflutuante sob um controle de programa ou como explicadoacima, as instruções fornecidas para o processador de pontoflutuante 100 podem incluir um campo de controleprogramável contendo os bits de seleção de sub-precisão. Osbits de seleção de sub-precisão são escritos no registro decontrole 137, que, por sua vez, controla o comprimento debit da mantissa para cada operando durante a operação deponto flutuante. Alternativamente, os bits de seleção desub-precisão podem ser escritos no registro de controle 137diretamente a partir de qualquer interface de usuárioadequada, incluindo, por exemplo, mas não limitado a umatela de monitor/teclado ou mouse 150, ilustrados na figura1. Em outra modalidade do processador de ponto flutuante100, os bits de seleção de sub-precisão podem ser escritosno registro de controle 137 diretamente a partir tioprocessador principal, ou seu sistema operacional. ;\oregistro de controle 137, que é ilustrado no controlador deponto flutuante 130, pode residir em outro local como umaentidade independente, integrada a outra entidade, oudistribuída através de múltiplas entidades.
Os bits de seleção de sub-precisão podem serutilizados para reduzir a precisão da operação de pontoflutuante. Isso pode ser alcançado de várias formas. Em umamodalidade, o controlador de ponto flutuante 130 pode fazercom que a potência seja removida dos elementos de registrode ponto flutuante para a fração de bits excessivos que nãosão necessários para se encontrar à precisão especificadapelos bits de seleção de sub-precisão. Por meio de exemplo,se cada localização no arquivo de registro de pontoflutuante contiver uma fração de 23 bits, e a sub-precisãonecessária para a operação de ponto flutuante for de 10bits, apenas os 9 bits comumente significativos (MSBs) dafração serão necessários; o bit escondido ou inteiro é odécimo. A potência pode ser removida dos elementos deregistro de ponto flutuante para a fração de 14 bitsrestantes. Se a sub-precisão para uma ou mais instruçõesfor aumentada para 16 bits, então os 15 MSBs da mantissaserão necessários. No último caso, a potência pode serremovida dos elementos de registro de ponto flutuante paraos 8 bits menos significativos (LSBs) da fração.
Adicionalmente, a lógica no operador de pontoflutuante 140 correspondente aos bits de mantissaexcedentes não exigem maior potência. Dessa forma, aeconomia energética pode ser alcançada pela remoção deenergia para a lógica no operador de ponto flutuante 140que permanece não utilizado como resultado da sub-precisãoselecionada.
A figura 3a é um diagrama conceituai ilustrandoum exemplo de uma operação de adição de ponto flutuante comuma energia sendo seletivamente aplicada à lógica pooperador de ponto flutuante. Em particular, a figura 3ailustra de forma conceituai uma operação de adição de pontoflutuante com dois números de ponto flutuante de entrada302 e 304, cada um caracterizado pela sub-precisãoselecionada, somados juntos. Por motivos de simplicidade,considera-se que os dois números 302 e 304 já tenham sidoalinhados, de forma que nenhuma mudança precise ser feita.
A operação de adição de ponto flutuante no modo de precisãototal é realizada através de uma sucessão de estágios,referidos na figura 3a pelas referências numéricas 310i,3102, . . . , 301i,;. .., 310n. De acordo com a convenção padrão,o registro de ponto flutuante armazena em ordem os bits quecriam cada número, variando de um LSB mais a direita paraum MSB mais a esquerda. Cada estágio sucessivo dentre osestágios se movendo da direita para a esquerda através dafigura 3 envolve bits que possuem um aumento significativoem. comparação com os bits envolvidos nos estágiosanteriores.
No exemplo ilustrado na figura 3a, a sub-precisãoselecionada é representada por uma linha 305. A energiapode ser removida da lógica utilizada para implementar cadaestágio à direita da linha 305. A realização C do últimoestágio descendente energizado 310± é forçada para zero. Aenergia é suprida apenas para a lógica utilizada paraimplementar cada estágio à esquerda da linha 305. Na figura3a, os bits energizados fornecidos para os estágios ativosdo operador de ponto flutuante são representados por Xs,utilizando a referência numérica 322, enquanto os bits nãoenergizados fornecidos para os estágios com energiaremovida são representados por círculos, utilizando-se asreferências numéricas 324.
A figura 3b é um diagrama conceituai ilustrandoum exemplo de uma operação de multiplicação de pontoflutuante com uma energia sendo seletivamente aplicada àlógica no operador de ponto flutuante. A operação idemultiplicação . de ponto flutuante é realizada nomultiplicador de ponto flutuante MUL, ilustrado na figura 1com referência numérica 144. É no multiplicador que umaquantidade substancial da lógica pode ser desenergizada,fornecendo economias energéticas significativas. Amultiplicação binária como ilustrado na figura 3b ébasicamente uma série de adições de números de pontoflutuante alterados. Na modalidade ilustrada, amultiplicação binária é realizada entre um multiplicando dek-bit 402 e um multiplicador de k-bit 404, utilizando umatécnica de alterar e adicionar. A técnica de alterar eadiei onar pode ser substituída por um algoritmo Booth, ouum multiplicador de algoritmo Booth modificado.
Como no caso de adição de ponto flutuante, amultiplicação de ponto flutuante é realizada em uma sériede estágios, ilustrados na figura 3b como 410-1,...410-m.Assumindo-se, por motivos de simplicidade, que o algoritmoBooth seja utilizado, um produto parcial é gerado para cadabit no multiplicador 404, um produto parcial 420-i sendogerado durante um estágio correspondente 410-i. Se o valordo multiplicador for igual a 0, seu produto parcialcorrespondente.consiste apenas em zeros; se o valor do bitfor igual a 1, seu produto parcial correspondente é umacópia do multiplicando. Cada produto parcial 420-i éalterado para a esquerda, como uma função do bitmultiplicador com o qual está associado, depois que aoperação move para o próximo estágio. Cada produto parcialpode, dessa forma, ser observado como um número alterado. 0produto parcial associado com o bit 0 no multiplicador é debits zero mudados para a esquerda, e o produto parcialassociado com o bit 1 é um bit mudado para a esquerda. Osprodutos parciais ou números de ponto flutuante alterados420-i são adicionados juntos para gerar o valor de saida430 da multiplicação.
Na modalidade ilustrada na figura 3b, a seleçãode uma precisão reduzida desejada pelo controlador 130 éindicada com uma linha 405. Como no caso da adição de pontoflutuante, descrita em conjunto com a figura 3a, a energiapode ser removida da lógica utilizada para implementar osestágios à direita da linha 405. A energia só é aplicadaaos estágios que são na verdade necessários para suportar asub-precisão selecionada, isso. é, os estágios à esquerda dalinha 405. Na figura 3b, os bits fornecidos para a lógicaenergizada são representados por Xs, enquanto os bitsfornecidos para os estágios desenergizados sãorepresentados por círculos.
Como observado a partir da figura 3b, para oprimeiro produto parcial 420-1, a lógica para um número deN bits, ilustrada utilizando-se a referência numérica 402,é desenergizada. Para o segundo produto parcial, a lógicapara os N-I bits é desenergizada, e assim por diante. Parao produto parcial m ou número de ponto flutuante alterado420-m, a lógica para um número (N-m+1) de bits, ilustradoutilizando a referência numérica 414, é desenergizada. .0número de N bits é escolhido de modo que a precisão dosestágios restantes não seja afetada de forma adversa.O valor de salda, resultando da multiplicação deponto flutuante descrita acima, possui uma largura (isto é,número de bits) que é igual à soma das larguras dos doisvalores de entrada 402 e 404 que estão sendo multiplicados.
O valor de saida 430 pode ser·truncado para a sub-precisãoselecionada, isto é, qualquer um dos bits do valor de saida430 que seja inferior à precisão selecionada pode sertruncado, para gerar um número de saida truncadocaracterizado pela precisão selecionada. Alternativamente,o valor de saida 430 pode ser arredondado para a precisãoselecionada. Em qualquer caso os bits de saida menossignificativos que a precisão selecionada também podem serdesenergizados.
As várias unidades lógicas, blocos, módulos,circuitos, elementos e/ou componentes ilustrativosdescritos com relação às modalidades descritas aqui podemser implementados ou realizados em um processador de pontoflutuante que é parte de um processador de finalidadegeral, um processador de sinal digital (DSP), um circuitointegrado especifico de aplicativo (ASIC), um campo deconjunto de portal programável (FPGA), ou outro componentelógico programável, portal discreto ou lógica detransistor, componentes discretos de hardware, ou qualquercombinação dos mesmos projetada para realizar as funçõesdescritas aqui. Um processador de finalidade geral pode serum microprocessador, mas na alternativa, o processador podeser qualquer processador convencional, controlador, microcontrolador ou máquina de estado. O processador também podeser implementado como uma combinação de componentes decomputação, por exemplo, uma combinação de um DSP e ummicroprocessador, uma pluralidade de microprocessadores, umou mais microprocessadores em conjunto com um núcleo DSP,ou qualquer outra configuração.Os métodos ou algoritmos descritos com relação àsmodalidades descritas aqui podem ser consubstanciadosdiretamente em hardware, em um' módulo de software executadopor um processador, ou em uma combinação dos dois. Ummódulo de software pode residir na memória RAM, memóriaflash, memória ROM, memória EPROM, memória EEPROk,registros, disco rígido, um disco removível, CD-ROM, ouqualquer outra forma de meio de armazenamento conhecido idatécnica. Um meio de armazenamento pode ser acoplado aoprocessador de forma que o processador possa ler informaçãoa partir de, e escrever informação no meio dearmazenamento. Na alternativa, o meio de armazenamento podeser integral aç> processador.
A descrição anterior das modalidades descritas éfornecida para permitir que qualquer pessoa versada natécnica crie ou faça uso da presente descrição. Váriasmodificações a essas modalidades serão prontamenteaparentes aos versados na técnica, e os princípiosgenéricos definidos aqui podem ser aplicados a outras modalidades sem se distanciar do espírito ou escopo dadescrição. Dessa forma, a presente descrição não deve serlimitada às modalidades ilustradas aqui, mas deve seracordado o escopo total consistente com as reivindicações,onde a referência a um elemento no singular não significa"um e apenas um" a menos que especificamente mencionados,mas ao invés disso "um ou mais um". Todas as equivalênciasestruturais e funcionais aos elementos de váriasmodalidades descritas por toda essa descrição que sãoconhecidas ou se tornarão conhecidas posteriormente dosversados na técnica são expressamente incorporadas aqui porreferência e devem ser englobadas pelas reivindicações.Ademais, nada do que foi descrito aqui deve ser dedicado aopúblico a menos que tal descrição seja explicitamenterecitada nas reivindicações. Nenhum elemento dereivindicação deve ser considerado sob 35 U.S.C. § 112,sexto parágrafo, a menos que o elemento seja expressamenterecitado utilizando a frase "meios para", ou no caso de umareivindicação de método, o elemento seja recitadoutilizando-se a frase "etapa para". '
Claims (24)
1. Método para realizar uma operação de pontoflutuante com um processador de ponto flutuante possuindouma precisão máxima, compreendendo:selecionar uma sub-precisão inferior à precisãomáxima para a operação de ponto flutuante em um ou maisnúmeros de ponto flutuante, a seleção da sub-precisãoresultando em um ou mais bits excessivos para cada um oumais dos números de ponto flutuante;remover energia de um ou mais componentes noprocessador de ponto flutuante que, do contrário, seriautilizada para armazenar ou processar os um ou mais bitsexcessivos; erealizar operação de ponto flutuante com energiaremovida de um ou mais componentes.
2. Método, de acordo com a reivindicação 1,compreendendo adicionalmente a utilização de um registro deponto flutuante com uma pluralidade de elementos dearmazenamento, os um ou mais bits excessivos sendoarmazenados em um ou mais elementos de armazenamento, eonde os um ou mais componentes dos quais a potência éremovida inclui os elementos de armazenamento para os um oumais bits excessivos.
3. Método, de acordo com a reivindicação 2,compreendendo adicionalmente a utilização de um operador deponto flutuante com lógica para realizar a operação deponto flutuante, e onde os um ou mais componentes dos quaisa potência é removida incluem· uma parte da lógica que, docontrário, seria utilizada para processar os um ou maisbits excessivos.
4. Método, de acordo com a reivindicação 1,compreendendo adicionalmente a utilização de um operador deponto flutuante com lógica para realizar a operação deponto flutuante, e onde os um ou mais componentes dos quaisa potência é removida incluem uma parte da lógica que, docontrário, seria utilizada para processar os um ou maisbits excessivos.
5. Método, de acordo com a reivindicação 4, noqual a operação de ponto flutuante compreende adição.
6. Método, de acordo com a reivindicação β,compreendendo adicionalmente uma realização forçada daparte da lógica para zero.
7. Método, de acordo com a reivindicação 4, noqual a operação de ponto flutuante compreendemultiplicação.
8. Processador de ponto flutuante possuindo umaprecisão máxima, compreendendo:um çontrolador de ponto flutuante configuradopara selecionar μπιβ sub-precisão inferior à precisão máximapara uma operação de ponto flutuante em um ou mais númerosde ponto flutuante, a seleção da sub-precisão resultando emum ou mais bits excessivos para cada um dos um ou maisnúmeros de ponto flutuante, o controlador de pontoflutuante sendo configurado adicionalmente para removerpotência de um ou mais componentes no processador de pontoflutuante que, do contrário, seria utilizada para armazenarou processar os um ou mais bits excessivos; eum operador de ponto flutuante configurado pararealizar a operação de ponto flutuante.
9. Processador de ponto flutuante, de acordo coma reivindicação 8, compreendendo adicionalmente um registrode ponto flutuante possuindo uma pluralidade de elementosde armazenamento, os um ou mais bits excessivos sendoarmazenados em um ou mais dos elementos de armazenamento, eonde os um ou mais componentes dos quais a potência podeser removida inclui os elementos de armazenamento para osum ou mais bits excessivos.
10. Processador de ponto flutuante, de acordo coma reivindicação 9, no qual o operador de ponto flutuantecompreende lógica para realizar a operação de pontoflutuante, e onde um ou mais dos componentes dos quais 1 apotência pode ser removida incluem uma parte da lógica que,do contrário, seria utilizada para processar os um ou maisbits excessivos.
11. Processador de ponto flutuante, de acordo coma reivindicação 8, no qual o operador de ponto flutuantecompreende a lógica para realizar a operação de pontoflutuante, e onde os um ou mais dos componentes dos quais apotência pode ser removida incluem uma parte da lógica que,do contrário, seria utilizada para processar os um ou maisbits excessivos.
12. Processador de ponto flutuante, de acordo coma reivindicação 11, no qual o operador de ponto flutuanteinclui um adicionador de ponto flutuante.
13. Processador de ponto flutuante, de acordo coma reivindicação 12, no qual o operador de ponto flutuante éadicionalmente configurado para forçar uma realização daparte da lógica para zero quando a energia é removida.
14. Processador de ponto flutuante, de acordo coma reivindicação 11, no qual o operador de ponto flutuanteinclui um multiplicador de ponto flutuante.
15. Processador de ponto flutuante possuindo umaprecisão máxima, compreendendo:um registro de ponto flutuante possuindo umapluralidade de elementos de armazenamento configurada paraarmazenar uma pluralidade de números de ponto flutuante;um operador de ponto flutuante configurado pararealizar uma operação de ponto flutuante no um ou maisnúmeros de ponto flutuante armazenados no registro de pontoflutuante; eum controlador de ponto flutuante configuradopara selecionar uma sub-precisão inferior à precisão máximapara uma operação de ponto flutuante nos um ou mais númerosde ponto flutuante, a seleção da sub-precisão resultando emum ou mais bits excessivos para cada um dos um ou maisnúmeros de ponto flutuante, os um ou mais bits excessivossendo armazenados em um ou mais elementos de armazenamentodo registro de ponto flutuante, e onde o controlador deponto flutuante é adicionalmente configurado para removérenergia dos elementos de armazenamento para os um ou maisbits excessivos.
16. Processador de ponto flutuante, de acordo coma reivindicação 15, no qual o operador de ponto flutuantecompreende a lógica configurada para realizar a operação deponto flutuante, e onde o controlador de ponto flutuante éadicionalmente configurado para remover energia de umaparte da lógica que, do contrário, seria utilizada paraprocessar os um ou mais bits excessivos.
17. Processador de ponto flutuante, de acordo coma reivindicação 16, no qual o operador de ponto flutuanteinclui um adicionador de ponto flutuante.
18. Processador de ponto flutuante, de acordo coma reivindicação 17, no qual o operador de ponto flutuante éadicionalmente configurado para forçar uma realização daparte da lógica para zero quando energia é removida.
19. Processador de ponto flutuante, de acordo coma reivindicação 16, no qual o operador de ponto flutuanteinclui um multiplicador de ponto flutuante.
20. Processador de ponto flutuante possuindo umaprecisão máxima, compreendendo:um registro de ponto flutuante configurado paraarmazenar uma pluralidade de números de pontos flutuantes;um operador de ponto flutuante possuindo lógicaconfigurada para realizar uma operação de ponto flutuantenos um ou mais números de ponto flutuante armazenados noregistro de ponto flutuante; eum controlador de ponto flutuante configuradopara selecionar uma sub-precisão inferior à precisão máximapara uma operação de ponto flutuante nos um ou mais númerosde ponto flutuante, a seleção da sub-precisão resultando emum ou mais bits excessivos para cada um dos um ou maisnúmeros de pontos flutuantes, e onde o controlador de pontoflutuante é adicionalmente configurado para remover aenergia de uma parte da lógica que, do contrário, seriautilizada para processar um ou mais dos bits excessivos.
21. Processador de ponto flutuante, de acordo coma reivindicação 20, no qual o registro flutuante compreendeuma pluralidade de elementos de armazenamento configuradapara armazenar o número de ponto flutuante, os um ou maisbits excessivos sendo armazenados em um ou mais elementosde armazenamento, e onde o controlador de ponto flutuante éadicionalmente configurado para remover energia doselementos de armazenamento para os um ou mais bitsexcessivos.
22. Processador de ponto flutuante, de acordo coma reivindicação 20, no qual o operador de ponto flutuanteinclui um adicionador de ponto flutuante.
23. Processador de ponto flutuante, de acordo coma reivindicação 22, no qual o operador de ponto flutuante éadicionalmente configurado para forçar uma realização daparte da lógica para zero quando a energia é removida.
24. Processador de ponto flutuante, de acordo coma reivindicação 20, no qual o operador de ponto flutuanteinclui um multiplicador de ponto flutuante, e onde aenergia é removida de partes dos elementos compreendendoprodutos parciais dentro do multiplicador de pontoflutuante.
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/363,118 US8595279B2 (en) | 2006-02-27 | 2006-02-27 | Floating-point processor with reduced power requirements for selectable subprecision |
| US11/363,118 | 2006-02-27 | ||
| PCT/US2007/062908 WO2007101216A2 (en) | 2006-02-27 | 2007-02-27 | Floating-point processor with reduced power requirements for selectable subprecision |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| BRPI0708284A2 true BRPI0708284A2 (pt) | 2011-05-24 |
Family
ID=38445306
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| BRPI0708284-3A BRPI0708284A2 (pt) | 2006-02-27 | 2007-02-27 | processador de ponto flutuante com exigências de potência reduzida para sub-precisão selecionável |
Country Status (10)
| Country | Link |
|---|---|
| US (1) | US8595279B2 (pt) |
| EP (1) | EP1989614A2 (pt) |
| JP (4) | JP5113089B2 (pt) |
| KR (1) | KR100994862B1 (pt) |
| CN (1) | CN101390045B (pt) |
| BR (1) | BRPI0708284A2 (pt) |
| CA (1) | CA2641334C (pt) |
| MX (1) | MX2008010873A (pt) |
| RU (1) | RU2412462C2 (pt) |
| WO (1) | WO2007101216A2 (pt) |
Families Citing this family (69)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8412760B2 (en) * | 2008-07-22 | 2013-04-02 | International Business Machines Corporation | Dynamic range adjusting floating point execution unit |
| US8150902B2 (en) | 2009-06-19 | 2012-04-03 | Singular Computing Llc | Processing with compact arithmetic processing element |
| CN101916182B (zh) * | 2009-09-09 | 2014-08-20 | 威盛电子股份有限公司 | 使用非架构的数据格式的快速浮点结果的转送 |
| US20110060892A1 (en) * | 2009-09-09 | 2011-03-10 | Via Technologies, Inc. | Speculative forwarding of non-architected data format floating point results |
| US8219605B2 (en) * | 2010-05-28 | 2012-07-10 | International Business Machines Corporation | Decimal floating-pointing quantum exception detection |
| US8918446B2 (en) * | 2010-12-14 | 2014-12-23 | Intel Corporation | Reducing power consumption in multi-precision floating point multipliers |
| US20120215825A1 (en) * | 2011-02-22 | 2012-08-23 | Mavalankar Abhay M | Efficient multiplication techniques |
| US9600278B1 (en) | 2011-05-09 | 2017-03-21 | Altera Corporation | Programmable device using fixed and configurable logic to implement recursive trees |
| US9128697B1 (en) * | 2011-07-18 | 2015-09-08 | Apple Inc. | Computer numerical storage format with precision type indicator |
| US10157060B2 (en) | 2011-12-29 | 2018-12-18 | Intel Corporation | Method, device and system for control signaling in a data path module of a data stream processing engine |
| US10289412B2 (en) | 2012-02-09 | 2019-05-14 | Qualcomm Incorporated | Floating point constant generation instruction |
| US9098332B1 (en) | 2012-06-01 | 2015-08-04 | Altera Corporation | Specialized processing block with fixed- and floating-point structures |
| US9829956B2 (en) * | 2012-11-21 | 2017-11-28 | Nvidia Corporation | Approach to power reduction in floating-point operations |
| US9189200B1 (en) * | 2013-03-14 | 2015-11-17 | Altera Corporation | Multiple-precision processing block in a programmable integrated circuit device |
| US9268528B2 (en) * | 2013-05-23 | 2016-02-23 | Nvidia Corporation | System and method for dynamically reducing power consumption of floating-point logic |
| US9348795B1 (en) | 2013-07-03 | 2016-05-24 | Altera Corporation | Programmable device using fixed and configurable logic to implement floating-point rounding |
| US10331583B2 (en) | 2013-09-26 | 2019-06-25 | Intel Corporation | Executing distributed memory operations using processing elements connected by distributed channels |
| US9461667B2 (en) * | 2013-12-30 | 2016-10-04 | Samsung Electronics Co., Ltd. | Rounding injection scheme for floating-point to integer conversion |
| US10235232B2 (en) * | 2014-02-10 | 2019-03-19 | Via Alliance Semiconductor Co., Ltd | Processor with approximate computing execution unit that includes an approximation control register having an approximation mode flag, an approximation amount, and an error threshold, where the approximation control register is writable by an instruction set instruction |
| US9588845B2 (en) * | 2014-02-10 | 2017-03-07 | Via Alliance Semiconductor Co., Ltd. | Processor that recovers from excessive approximate computing error |
| US9389863B2 (en) * | 2014-02-10 | 2016-07-12 | Via Alliance Semiconductor Co., Ltd. | Processor that performs approximate computing instructions |
| MX387549B (es) * | 2014-05-08 | 2025-03-18 | Micro Motion Inc | Metodo de realizacion de calculos a prueba de fallas. |
| US9916130B2 (en) * | 2014-11-03 | 2018-03-13 | Arm Limited | Apparatus and method for vector processing |
| US10297001B2 (en) | 2014-12-26 | 2019-05-21 | Intel Corporation | Reduced power implementation of computer instructions |
| US9927862B2 (en) | 2015-05-21 | 2018-03-27 | Microsoft Technology Licensing, Llc | Variable precision in hardware pipelines for power conservation |
| US11010166B2 (en) * | 2016-03-31 | 2021-05-18 | Intel Corporation | Arithmetic logic unit with normal and accelerated performance modes using differing numbers of computational circuits |
| US20170322808A1 (en) * | 2016-05-05 | 2017-11-09 | Cirrus Logic International Semiconductor Ltd. | Low-power processor with support for multiple precision modes |
| CN114004349A (zh) * | 2016-08-05 | 2022-02-01 | 中科寒武纪科技股份有限公司 | 一种能支持不同位宽运算数据的运算单元、方法及装置 |
| US10042607B2 (en) * | 2016-08-22 | 2018-08-07 | Altera Corporation | Variable precision floating-point multiplier |
| US10402168B2 (en) | 2016-10-01 | 2019-09-03 | Intel Corporation | Low energy consumption mantissa multiplication for floating point multiply-add operations |
| US10416999B2 (en) | 2016-12-30 | 2019-09-17 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
| US10474375B2 (en) | 2016-12-30 | 2019-11-12 | Intel Corporation | Runtime address disambiguation in acceleration hardware |
| US10558575B2 (en) | 2016-12-30 | 2020-02-11 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
| US10572376B2 (en) | 2016-12-30 | 2020-02-25 | Intel Corporation | Memory ordering in acceleration hardware |
| WO2018213636A1 (en) | 2017-05-17 | 2018-11-22 | Google Llc | Performing matrix multiplication in hardware |
| US10469397B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods with configurable network-based dataflow operator circuits |
| US10515049B1 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Memory circuits and methods for distributed memory hazard detection and error recovery |
| US10445234B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features |
| US10445451B2 (en) | 2017-07-01 | 2019-10-15 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features |
| US10467183B2 (en) | 2017-07-01 | 2019-11-05 | Intel Corporation | Processors and methods for pipelined runtime services in a spatial array |
| US10515046B2 (en) | 2017-07-01 | 2019-12-24 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator |
| US10387319B2 (en) | 2017-07-01 | 2019-08-20 | Intel Corporation | Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features |
| US11086816B2 (en) | 2017-09-28 | 2021-08-10 | Intel Corporation | Processors, methods, and systems for debugging a configurable spatial accelerator |
| US10496574B2 (en) | 2017-09-28 | 2019-12-03 | Intel Corporation | Processors, methods, and systems for a memory fence in a configurable spatial accelerator |
| US10445098B2 (en) | 2017-09-30 | 2019-10-15 | Intel Corporation | Processors and methods for privileged configuration in a spatial array |
| US10380063B2 (en) * | 2017-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator |
| RU2686628C1 (ru) * | 2017-12-25 | 2019-04-29 | Акционерное общество "Ангстрем" (АО "Ангстрем") | Устройство сложения-вычитания чисел для цифро-сигнального процессора |
| US10417175B2 (en) | 2017-12-30 | 2019-09-17 | Intel Corporation | Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator |
| US10565134B2 (en) | 2017-12-30 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for multicast in a configurable spatial accelerator |
| US10445250B2 (en) | 2017-12-30 | 2019-10-15 | Intel Corporation | Apparatus, methods, and systems with a configurable spatial accelerator |
| US10564980B2 (en) | 2018-04-03 | 2020-02-18 | Intel Corporation | Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator |
| US11307873B2 (en) | 2018-04-03 | 2022-04-19 | Intel Corporation | Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging |
| US10853073B2 (en) | 2018-06-30 | 2020-12-01 | Intel Corporation | Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator |
| US11200186B2 (en) | 2018-06-30 | 2021-12-14 | Intel Corporation | Apparatuses, methods, and systems for operations in a configurable spatial accelerator |
| US10459866B1 (en) | 2018-06-30 | 2019-10-29 | Intel Corporation | Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator |
| US10891240B2 (en) | 2018-06-30 | 2021-01-12 | Intel Corporation | Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator |
| CN109086815B (zh) * | 2018-07-24 | 2021-08-31 | 中国人民解放军国防科技大学 | 基于fpga的决策树模型中的浮点数离散化方法 |
| US10713012B2 (en) | 2018-10-15 | 2020-07-14 | Intel Corporation | Method and apparatus for efficient binary and ternary support in fused multiply-add (FMA) circuits |
| US10678724B1 (en) | 2018-12-29 | 2020-06-09 | Intel Corporation | Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator |
| US10965536B2 (en) | 2019-03-30 | 2021-03-30 | Intel Corporation | Methods and apparatus to insert buffers in a dataflow graph |
| US10915471B2 (en) | 2019-03-30 | 2021-02-09 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator |
| US11029927B2 (en) | 2019-03-30 | 2021-06-08 | Intel Corporation | Methods and apparatus to detect and annotate backedges in a dataflow graph |
| US10817291B2 (en) | 2019-03-30 | 2020-10-27 | Intel Corporation | Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator |
| US11037050B2 (en) | 2019-06-29 | 2021-06-15 | Intel Corporation | Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator |
| EP3792752A1 (en) * | 2019-09-11 | 2021-03-17 | Nokia Solutions and Networks Oy | Arithmetic unit |
| US11907713B2 (en) | 2019-12-28 | 2024-02-20 | Intel Corporation | Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator |
| US12086080B2 (en) | 2020-09-26 | 2024-09-10 | Intel Corporation | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits |
| GB2600915B (en) * | 2020-10-07 | 2023-02-15 | Graphcore Ltd | Floating point number format |
| US11797074B2 (en) * | 2021-05-25 | 2023-10-24 | Google Llc | Multi-mode integrated circuits with balanced energy consumption |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| SU1280624A1 (ru) | 1985-07-01 | 1986-12-30 | Предприятие П/Я А-7638 | Устройство дл умножени чисел с плавающей зап той |
| JPH0269822A (ja) | 1988-09-06 | 1990-03-08 | Fujitsu Ltd | 浮動小数点演算回路 |
| US5200912A (en) | 1991-11-19 | 1993-04-06 | Advanced Micro Devices, Inc. | Apparatus for providing power to selected portions of a multiplying device |
| JPH07146777A (ja) | 1993-11-24 | 1995-06-06 | Matsushita Electric Ind Co Ltd | 演算装置 |
| JP3428741B2 (ja) * | 1994-02-14 | 2003-07-22 | 松下電器産業株式会社 | 演算装置とアドレス発生装置及びプログラム制御装置 |
| US5996083A (en) * | 1995-08-11 | 1999-11-30 | Hewlett-Packard Company | Microprocessor having software controllable power consumption |
| US6233672B1 (en) * | 1997-03-06 | 2001-05-15 | Advanced Micro Devices, Inc. | Piping rounding mode bits with floating point instructions to eliminate serialization |
| JPH10326129A (ja) * | 1997-05-23 | 1998-12-08 | Mitsubishi Electric Corp | 半導体装置 |
| AU2002246904A1 (en) | 2000-10-27 | 2002-07-30 | Arc International (Uk) Limited | Method and apparatus for reducing power consuption in a digital processor |
| US7020789B2 (en) * | 2002-12-31 | 2006-03-28 | Intel Corporation | Processor core and methods to reduce power by not using components dedicated to wide operands when a micro-instruction has narrow operands |
| TWI269228B (en) * | 2003-01-07 | 2006-12-21 | Ibm | Floating point unit, processor chip, and computer system to resolve data dependencies |
| US7496776B2 (en) * | 2003-08-21 | 2009-02-24 | International Business Machines Corporation | Power throttling method and apparatus |
| JP2005078518A (ja) * | 2003-09-02 | 2005-03-24 | Renesas Technology Corp | マイクロコントローラユニットおよびそのコンパイラ |
| US7418606B2 (en) * | 2003-09-18 | 2008-08-26 | Nvidia Corporation | High quality and high performance three-dimensional graphics architecture for portable handheld devices |
| US7290024B2 (en) * | 2003-12-18 | 2007-10-30 | Intel Corporation | Methods and apparatus for performing mathematical operations using scaled integers |
-
2006
- 2006-02-27 US US11/363,118 patent/US8595279B2/en active Active
-
2007
- 2007-02-27 EP EP07757578A patent/EP1989614A2/en not_active Ceased
- 2007-02-27 RU RU2008138564/08A patent/RU2412462C2/ru active
- 2007-02-27 CA CA2641334A patent/CA2641334C/en active Active
- 2007-02-27 JP JP2008557471A patent/JP5113089B2/ja not_active Expired - Fee Related
- 2007-02-27 WO PCT/US2007/062908 patent/WO2007101216A2/en not_active Ceased
- 2007-02-27 KR KR1020087023592A patent/KR100994862B1/ko not_active Expired - Fee Related
- 2007-02-27 CN CN2007800064904A patent/CN101390045B/zh active Active
- 2007-02-27 BR BRPI0708284-3A patent/BRPI0708284A2/pt not_active Application Discontinuation
- 2007-02-27 MX MX2008010873A patent/MX2008010873A/es active IP Right Grant
-
2012
- 2012-06-07 JP JP2012130000A patent/JP2012230684A/ja not_active Withdrawn
-
2014
- 2014-12-19 JP JP2014258023A patent/JP2015133111A/ja not_active Withdrawn
-
2016
- 2016-10-21 JP JP2016206781A patent/JP6495220B2/ja active Active
Also Published As
| Publication number | Publication date |
|---|---|
| CN101390045B (zh) | 2011-12-21 |
| US8595279B2 (en) | 2013-11-26 |
| JP2017062804A (ja) | 2017-03-30 |
| CA2641334A1 (en) | 2007-09-07 |
| EP1989614A2 (en) | 2008-11-12 |
| RU2412462C2 (ru) | 2011-02-20 |
| JP2015133111A (ja) | 2015-07-23 |
| WO2007101216A3 (en) | 2008-01-03 |
| JP5113089B2 (ja) | 2013-01-09 |
| KR100994862B1 (ko) | 2010-11-16 |
| CA2641334C (en) | 2015-07-21 |
| CN101390045A (zh) | 2009-03-18 |
| JP2012230684A (ja) | 2012-11-22 |
| RU2008138564A (ru) | 2010-04-10 |
| JP2009528638A (ja) | 2009-08-06 |
| MX2008010873A (es) | 2008-09-04 |
| WO2007101216A2 (en) | 2007-09-07 |
| US20070203967A1 (en) | 2007-08-30 |
| KR20080098440A (ko) | 2008-11-07 |
| JP6495220B2 (ja) | 2019-04-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| BRPI0708284A2 (pt) | processador de ponto flutuante com exigências de potência reduzida para sub-precisão selecionável | |
| JP5175379B2 (ja) | 選択可能な下位精度を有する浮動小数点プロセッサ | |
| CN103838549B (zh) | 在浮点操作中功率降低的方法 | |
| US9519460B1 (en) | Universal single instruction multiple data multiplier and wide accumulator unit | |
| JP6006803B2 (ja) | 浮動小数点値を整数浮動小数点値に丸めるための装置および方法 | |
| JP2015505998A (ja) | 大きな浮動小数点値と小さな浮動小数点値の両方を使用した算術演算の実行 | |
| US20160034256A1 (en) | Fast integer division | |
| CN101432689A (zh) | 精度受控的迭代算术逻辑单元 | |
| CN1928809A (zh) | 用于执行浮点运算的系统、设备和方法 | |
| US20170308356A1 (en) | Iterative division with reduced latency | |
| CN110199255B (zh) | 组合若干执行单元以计算单一宽标量结果 | |
| US20250130767A1 (en) | Floating-point conversion circuit | |
| US20250130774A1 (en) | Floating point bias switching | |
| CN115878075A (zh) | 计算多个值中最小值或最大值的基于优先级编码器的技术 | |
| Ratre et al. | A Review Paper on Arithmetic and Logical Unit for Graphics Processor | |
| Kumar et al. | Configurable Double Precision Floating Point Multiplier For Error Tolerant Applications | |
| CN102713835A (zh) | 快速无分支向量除法计算 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| B11A | Dismissal acc. art.33 of ipl - examination not requested within 36 months of filing | ||
| B04C | Request for examination: application reinstated [chapter 4.3 patent gazette] | ||
| B07A | Application suspended after technical examination (opinion) [chapter 7.1 patent gazette] | ||
| B09B | Patent application refused [chapter 9.2 patent gazette] | ||
| B12B | Appeal against refusal [chapter 12.2 patent gazette] |