BR9612911B1 - aparelho e mÉtodo para realizar operaÇÕes multiplicaÇço-adiÇço em dados em pacote. - Google Patents

aparelho e mÉtodo para realizar operaÇÕes multiplicaÇço-adiÇço em dados em pacote. Download PDF

Info

Publication number
BR9612911B1
BR9612911B1 BRPI9612911-5A BR9612911A BR9612911B1 BR 9612911 B1 BR9612911 B1 BR 9612911B1 BR 9612911 A BR9612911 A BR 9612911A BR 9612911 B1 BR9612911 B1 BR 9612911B1
Authority
BR
Brazil
Prior art keywords
data
packet
bits
packet data
result
Prior art date
Application number
BRPI9612911-5A
Other languages
English (en)
Inventor
Alexander D Peleg
Yaacov Yaari
Millind Mittal
Larry M Mennemeier
Benny Eitan
Andrew F Glew
Carole Dulong
Eiichi Kowashi
Wolf Witt
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed filed Critical
Publication of BR9612911B1 publication Critical patent/BR9612911B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/147Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49905Exception handling
    • G06F7/4991Overflow or underflow
    • G06F7/49921Saturation, i.e. clipping the result to a minimum or maximum value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49994Sign extension

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Discrete Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Containers And Plastic Fillers For Packaging (AREA)
  • Document Processing Apparatus (AREA)
  • Complex Calculations (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

Relatório Descritivo da Patente de Invenção para "APARELHOE MÉTODO PARA REALIZAR OPERAÇÕES MULTIPLICAÇÃO-ADIÇÃOEM DADOS EM PACOTE".
Pedido Dividido do Pl 9610095-8 de 17/07/1996.
Antecedentes da Invenção
1. Campo da Invenção
Em particular, a invenção refere-se ao campo de sistemas decomputador. Mais especificamente, a invenção refere-se à área de opera-ções de dados compactados.
2. Descrição da Técnica Relacionada
Nos sistemas de computador típicos são implementados proces-sadores para operarem nos valores representados por um grande númerode bits (por exemplo, 64) com o uso de instruções que produzem um resul-tado. Por exemplo, a execução de uma instrução de soma acrescentará en-tre si um primeiro valor de 64 bits e um segundo valor de 64 bits e armaze-nará o resultado como um terceiro valor de 64 bits. Entretanto, aplicações demúltiplos meios/multimídia (por exemplo, aplicações com alvo na coopera-ção sustentada por computador (CSC - a integração da teleconferência coma manipulação de dados de meios mistos), gráficos 2D/3D, processamentode imagem, compressão/descompressão de vídeo, algoritmos de reconhe-cimento e manipulação de áudio) exigem a manipulação de grandes quanti-dades de dados que podem ser representados em um pequeno número debits. Por exemplo, os dados gráficos tipicamente exigem de 8 ou 16 bits e osdados de som tipicamente exigem 8 ou 16 bits. Cada uma destas aplicaçõesde múltiplos meios exige um ou mais algoritmos, cada qual exigindo diversasoperações. Por exemplo, um algoritmo pode exigir uma operação de soma,de comparação e de deslocamento.
Para aperfeiçoar a eficiência das aplicações de múltiplos meios(bem como outras aplicações que possuam as mesmas características), osprocessadores da técnica anterior apresentam formatos de dados compac-tados. Um dado compactado é aquele no qual os bits tipicamente usadospara representar um único valor são subdivididos em vários elementos dedados de tamanho fixo, cada um dos quais representando um valor separa-do. Por exemplo, um registro de 64 bits pode ser subdividido em dois ele-mentos de 32 bits, cada um dos quais representando um valor separado de32 bits. Adicionalmente, estes processadores da técnica anterior forneceminstruções para separadamente manipular cada elemento nestes tipos dedados compactados em paralelo. Por exemplo, uma instrução de somacompactada soma entre si elementos de dados correspondentes origináriosde primeiros dados compactados e de segundos dados compactados. Dessamaneira, se um algoritmo de múltiplos meios exigir um circuito contendo cin-co operações que precisam ser executadas em um grande número de ele-mentos de dados, é desejável compactar os dados e executar estas opera-ções em paralelo com o uso de instruções de dados compactados. Dessaforma, estes processadores podem processar de uma maneira mais eficienteas aplicações de múltiplos meios.
Entretanto, se o circuito de operações contiver uma operaçãoque não possa ser executada pelo processador em dados compactados (istoé, o processador carece da instrução apropriada), os dados terão que serdescompactados a fim de executar a operação. Por exemplo, se o algoritmode múltiplos meios exigisse uma operação de soma e a instrução de somacompactada descrita anteriormente não estiver disponível, então o progra-mador tem que descompactar tanto os primeiros dados compactados quantoos segundos dados compactados (isto é, separar os elementos que compre-endem tanto os primeiros dados compactados quanto os segundos dadoscompactados), somar os elementos separados entre si de maneira individu-al, e depois compactar os resultados em um resultado compactado para oprocessamento compactado adicional. Por isso, é desejável incorporar emum processador de finalidades gerais um jogo de instruções de dados com-pactados que forneça todas as operações exigidas para os algoritmos típicosde múltiplos meios. Contudo, devido à área de matriz limitada nos micropro-cessadores atuais, mostra-se limitado o número de instruções que podemser acrescentadas. Portanto, é desejável inventar instruções que garantamtanto versatilidade (isto é, instruções que possam ser utilizadas em umagrande variedade de algoritmos) e a maior vantagem de performance.
Uma técnica anterior para prover operações para o uso em algo-ritmos de múltiplos meios é unir um processador de sinalização digital (DSP)separado a um processador de propósitos gerais existente (por exemplo, oIntel.RTM. 486 produzido por Intel Corporation of Santa Clara, Califórnia). Oprocessador de propósitos gerais aloca tarefas que podem ser realizadasusando pacotes de dados (por exemplo, processamento de vídeo) no DSP.
Essa técnica DSP anterior inclui uma instrução de multiplicaçãoacumulada que soma a um valor acumulado os resultados da multiplicaçãode dois valores juntos (veja Kawakami, Yuichi, et al. "Aplicações de um pro-cessador de sinais digitais de um único chip para banda de voz" IEEE confe-rência internacional de circuitos de estado sólido, 1980, pg 40-41). Umexemplo da operação de multiplicação acumulada para esse DSP é de-monstrada abaixo na tabela 1, em que as instruções são realizadas nos va-lores de dados Ai e Bi acessados como fonte 1 e fonte 2, respectivamente.
Tabela 1
Acumular para Multiplicar Fonte 1 . Fonte 2
Fonte 1
Fonte 2
Resultado 1
eficiência limitada,
Uma outra técnica DSP anterior inclui uma instrução multiplica-isto é, ela só trabalha com dois valores e um valor de acumulador. Para mul-tiplicar e acumular dois conjuntos de dois valores é necessário a realizaçãoserial das seguintes instruções: 1) multiplicação acumulada do primeiro valordo primeiro conjunto, primeiro valor do segundo conjunto e a acumulação dovalor zero para gerar uma valor de acumulador intermediário; 2) multiplica-ção acumulada do segundo valor do primeiro conjunto, segundo valor dosegundo conjunto e o valor de acumulador intermediário para gerar o resul-tado.
Uma limitação dessa técnica anterior é a suação acumulada que operar em dois conjuntos de dois valores e um valor deacumulador (veja "Processador de sinal digital com multiplicadores parale-los", U.S Pat. No. 4.771. 379 - referida aqui pela referência "Ando et. Al").
Um exemplo da instrução de multiplicação acumulada é demonstrado abaixona tabela 2, em que as instruções são realizadas nos valores de dados A-i,A2, Bi e B2 respectivamente acessados como fontes 1 a 4.
Tabela 2
<table>table see original document page 5</column></row><table>
Usando essa técnica anterior, dois conjuntos de dois valores sãomultiplicados e então somados em um valor de acumulador em uma instrução.
Essa instrução de multiplicação acumulada tem versatilidadelimitada porque sempre é somada ao valor de acumulador. Como resultado,é difícil utilizar a instrução para operações que não sejam multiplicaçãoacumulada. Por exemplo, a multiplicação de dois números complexos (n I1 er2 e i2) é realizada de acordo com a seguinte equação:
<formula>formula see original document page 5</formula>
Essa técnica DSP anterior não pode realizar a função de multi-plicar dois números complexos juntos usando uma instrução de multiplicaçãoacumulada.
As limitações dessa instrução de multiplicação acumulada po-dem ser mais facilmente vistas quando o resultado dessa multiplicação énecessário em uma operação de multiplicação subseqüente ao invés de umaoperação de acumulação. Por exemplo, se o valor real fosse calculado utili-zando essa técnica DSP anterior, o valor de acumulador precisaria ser inici-alizado em zero para computar o resultado corretamente. Então o valor deacumulador precisaria novamente ser inicializado em zero para poder cal-cular a componente imaginária. Para realizar outra multiplicação complexaentre o número complexo resultante e um terceiro número complexo (porexemplo, r3, i3), o número complexo resultante deve ser redimensionado earmazenado no formato de memória aceitável e o valor de acumulador deser novamente inicializado em zero. Então, a multiplicação complexa podeser realizada como descrita acima. Em cada uma dessas operações a ULA(unidade lógica e aritmética), que é ligada ao valor do acumulador, é har-dware supérfluo e são necessárias instruções extras para reinicializar o valordo acumulador. Essas instruções extras de outra forma seriam desnecessá-rias.
Uma outra limitação dessa técnica anterior é que os dados de-vem ser acessados através de custosas memórias multi-portas. Isso aconte-ce porque os multiplicadores estão conectados diretamente com as memóri-as de dados. Portanto a quantidade de paralelismo que pode ser explorada élimitada um pequeno número pelo custo da interconexão, e o fato de queessa interconexão não é desligada da instrução.
A referência Ando e outros, também descreve que uma alternati-va para essa custosa interconexão é introduzir um atraso para cada par dedados subseqüente para ser multiplicado. Essa solução diminui qualquervantagem de performance em relação àquela solução apresentada anterior-mente na tabela 1.
Finalmente, a noção de memória multi-portas ou de acesso dememória por pipeline é vinculada ao uso de endereços múltiplos. Esse usoexplícito de um endereço por dado, claramente demonstra que a noção críti-ca de pacote de dados não é empregada na técnica anterior.
Sumário da invenção
São descritos método e aparelho para incluir em um processa-dor instruções para realizar operações multiplicação-adição em pacotes dedados. Em uma modalidade, o processador é ligado a uma memória. A me-mória possui armazenados nela um primeiro pacote de dados e um segundopacote de dados. O processador realiza operações em elementos de dadosno primeiro pacote de dados e no segundo pacote de dados para gerar umterceiro pacote de dados em resposta ao recebimento de uma instrução.
Pelo menos dois dos elementos de dados nesse terceiro pacote de dadosarmazenam o resultado da realização de operações multiplicação-adiçãonos elementos de dados do primeiro pacote de dados e do segundo pacotede dados.
Breve Descrição dos Desenhos
A invenção é ilustrada por meio de exemplo, e não de limitação,nas figuras. Referências semelhantes indicam elementos similares.
A Figura 1 ilustra um sistema de computador exemplificativo, deacordo com uma concretização da invenção.
A Figura 2 ilustra um arquivo de registro geral do processador,de acordo com uma concretização da invenção.
A Figura 3 é um diagrama de fluxo que ilustra as etapas geraisusadas pelo processador para manipular os dados, de acordo com uma con-cretização da invenção.
A Figura 4 ilustra os tipos de dados em pacote, de acordo comuma concretização da invenção.
A Figura 5a ilustra as representações de dados em pacote emregistro, de acordo com uma concretização da invenção.
A Figura 5b ilustra as representações de dados em pacote emregistro, de acordo com uma concretização da invenção.
A Figura 5c ilustra as representações de dados em pacote emregistro, de acordo com uma concretização da invenção.
A Figura 6a ilustra um formato de sinal de controle para indicar ouso de dados em pacote, de acordo com uma concretização da invenção.
A Figura 6b ilustra um formato de sinal de controle para indicar ouso de dados em pacote, de acordo com uma concretização da invenção.
SOMA/SUBTRAÇÃO EM PACOTE
A Figura 7a ilustra um processo para a execução de adição empacote, de acordo com uma concretização da invenção,
A Figura 7b ilustra um processo para a execução de subtraçãoem pacote, de acordo com uma concretização da invenção.
A Figura 8 ilustra um circuito para a execução de adição em pa-cote e de subtração em pacote em bits individuais de dados em pacote, deacordo com uma concretização da invenção.
A Figura 9 ilustra um circuito para a execução de adição em pa-cote e de subtração em pacote nos dados de byte em pacote, de acordocom uma concretização da invenção.
A Figura 10 é uma vista lógica de um circuito para a execuçãode adição em pacote e de subtração em pacote nos dados de palavra empacote, de acordo com uma concretização da invenção.
A Figura 11 é uma vista lógica de um circuito para a execuçãode adição em pacote e de subtração em pacote nos dados de palavra duplaem pacote, de acordo com uma concretização da invenção.
MULTIPLICAÇÃO EM PACOTE
A Figura 12 é um diagrama de fluxo que ilustra um processopara a execução de operações de multiplicação em pacote nos dados empacote, de acordo com uma concretização da invenção.
A Figura 13 ilustra um circuito para a execução de multiplicaçãoem pacote, de acordo com uma concretização da invenção.
MULTIPLICAÇÃO-SOMA/SUBTRAÇÃO
A Figura 14 é um diagrama de fluxo que ilustra um processopara a execução de operações de multiplicação-soma e de multiplicação-subtração nos dados em pacote, de acordo com uma concretização da in-venção.
A Figura 15 ilustra um circuito para a execução de operações demultiplicação-soma e/ou multiplicação-subtração nos dados em pacote, deacordo com uma concretização da invenção.
DESLOCAMENTO EM PACOTE
A Figura 16 é um diagrama de fluxo que ilustra um processopara a execução de uma operação de deslocamento em pacote nos dadosem pacote, de acordo com uma concretização da invenção.
A Figura 17 ilustra um circuito para a execução de um desloca-mento em pacote nos bytes individuais dos dados em pacote, de acordo comuma concretização da invenção.
EMPACOTAMENTO
A Figura 18 é um diagrama de fluxo que ilustra um processopara a execução de operações de empacotamento nos dados em pacote, deacordo com uma concretização da invenção.
A Figura 19a ilustra um circuito para a execução de operaçõesde empacotamento nos dados de byte em pacote, de acordo com uma con-cretização da invenção.
A Figura 19b ilustra um circuito para a execução de operaçõesde empacotamento nos dados de palavra em pacote, de acordo com umaconcretização da invenção.
DESEMPACOTAMENTO
A Figura 20 é um diagrama de fluxo que ilustra um processopara a execução de operações desempacotadas nos dados em pacote, deacordo com uma concretização da invenção.
A Figura 21 ilustra um circuito para a execução de operaçõesdesempacotadas nos dados em pacote, de acordo com uma concretizaçãoda invenção.
CONTAGEM DE OCUPAÇÃO
A Figura 22 é um diagrama de fluxo que ilustra um processopara a execução de uma operação de contagem de ocupação nos dados empacote, de acordo com uma concretização da invenção.
A Figura 23 é um diagrama de fluxo que ilustra um processopara a execução de uma operação de contagem de ocupação em um ele-mento de dados dos dados em pacote e para a geração de um único ele-mento de dados de resultado para dados em pacote de resultado, de acordocom uma concretização da invenção.
A Figura 24 ilustra um circuito para a execução de uma opera-ção de contagem de ocupação nos dados em pacote possuindo quatro ele-mentos de dados de palavras, de acordo com uma concretização da invenção.
A Figura 25 ilustra um circuito detalhado para a execuçãode uma operação de contagem de ocupação em um elemento de dados depalavra de dados em pacote, de acordo com a concretização da invenção.
OPERAÇÕES LÓGICAS EM PACOTE
A Figura 26 é um diagrama de fluxo que ilustra um processopara a execução de diversas operações lógicas nos dados em pacote, deacordo com uma concretização da invenção.
A Figura 27 ilustra um circuito para a execução de operaçõeslógicas nos dados em pacote, de acordo com a concretização da invenção.
COMPARAÇÃO EM PACOTE
A Figura 28 é um diagrama de fluxo que ilustra um processopara a execução de operações de comparação em pacote nos dados empacote, de acordo com uma concretização da invenção.
A Figura 29 ilustra um circuito para a execução de operações decomparação em pacote nos bytes individuais dos dados em pacote, de acor-do com uma concretização da invenção.
Descrição Detalhada
Este pedido descreve um processo e um aparelho para incluirem um processador um conjunto de instruções que suportem as operaçõesnos dados em pacote exigidos pelas aplicações típicas de múltiplos meios.Na seguinte descrição, são explicados numerosos detalhes específicos, demaneira a fornecerem um completo entendimento da invenção. Entretanto, éentendido que a invenção pode ser praticada sem estes detalhes específi-cos. Em outros casos, circuitos, estruturas e técnicas bem conhecidos nãoforam mostrados em detalhes, a fim de não obscurecer desnecessariamentea invenção.
Definições
Para prover um fundamento para o entendimento da descriçãodas concretizações da invenção, são fornecidas as seguintes definições.Bit X até Bit Y:define um subcampo de número binário. Por exemplo, bit seisaté bit zero do byte 001110102 (mostrado na base dois) representam o sub-campo 1110102- O 2' que segue um número binário indica a base 2. Por isso,IOOO2 é igual a 810, enquanto F16 é igual a 15io-Rx: é um registro. Um registro é qualquer dispositivo capaz de arma-zenar e fornecer dados. A funcionabilidade adicional de um registro é des-crita abaixo. Um registro não é necessariamente parte do pacote do proces-sador.
SRC1, SCR2, e DEST:
identificam áreas de armazenamento (por exemplo, endereçosde memória, registros, etc.)
Fontel-i e Resultadol-i:representam dados.
SISTEMA DE COMPUTADOR
A Figura 1 ilustra um sistema de computador exemplificativo100, de acordo com uma concretização da invenção. O sistema de compu-tador 100 inclui uma barra 101, ou outros hardware e software de comunica-ção, para comunicar a informação, e um processador 109 acoplado com abarra 101 para o processamento da informação. O processador 109 repre-senta uma unidade de processamento central de qualquer tipo de arquitetu-ra, incluindo uma arquitetura tipo CISC ou RISC. O sistema de computador100 adicionalmente inclui uma memória de acesso aleatório (RAM) ou outrodispositivo de armazenamento dinâmico (mencionado como memória princi-pal 104), acoplado à barra 101 para armazenar a informação e as instruçõesa serem executadas pelo processador 109. A memória principal 104 tambémpode ser usada para armazenar variáveis temporárias ou outra informaçãointermediária durante a execução de instruções através do processador 109.
O sistema de computador 100 também inclui uma memória de leitura apenas(ROM) 106, e/ou outro dispositivo de armazenamento estático, acoplado àbarra 101 para armazenar a informação estática e as instruções para o pro-cessador 109. O dispositivo de armazenamento de dados 107 é acoplado àbarra 101 para armazenar informação e instruções.A Figura 1 também ilustra que o processador 109 inclui uma uni-dade de execução 130, um arquivo de registro geral 150, um cache 160, umdecodificador 165, e uma barra interna 170. Naturalmente, o processador109 contém circuitos adicionais que não são mostrados para que não obscu-reçam a invenção.
A unidade de execução 130 é usada para executar instruçõesrecebidas pelo processador 109. Em adição ao reconhecimento de instru-ções tipicamente implementadas nos processadores de finalidades gerais, aunidade de execução 130 reconhece as instruções no conjunto de instruçõesem pacote 140 para a execução de operações nos formatos de dados empacote. Em uma concretização, o conjunto de instruções em pacote 140 in-clui instruções para suportar a(s) operação(ções) de empacotamento, a(s)operação(ções) de desempacotamento, a(s) operação(ções) de soma empacote, a(s) operação(ções) de subtração em pacote, a(s) operação(ções)de multiplicação em pacote, a(s) operação(ções) de deslocamento em pa-cote, a(s) operação(ções) de comparação, a(s) operação(ções) de multipli-cação-adição, a(s) operação(ções) de multiplicação-subtração, a(s) opera-ção(ções) de contagem de ocupação, e um conjunto de operações lógicasem pacote (incluindo AND em pacote, ANDNOT em pacote, OR em pacote,e XOR em pacote), na maneira descrita posteriormente aqui. Enquanto umaconcretização é descrita, na qual o conjunto de instruções em pacote 140inclui estas instruções, a concretização alternativa pode conter um subcon-junto ou um superconjunto destas instruções.
Com a inclusão destas instruções, as operações exigidas pormuitos dos algoritmos usados nas aplicações de múltiplos meios podem serexecutadas com o uso de dados em pacote. Dessa forma, estes algoritmospodem ser escritos para empacotar os dados necessários e para executar asoperações necessárias nos dados em pacote, sem exigir que os dados empacote sejam desempacotados para executar uma ou mais operações de umelemento de dados de cada vez. Conforme anteriormente descrito, isto pro-porciona vantagens de desempenho sobre os processadores de finalidadesgerais da técnica anterior que não suportam as operações de dados em pa-cote exigidas por certos algoritmos de múltiplos meios -- isto é, se um algo-ritmo de múltiplos meios exigir uma operação que não possa ser executadanos dados em pacote, o programa tem que desempacotar os dados, execu-tar a operação nos elementos separados individualmente, e depois empa-cotar os resultados em um resultado em pacote para o processamento empacote adicional. Em adição, a maneira descrita, na qual são executadasvárias das instruções, aperfeiçoa o desempenho das muitas aplicações demúltiplos meios.
A unidade de execução 130 é acoplada ao arquivo de registrogeral 150 através da barra interna 170. O arquivo de registro geral 150 re-presenta uma área de armazenamento no processador 109 para armazenara informação, incluindo os dados. É entendido que um aspecto da invençãoé o conjunto de instruções descrito para operação em dados em pacote. Deacordo com este aspecto da invenção, a área de armazenamento usadapara armazenar os dados em pacote não é crítica. Entretanto, uma concreti-zação do arquivo de registro geral 150 é descrita mais tarde com referênciaà Figura 2. A unidade de execução 130 é acoplada ao cache 160 e ao deco-dificador 165. O cache 160 é usado para melhorar o desempenho dos dadose/ou sinais de controle originários, por exemplo, da memória principal 104. Odecodificador 165 é usado para decodificar as instruções recebidas peloprocessador 109 em sinais de controle e/ou pontos de entrada de microcódi-go. Em resposta a estes sinais de controle e/ou pontos de entrada de micro-código, a unidade de execução 130 executa as operações adequadas. Porexemplo, se uma instrução de soma for recebida, o decodificador 165 fazcom que a unidade de execução 130 execute a adição exigida; se uma ins-trução de subtração for recebida, o decodificador 165 faz com que a unidadede execução 130 execute a subtração exigida; etc. O decodificador 165 podeser implementado com o uso de qualquer número de diferentes mecanismos(por exemplo, uma tabela de consulta, uma implementação de hardware, umPLA (Matriz Lógica Programável), etc.). Dessa forma, enquanto a execuçãodas diversas instruções pelo decodificador e pela unidade de execução érepresentada por uma série de declarações se/então, é entendido que aexecução de uma instrução não requer um processamento em série destasdeclarações de se/então. Ao invés disso, qualquer mecanismo para executareste processamento se/então com lógica é considerado como estando den-tro do escopo da invenção.
A Figura 1 adicionalmente mostra um dispositivo de armazena-mento de dados 107, tal como um disco magnético ou disco ótico, e sua uni-dade de disco correspondente. O sistema de computador 100 pode tambémser acoplado através da barra 101 a um dispositivo de vídeo 121 para exibira informação a um usuário do computador. O dispositivo de vídeo 121 podeincluir um buffer de quadro, dispositivos de finalização de gráficos, um tubode raios catódicos (CRT), e/ou um vídeo de painel plano. Um dispositivo deentrada alfanumérico 122, incluindo teclas alfanuméricas e outras teclas, étipicamente acoplado à barra 101 para comunicar a informação e as sele-ções de comando ao processador 109. Outro tipo de dispositivo de entradade usuário é o controle de cursor 123, tal como um mouse(dispositivo paraapontar), um trackball uma caneta, uma tela sensível ao toque, ou teclas dedireção de cursor para comunicar a informação de direção e as seleções decomando ao processador 109, e para controlar o movimento do cursor nodispositivo de vídeo 121. Este dispositivo de entrada tipicamente possui doisgraus de liberdade em dois eixos, um primeiro eixo (por exemplo, x) e umsegundo eixo (por exemplo, y), que permitem que o dispositivo especifiqueas posições em um plano. Entretanto, esta invenção não deve ser limitada adispositivos de entrada com apenas dois graus de liberdade.
Outro dispositivo que pode ser acoplado à barra 101 é um dis-positivo de cópia impressa 124 o qual pode ser usado para imprimir as ins-truções, dados ou outra informação em um meio, tal como papel, filme, outipos similares de meios. Adicionalmente, o sistema de computador 100pode ser acoplado a um dispositivo para a gravação do som, e/ou a repeti-ção de disco 125, tal como um digitalizador acoplado a um microfone paragravar a informação. Adicionalmente, o dispositivo pode incluir um alto-falante que é acoplado a um conversor digital a analógico (D/A) para a repe-tição dos sons digitalizados.Também o sistema de computador 100 pode ser um terminal emuma rede de computador (por exemplo, uma LAN (Rede Local). O sistemade computador 100 seria então um subsistema de computador de uma redede computador. O sistema de computador 100 opcionalmente inclui o dispo-sitivo de digitalização de vídeo 126. O dispositivo de digitalização de vídeo126 pode ser usado para capturar imagens de vídeo que podem ser transmi-tidas a outros na rede de computador.
Em uma concretização, o processador 109 adicionalmente su-porta um conjunto de instruções que é compatível com o conjunto de instru-ções x86 (o conjunto de instruções usado pelos microprocessadores exis-tentes, tais como o microprocessador Pentium®, fabricado pela Intel Corpo-ration of Santa Clara, Califórnia). Dessa maneira, em uma concretização, oprocessador 109 suporta todas as operações suportadas na IA® - Arquiteturada Intel, como definido pela Intel Corporation of Santa Clara, Califórnia (videMicroprocessadores. Livros de Dados da Intel, volume 1 e volume 2, 1992 e1993, disponível pela Intel of Santa Clara, Califórnia). Como resultado, oprocessador 109 pode suportar as operações x86 existentes, em adição àsoperações da invenção. Enquanto a invenção é descrita como sendo incor-porada ao conjunto de instruções com base em x86, concretizações alterna-tivas poderiam incorporar a invenção em outros conjuntos de instruções. Porexemplo, a invenção poderia ser incorporada a um processador de 64 bitscom o uso de um novo conjunto de instruções.
A Figura 2 ilustra o arquivo de registro geral do processador, deacordo com uma concretização da invenção. O arquivo de registro geral 150é usado para armazenar informações, incluindo a informação de contro-le/estado, os dados inteiros, os dados de vírgula flutuante, e os dados empacote. Na concretização mostrada na Figura 2, o arquivo de registro geral150 inclui registros inteiros 201, registros 209, registros de estado 208 e re-gistro de indicador de instrução 211. Os registros de estado 208 indicam oestado do processador 109. O registro de indicador de instrução 211 arma-zena o endereço da próxima instrução a ser executada. Os registros inteiros201, os registros 209, os registros de estado 208, e o registro de indicadorde instrução 211 são todos acoplados à barra interna 170. Quaisquer regis-tros adicionais seriam também acoplados à barra interna 170.
Em uma concretização, os registros 209 são usados tanto paraos dados em pacote como para os dados de vírgula flutuante. Em tal con-cretização, o processador 109, em qualquer momento, tem que tratar os re-gistros 209 como sendo registros de vírgula flutuante com referência de em-pilhamento ou registros de dados em pacote com referência de não-empílhamento. Nesta concretização, um mecanismo é incluído para permitirque o processador 109 seja comutado entre a operação nos registros 209como registros de vírgula flutuante mencionados no empilhamento e regis-tros de dados em pacote mencionados no não-empilhamento. Em outra talconcretização, o processador 109 pode simultaneamente operar nos regis-tros 209 como registros de dados em pacote e de vírgula flutuante mencio-nados no não-empilhamento. Como outro exemplo, em outra concretização,os mesmos registros podem ser usados para armazenar dados inteiros.
Naturalmente, concretizações alternativas podem ser imple-mentadas para conter mais ou menos conjuntos de registros. Por exemplo,uma concretização alternativa pode incluir um conjunto separado de regis-tros de vírgula flutuante para armazenar os dados de vírgula flutuante. Comooutro exemplo, uma concretização alternativa pode incluir um primeiro con-junto de registros, cada qual para armazenar a informação de contro-le/estado, e um segundo conjunto de registros, cada um capaz de armaze-nar, dados inteiros, de vírgula flutuante e em pacote. Como finalidade declareza, os registros de uma concretização não devem ter seu significadolimitado a um tipo específico de circuito. Ao invés disso, um registro de umaconcretização precisa apenas ser capaz de armazenar e fornecer dados, ede executar as funções descritas aqui.
Os diversos conjuntos de registros (por exemplo, os registrosinteriores 201, os registros 209) podem ser implementados para incluíremdiferentes números de registros e/ou registros de tamanho diferente. Porexemplo, em uma concretização, os registros interiores 201 são implemen-tados para armazenar trinta e dois bits, enquanto os registros 209 são im-plementados para armazenar oitenta bits (todos os oitenta bits sendo usadospara armazenar os dados de vírgula flutuante, enquanto apenas sessenta equatro são usados para dados em pacote). Em adição, os registros 209contêm oito registros, R0 212a a R7 212h, Ri 212a, R2 212b e R3 212c sendoexemplos de registros individuais nos registros 209. Trinta e dois bits de umregistro nos registros 209 podem ser movidos para um registro interior nosregistros inteiros 201. Similarmente, um valor em um registro inteiro pode sermovido para trinta e dois bits de um registro nos registros 209. Em outraconcretização, os registros inteiros 201 contêm, cada qual, 64 bits, e 64 bitsde dados podem ser movidos entre o registro inteiro 201 e os registros 209.
A Figura 3 é um diagrama de fluxo que ilustra as etapas geraisusadas pelo processador para manipular os dados, de acordo com uma con-cretização da invenção. Por exemplo, tais operações incluem uma operaçãode carregamento para carregar um registro no arquivo de registro geral 150com dados originários do cache 160, da memória principal 104, da memóriade leitura apenas (ROM) 106, ou do dispositivo de armazenamento de dados 107.
Na etapa 301, o decodificador 202 recebe um sinal de controle207 originário do cache 160 ou da barra 101. O decodificador 202 decodificao sinal de controle para determinar as operações a serem executadas.
Na etapa 302, o Decodificador 202 acessa o arquivo de registrogeral 150, ou uma localização na memória. Os registros no arquivo de regis-tro geral 150, ou as localizações de memória na memória, são acessadosdependendo do endereço de registro especificado no sinal de controle 207.
Por exemplo, para uma operação em dados em pacote, o sinal de controle207 pode incluir os endereços de registro SRC1, SRC2 e DEST. SRC1 é oendereço do primeiro registro de fonte. SRC2 é o endereço do segundo re-gistro de fonte. Em alguns casos, o endereço SRC2 é opcional, na medidaem que nem todas as operações exigem dois endereços de fonte. Se o en-dereço SRC2 não for exigido para uma operação, então apenas o endereçoSRC1 é usado. DEST é o endereço do registro de destino, onde são arma-zenados os dados de resultado. Em uma concretização, SRC1 e SRC2 sãotambém usados como DEST. SRC1, SRC2 e DEST são descritos maiscompletamente em relação à Figura 6a e Figura 6b. Os dados armazenadosnos registros correspondentes são mencionados como Fontel, Fonte2, eResultado, respectivamente. Cada um destes dados possui sessenta e qua-tro bits de comprimento.
Em outra concretização da invenção, qualquer um, ou todos osSRC1, SRC2 e DEST podem definir uma localização de memória no espaçode memória endereçável do processador 109. Por exemplo, SRC1 podeidentificar uma localização de memória na memória principal 104, enquantoSRC2 identifica um primeiro registro nos registros inteiros 201 e DEST iden-tifica um segundo registro nos registros 209. Para simplicidade de descriçãoaqui, a invenção será descrita em relação ao acesso do arquivo de registrogeral 150. Contudo, estes acessos poderiam ser feitos, ao invés disso, paraa memória.
Na etapa 303, a unidade de execução 130 é possibilitada deexecutar a operação nos dados acessados. Na etapa 304, o resultado é ar-mazenado de volta para o arquivo de registro geral 150, de acordo com asexigências do sinal de controle 207.
Formatos de Dados e de Armazenamento
A Figura 4 ilustra os tipos de dados em pacote, de acordo comuma concretização da invenção. São ilustrados três formatos de dados empacote: byte em pacote 401, palavra em pacote 402 e a palavra dupla empacote 403. O byte em pacote, em uma concretização da invenção, tem ses-senta e quatro bits de comprimento contendo oito elementos de dados. Cadaelemento de dados tem um byte de comprimento. De maneira geral, umelemento de dados é uma peça individual de dados que é armazenada emum único registro (ou localização de memória) com outros elementos de da-dos de comprimento igual. Em uma concretização da invenção, o número deelementos de dados armazenados em um registro é de sessenta e quatrobits divididos pelo comprimento em bits de um elemento de dados.
A palavra em pacote 402 tem sessenta e quatro bits de compri-mento e contém quatro elementos de dados de palavra 402. Cada elementode dados de palavra 402 contém dezesseis bits de informação.
A palavra dupla em pacote 403 tem sessenta e quatro bits decomprimento e contém dois elementos de dados de palavra dupla 403. Cadaelemento de dados de palavra dupla 403 contém trinta e dois bits de infor-mação.
As Figuras de 5a a 5c ilustram a representação de armazena-mento de dados em pacote em registro, de acordo com uma concretizaçãoda invenção. A representação em registro de byte em pacote sem sinal al-gébrico 510 ilustra o armazenamento de um byte em pacote sem sinal algé-brico 401 em um dos registros R0 212a a R7 212h. A informação para cadaelemento de dados de byte é armazenado do bit sete até o bit zero para bytezero, do bit 15 até o bit oito para byte um, do bit vinte e três até o bit dezes-seis para byte dois, do bit trinta e um até o bit vinte e quatro para byte três,do bit trinta e nove até o bit trinta e dois para byte quatro, do bit quarenta esete até o bit quarenta para byte cinco, do bit cinqüenta e cinco até o bit qua-renta e oito para byte seis e do bit sessenta e três até o bit cinqüenta e seispara byte sete. Desse modo, todos os bits disponíveis são usados no regis-tro. Esta disposição de armazenamento aumenta a eficiência de armazena-mento do processador. Da mesma forma, com oito elementos de dadosacessados, uma operação pode agora ser executada nos oito elementos dedados simultaneamente. A representação em registro de byte em pacotecom sinal algébrico 511 ilustra o armazenamento de um byte em pacote comsinal algébrico 401. Deve ser notado que apenas o oitavo bit de cada ele-mento de dados de byte é necessário para o indicador de sinal.
Representação em registro de palavra em pacote sem sinal al-gébrico 512 ilustra como as palavras de três a zero são armazenadas em umregistro dos registros 209. Os bits de quinze a zero contêm a informação deelemento de dados para a palavra zero, os bits de trinta e um a dezesseiscontêm a informação para a palavra um do elemento de dados, os bits dequarenta e sete a trinta e dois contêm a informação para a palavra dois doelemento de dados e os bits de sessenta e três a quarenta e oito contêm ainformação para a palavra três do elemento de dados. A representação emregistro de palavra em pacote com sinal algébrico 513 é similar à represen-tação em registro de palavra em pacote sem sinal algébrico 512. Deve sernotado que apenas o décimo-sexto bit de cada elemento de dados de pala-vra é o necessário para o indicador de sinal.
A representação em registro de palavra dupla em pacote semsinal algébrico 514 mostra como os registros 2009 armazenam dois ele-mentos de dados de palavra dupla. A palavra dupla zero é armazenada dobit trinta e um até o bit zero do registro. A palavra dupla um é armazenadado bit sessenta e três até o bit trinta e dois do registro. A representação emregistro de palavra dupla em pacote com sinal algébrico 515 é similar à re-presentação em registro de palavra dupla em pacote sem sinal algébrico514. Deve ser notado que o bit de sinal necessário é o trigésimo segundo bitdo elemento de dados de palavra dupla.
Conforme mencionado anteriormente, os registros 209 podemser usados tanto para os dados em pacote como para os dados de vírgulaflutuante. Nesta concretização da invenção, o processador de programaçãoindividual 109 pode ser exigido de trilhar, se um registro endereçado, R0212a por exemplo, estiver armazenando os dados em pacote ou os dadosde vírgula flutuante. Em uma concretização alternativa, o processador 109poderia trilhar o tipo de dados armazenados nos registros individuais dosregistros 209. Esta concretização alternativa poderia então gerar erros, se,por exemplo, fosse feita uma tentativa para uma operação de adição em pa-cote nos dados de vírgula flutuante.
Formatos de Sinal de Controle
O seguinte descreve uma concretização dos formatos de sinalde controle usados pelo processador 109 para manipular os dados em pa-cote. Em uma concretização da invenção, os sinais de controle são repre-sentados como trinta e dois bits. O decodificador 202 pode receber o sinalde controle 207 originário da barra 101. Em outra concretização, o decodifi-cador 202 pode também receber tais sinais de controle originários do cache160.
A Figura 6 ilustra um formato de sinal de controle para indicar ouso de dados em pacote, de acordo com uma concretização da invenção. Ocampo de operação OP 601, do bit trinta e um até o bit vinte e seis, fornecea informação a cerca da operação a ser executada pelo processador 109;por exemplo, a adição em pacote, a subtração em pacote, etc. SRC1 602, dobit vinte e cinco até o bit vinte, fornece o endereço de registro de fonte de umregistro nos registros 209. Este registro de fonte contém os primeiros dadosem pacote, Fontel, a serem usados na execução do sinal de controle. Simi-larmente, SRC2 603, do bit dezenove até o bit quatorze, contém o endereçode um registro nos registros 209. Este segundo registro de fonte contém osdados em pacote, Fonte2, a serem usados durante a execução da operação.DEST 605, do bit cinco até o bit zero, contém o endereço de um registro nosregistros 209. Este registro de destino armazenará os dados em pacote deresultado, Resultado, da operação de dados em pacote.
Os bits de controle SZ 610, bit doze e bit treze, indicam o com-primento dos elementos de dados nos primeiro e segundo registros de fontede dados em pacote. Se SZ 610 for igual a 012, então os dados em pacoteserão formatados como byte em pacote 401. Se SZ 610 for igual a 102; en-tão os dados em pacote serão formatados como palavra em pacote 402. SZ610 que é igual a OO2 ou 112é reservado; contudo, em outra concretização,um destes valores poderia ser usado para indicar a palavra dupla em pacote403.
O bit de controle T 611, bit onze, indica se a operação deve serexecutada com o modo de saturação . Se T 611 for igual a um, então umaoperação de saturação será executada. Se T 611 for igual a zero, então umaoperação de não-saturação será executada. Operações de saturação serãodescritas mais tarde.
O bit de controle S 612, bit dez, indica o uso de uma operaçãocom sinal algébrico. Se S 612 for igual a um, então uma operação com sinalalgébrico será executada. Se S612 for igual a zero, então uma operaçãosem sinal algébrico será executada.
A Figura 6b ilustra um segundo formato de sinal de controle paraindicar o uso de dados em pacote, de acordo com uma concretização dainvenção. Este formato corresponde ao formato de código de operação inte-rior geral descrito no "Manual do Usuário da Família de Processador Pen-tium", disponível pela Intel Corporation, Vendas Literárias, P.O. Box 7641,prospecto Mt., IL, 60056-7641. Deve ser notado que OP 601, SZ 610, T 611e S 612 são todos combinados em um grande campo. Para alguns sinais decontrole, os bits de três a cinco são SRC1 602. Em uma concretização, ondehaja um endereço SRC1 602, então os bits de três a cinco também corres-pondem ao DEST 605. Em uma concretização alternativa, onde haja um en-dereço SRC2 603, então os bits de zero a dois também correspondem aoDEST 605. Para outros sinais de controle, como uma operação imediata dedeslocamento em pacote, os bits de três até cinco representam uma exten-são ao campo de código de operação. Em uma concretização, esta extensãopermite que um programador inclua um valor imediato com o sinal de con-trole, tal como um valor de contagem de deslocamento. Em uma concretiza-ção, o valor imediato segue o sinal de controle. Isto é descrito em maioresdetalhes no "Manual do Usuário da Família de Processador Pentium", noapêndice F, nas páginas F-1 a F-3. Os bits de zero a dois representamSRC2 603. Este formato geral permite o endereçamento de registro a regis-tro, de memória a registro, de registro por memória, de registro por registro,de registro por imediato e de registro à memória. Também, em uma concre-tização, este formato geral pode suportar o endereçamento de registro intei-ro a registro, e de registo a registro inteiro.
Descrição de Saturação/lnsaturação
Conforme mencionado anteriormente, T 611 indica se as opera-ções opcionalmente saturam. No caso de o resultado de uma operação, compossibilidade de saturação, saturar a capacidade ou saturar negativamente afaixa dos dados, o resultado será retido. Meios de retenção ajustam o resul-tado em um valor máximo ou mínimo, na eventualidade de um resultado ex-ceder o valor máximo ou mínimo da faixa. No caso de estouro negativo, asaturação retém o resultado no valor mais baixo na faixa e, no caso de satu-ração de capacidade, no valor mais alto. A faixa permissível para cada for-mato de dados é mostrada na Tabela 7.Tabela 7
<table>table see original document page 23</column></row><table>
Conforme mencionado acima, T 611 indica se as operações desaturação estão sendo executadas ou não. Por isso, com o uso de um for-mato de dados de byte sem sinal algébrico, no caso de um resultado de ope-ração = 258 e a saturação ter sido ativada, então o resultado seria retido em255, antes de ser armazenado no registro de destino da operação. Similar-mente, se o resultado de uma operação = -32999 e o processador usou umformato de dados de palavra com sinal algébrico com a possibilidade de sa-turação, então o resultado seria retido em -32768, antes de ser armazenadono registro de destino da operação.
ADIÇÃO EM PACOTE
Operação de Adição em pacote
Uma concretização da invenção permite que as operações deadição em pacote sejam executadas na unidade de Execução 130. Isto é, ainvenção permite que cada elemento de dados dos primeiros dados em pa-cote seja somado individualmente a cada elemento de dados dos segundosdados em pacote.
A Figura 7a ilustra um processo para a execução de adição empacote, de acordo com uma concretização da invenção. Na etapa 701, o de-codificador 202 decodifica o sinal de controle 207 recebido pelo processador109. Dessa forma, o decodificador 202 decodifica o código de operação paraadição em pacote, os endereços SRC1 602, SRC2 603 e DEST 605 nos re-gistros 209, a saturação/insaturação, a aritmética com sinal algébrico/semsinal algébrico, e o comprimento dos elementos de dados nos dados em pa-cote. Na etapa 702, através da barra interna 170, o decodificador 202 aces-sa os registros 209 no arquivo de registro geral 150, uma vez fornecidos osendereços SRC1 602 e SRC2 603. Os registros 209 fornecem a unidade deExecução 130 com os dados em pacote armazenados nos registros nestesendereços, Fontel e Fonte2, respectivamente. Isto é, os registros 209 co-municam os dados em pacote à unidade de Execução 130 através da barrainterna 170.
Na etapa 703, o decodificador 202 permite que a unidade deExecução 130 execute uma operação de adição em pacote. O decodificador202 adicionalmente comunica, através da barra interna 170, o comprimentodos elementos de dados em pacote, na eventualidade de a saturação vir aser usada, e na eventualidade da aritmética com sinal algébrico vir a serusada também. Na etapa 704, o comprimento do elemento de dados deter-mina qual a etapa que deve ser executada a seguir. Se o comprimento doselementos de dados nos dados em pacote for de oito bits (dados de byte),então a unidade de Execução 130 executa a etapa 705a. Entretanto, se ocomprimento dos elementos de dados nos dados em pacote for de dezes-seis bits (dados de palavras), então a unidade de Execução 130 executa aetapa 705b. Em uma concretização da invenção, apenas é suportada a adi-ção em pacote com comprimento de elemento de dados de oito bits e dedezesseis bits. Entretanto, concretizações alternativas podem suportar com-primentos diferentes e/ou outros comprimentos. Por exemplo, uma concreti-zação alternativa poderia adicionalmente suportar uma adição em pacote docomprimento de elemento de dados de trinta e dois bits.
Assumindo-se que o comprimento dos elementos de dados é deoito bits, então é executada a etapa 705a. A unidade de Execução 130 somaos bits de sete até zero da Fontel aos bits de sete até zero de SRC2, produ-zindo os bits de sete até zero dos dados em pacote do Resultado. Em para-lelo com esta adição, a unidade de Execução 130 soma os bits de quinze atéoito da Fontel aos bits de quinze até oito da Fonte 2, produzindo os bits dequinze até oito dos dados em pacote do Resultado. Em paralelo com estasadições, a unidade de Execução 130 soma os bits de vinte e três até dezes-seis da Fonte 1 aos bits de vinte e três até dezesseis da Fonte2, produzindoos bits de vinte e três até dezesseis dos dados em pacote do Resultado. Emparalelo com estas adições, a unidade de Execução 130 soma os bits detrinta e um até vinte e quatro da Fontel aos bits de trinta e um até vinte equatro da Fonte2, produzindo os bits de trinta e um até vinte e quatro dosdados em pacote do Resultado. Em paralelo com estas adições, a unidadede Execução 130 soma os bits de trinta e nove até trinta e dois da Fontelaos bits de trinta e nove até trinta e dois da Fonte2, produzindo os bits detrinta e nove até trinta e dois dos dados em pacote do Resultado. Em para-lelo com estas adições, a unidade de Execução 130 soma os bits de qua-renta e sete até quarenta da Fontel aos bits de quarenta e sete até quarentada Fonte 2, produzindo os bits de quarenta e sete até quarenta dos dadosem pacote do Resultado. Em paralelo com estas adições, a unidade de Exe-cução 130 soma os bits de cinqüenta e cinco até quarenta e oito da Fonte 1aos bits de cinqüenta e cinco até quarenta e oito da Fonte2, produzindo osbits de cinqüenta e cinco até quarenta e oito dos dados em pacote do Re-sultado. Em paralelo com estas adições, a unidade de Execução 130 somaos bits de sessenta e três até cinqüenta e seis da Fontel aos bits de ses-senta e três até cinqüenta e seis da Fonte2, produzindo os bits de sessentae três até cinqüenta e seis dos dados em pacote do Resultado.
Assumindo-se que o comprimento dos elementos de dados é dedezesseis bits, então é executada a etapa 705b. A unidade de execução 130soma os bits de quinze até zero da Fontel aos bits de quinze até zero deSRC2, produzindo os bits de quinze até zero dos dados em pacote do Re-sultado. Em paralelo com esta adição, a unidade de Execução 130 soma osbits de trinta e um até dezesseis da Fontel aos bits de trinta e um até de-zesseis da Fonte 2, produzindo os bits de trinta e um até dezesseis dos da-dos em pacote do Resultado. Em paralelo com estas adições, a unidade deExecução 13 soma os bits de quarenta e sete até trinta e dois da Fontel aosbits de quarenta e sete até trinta e dois da Fonte2, produzindo os bits dequarenta e sete até trinta e dois dos dados em pacote do Resultado. Em pa-ralelo com estas adições, a unidade de Execução 130 soma os bits de ses-senta e três até quarenta e oito da Fontel aos bits de sessenta e três atéquarenta e oito da Fonte2, produzindo os bits de sessenta e três até qua-renta e oito dos dados em pacote do Resultado.
Na etapa 706, o decodificador 202 permite um registro nos re-gistros 209 com o endereço DEST 605 do registro de destino. Dessa manei-ra, o Resultado é armazenado no registro endereçado por DEST 605.
A Tabela 8a ilustra a representação em registro da operação deadição em pacote. A primeira fileira de bits é a representação de dados empacote dos dados em pacote da Fontel. A segunda fileira de bits é a repre-sentação de dados em pacote dos dados em pacote da Fonte2. A terceirafileira de bits é a representação de dados em pacote dos dados em pacotedo Resultado. O número abaixo de cada bit de elemento de dados é o núme-ro do elemento de dados. Por exemplo, o elemento de dados 0 da Fontel é10001OOO2. Por isso, se os elementos de dados tiverem oito bits de compri-mento (dados de byte), e sem sinal algébrico, é executada a adição não-saturada, a unidade de Execução 130 fornecendo os dados em pacote doResultado, conforme mostrado.
Deve ser notado que em uma concretização da invenção, ondeum resultado satura a capacidade ou satura negativamente e a operaçãoque é usada é insaturada, esse resultado é simplesmente truncado. Isto é, obit de transporte é ignorado. Por exemplo na Tabela 8a, na representaçãoem registro do elemento de dados um do resultado seria: 100010002 +10001OOO2 = 00001OOO2. Similarmente, para as saturações negativas, o re-sultado é truncado. Esta forma de truncamento permite que um programadorfacilmente execute a aritmética de módulo. Por exemplo, uma equação paraum elemento de dados do resultado pode ser expressa como: (elemento dedados um da Fontel + elemento de dados um da Fonte2) mod 256 = umelemento de dados de resultado. Adicionalmente, aquele versado na técnicaentenderia a partir desta descrição que as saturações de capacidade e assaturações negativas poderiam ser detectadas através do ajuste dos bits deerro em um registro de estado.<table>table see original document page 27</column></row><table>
onde Overflow = Saturação de capacidade
Tabela 8a
A Tabela 8b ilustra a representação em registro de uma opera-ção de adição de dados de palavra em pacote. Por isso, se os elementos dedados apresentarem dezesseis bits de comprimento (dados de palavra), esem sinal algébrico, é executada a adição não-saturada, a unidade de Exe-cução 130 produzindo os dados em pacote do Resultado, conforme mostra-do. Deve ser notado que no elemento de dados dois de palavra, o transportea partir do bit sete (vide bits 1 enfatizado abaixo) propagado para o bit oito,fazendo com que o elemento de dados dois sature sua capacidade (videsaturação de capacidade enfatizada abaixo).
<table>table see original document page 27</column></row><table>
onde Overflow = Saturação de capacidade
Tabela 8b
A Tabela 8c ilustra a representação em registro da operação deadição de dados de palavra dupla em pacote. Esta operação é suportada emuma concretização alternativa da invenção. Por isso, se os elementos dedados tiverem trinta e dois bits de comprimento (isto é, dados de palavradupla), e sem sinal algébrico, é executada a adição insaturada, a unidade deExecução 130 produzindo os dados em pacote do Resultado, conformemostrado. Deve ser notado que os transportes a partir do bit sete e do bitquinze do elemento de dados um de palavra dupla propagaram para o bitoito e o bit dezesseis, respectivamente.
<table>table see original document page 28</column></row><table>
onde Overflow = Saturação de capacidade
Tabela 8c
Para melhor ilustrar a diferença entre a adição em pacote e aadição ordinária, os dados originários do exemplo acima são duplicados naTabela 9. Entretanto, neste caso, a adição ordinária (sessenta e quatro bits)é executada nos dados. Deve ser notado que os transportes a partir do bitsete, do bit quinze, do bit vinte e três, do bit trinta e um, do bit trinta e nove edo bit quarenta e sete foram conduzidos para o bit oito, o bit dezesseis, o bitvinte e quatro, o bit trinta e dois, o bit quarenta e o bit quarenta e oito, res-pectivamente.
<table>table see original document page 28</column></row><table>
Tabela 9
Adição em pacote Com Sinal Alqébrico/lnsaturada
A Tabela 10 ilustra um exemplo de uma adição em pacote comsinal algébrico, onde o comprimento do elemento de dados dos dados empacote é de oito bits. A saturação não é usada. Por isso, os resultados po-dem saturar a capacidade ou saturar negativamente. A Tabela 10 usa dadosdiferentes dos das Tabelas de 8a-8c e Tabela 9.
<table>table see original document page 29</column></row><table>
onde Overflow = Saturação de capacidade eUnderflow = Saturação negativa
Tabela 10
Adição em pacote Com Sinal Alqébrico/Saturada
A Tabela 11 ilustra um exemplo de uma adição em pacote comsinal algébrico, onde o comprimento do elemento de dados dos dados empacote é de oito bits. A saturação é usada; conseqüentemente, a saturaçãode capacidade será retida no valor máximo, e a saturação negativa será reti-da no valor mínimo. A Tabela 11 usa os mesmos dados que a Tabela 10.Aqui, o elemento de dados zero e o elemento de dados dois são retidos novalor mínimo, enquanto o elemento de dados quatro e o elemento de dadosseis são retidos no valor máximo.<table>table see original document page 30</column></row><table>
Tabela 11
SUBTRAÇÃO EM PACOTE
Operação de Subtração Em pacote
Uma concretização da invenção permite que as operações desubtração em pacote sejam executadas na unidade de Execução 130. Isto é,a invenção permite que cada elemento de dados dos segundos dados empacote seja subtraído individualmente a partir de cada elemento de dadosdos primeiros dados em pacote.
A Figura 7b ilustra um processo para a execução da subtraçãoem pacote, de acordo com uma concretização da invenção. Deve ser notadoque as etapas 710-713 são similares às etapas 701-704.
Na presente concretização da invenção, apenas é suportada asubtração em pacote do comprimento do elemento de dados de oito bits ede dezesseis bits. Entretanto, concretizações alternativas podem suportarcomprimentos diferentes e/ou outros comprimentos. Por exemplo, uma con-cretização alternativa poderia adicionalmente suportar a subtração em pa-cote do comprimento do elemento de dados de trinta e dois bits.
Assumindo-se que o comprimento do elemento de dados é deoito bits, são executadas as etapas 714a e 715a. A unidade de Execução130 executa a aritmética dos complementos a 2 do bit sete até o bit zero daFonte2. Em paralelo com este complemento a 2, a unidade de Execução 130executa a aritmética dos complementos a 2 do bit quinze até o bit oito daFonte2. Em paralelo com estes complementos a 2, a unidade de Execução130 executa a aritmética dos complementos a 2 do bit vinte e três até o bitdezesseis da Fonte2. Em paralelo com estes complementos a 2, a unidadede Execução 130 executa a aritmética dos complementos a 2 do bit trinta enove até o bit trinta e dois da Fonte2. Em paralelo com estes complementosa 2, a unidade de Execução 130 executa a aritmética dos complementos a 2do bit quarenta e sete até o bit quarenta da Fonte2. Em paralelo com estescomplementos a 2, a unidade de Execução 130 executa a aritmética doscomplementos a 2 do bit cinqüenta e cinco até o bit quarenta e oito da Fon-te2. Em paralelo com estes complementos a 2, a unidade de Execução 130executa a aritmética dos complementos a 2 do bit sessenta e três até o bitcinqüenta e um da Fonte2. Na etapa 715a, a unidade de Execução 130 exe-cuta a adição dos bits de complementos a 2 da Fonte2 aos bits da Fontel,conforme descrito, de maneira geral, para a etapa 705a.
Assumindo-se que o comprimento do elemento de dados é dedezesseis bits, são executadas as etapas 714b e 715b. A unidade de Exe-cução 130 executa a aritmética dos complementos a 2 do bit quinze até o bitzero da Fonte2. Em paralelo com este complemento a 2, a unidade de Exe-cução 130 executa a aritmética dos complementos a 2 do bit trinta e um atéo bit dezesseis da Fonte2. Em paralelo com estes complementos a 2, a uni-dade de Execução 130 executa a aritmética dos complementos a 2 do bitquarenta e sete até o bit trinta e dois da Fonte2. Em paralelo com estescomplementos a 2, a unidade de Execução 130 executa a aritmética doscomplementos a 2 do bit sessenta e três até o bit quarenta e oito da Fonte2.Na etapa 715b, a unidade de Execução executa a adição dos bits de com-plementos a 2 da Fonte2 aos bits da Fontel, conforme descrito, de maneirageral, para a etapa 705b.
Deve ser notado que as etapas 714 e 715 são o processo usadoem uma concretização da invenção para subtrair um primeiro número a partirde um segundo número. Entretanto, outras formas de subtração são conhe-cidas na técnica e esta invenção não deve ser considerada limitada ao usoda aritmética do complemento a 2.
Na etapa 716, o decodificador 202 ativa os registros 209 com oendereço de destino do registro de destino. Desse modo, os dados em pa-cote do resultado são armazenados no registro DEST dos registros 209.
A Tabela 12 ilustra a representação em registro da operação desubtração em pacote. Assumindo-se que os elementos de dados se apre-sentam com oito bits de comprimento (dados de byte), e sem sinal algébrico,é executada a subtração insaturada; a seguir, a unidade de Execução 130produz os dados em pacote do resultado, conforme mostrado.
<table>table see original document page 32</column></row><table>
Underflow = Saturação negativa
Tabela 12
Circuitos de Adição/Subtração de Dados em pacote
A Figura 8 ilustra um circuito para a execução da adição em pa-cote e subtração em pacote nos bits individuais de dados em pacote, deacordo com uma concretização da invenção. A Figura 8 mostra os soma-dor/subtrator modificados de fração de bit 800. Os somador/subtrator 801 a-dativam dois bits originários da Fonte2 para serem somados à Fontel ousubtraídos da Fontel. O controle de operação e de transporte 803 transmiteao controle 809a sinais de controle para ativar uma operação de adição ousubtração. Dessa forma, os somador/subtrator 801a somam ou subtraem obit /' recebido na Fonte2, 805a ao/do bit /'recebido na Fontel1804a, produzin-do um bit de resultado transmitido no Resultado, 806a. Cjn 807a-b e Cout808a-b representam circuitos de controle de transporte, como é comumenteencontrado nos somadores/subtratores.
O controle de bit 802 é ativado a partir do controle de operação etransporte 803 através da ativação de dados em pacote 811 para o controleCini+i 807b e C0Uti. Por exemplo, na Tabela 13a, é executada uma adição debyte em pacote sem sinal algébrico. Se os somador/subtrator 801a somaremo bit sete da Fontel ao bit sete da Fonte2, então o controle de operação etransporte 803 ativará o controle de bit 802, detendo a propagação de umtransporte a partir do bit sete para o bit oito.
<table>table see original document page 33</column></row><table>
onde Overflow = Saturação de capacidade
Tabela 13a
Entretanto, se for executada uma adição de palavra em pacotesem sinal algébrico, e os somador/subtrator 801 forem similarmente usadospara somar o bit sete da Fontel ao bit sete da Fonte2, o controle de bit 802propagará o transporte para o bit oito. A Tabela 13b ilustra este resultado.
Esta propagação seria permitida para a adição de palavra dupla em pacote,bem como para a adição não-em pacote.
<table>table see original document page 33</column></row><table>
Tabela 13b
Os somador/subtrator 801a subtraem a Fonte2,805a da Fonteli15 804a de bit através primeiramente da formação do complemento a 2 daFonte2j 805a invertindo a Fonte2j 805a e somando um. Depois, os soma-dor/subtrator 801a somam este resultado à Fonteli 804a. As técnicas decomplementação a 2 de fração de bit são bem conhecidas na técnica, eaquele versado na técnica entenderia como projetar tal circuito de comple-mentação a 2 de fração de bit. Deve ser notado que a propagação de trans-portes é controlada pelo controle de bit 802 e pelo controle de operação e detransporte 803.
A Figura 9 ilustra um circuito para a execução da adição em pa-cote e subtração em pacote nos dados de byte em pacote, de acordo comuma concretização da invenção. A barra da Fontel 901 e a barra da Fonte2902 transportam os sinais de informação para os somadores/subtratores908a-h através da Fontem 906a-h e da Fonte2in 905a-h, respectivamente.
Desse modo, os somador/subtrator 908a somam/subtraem do bit sete até obit zero da Fonte2 ao/do bit sete até o bit zero da Fontel; os soma-dor/subtrator 908b somam/subtraem do bit quinze ao bit oito da Fonte2ao/do bit quinze ao bit oito da Fontel, etc. CTRL 904a-h recebe, a partir doControle de Operação 903, através do controle em pacote 911, os sinais decontrole que desativam a propagação dos transportes, a saturação de ativa-ção/desativação, e a aritmética de ativação/desativação com sinal algébri-co/sem sinal algébrico. O Controle de Operação 903 desativa a propagaçãodos transportes através do recebimento da informação de transporte originá-ria do CTRL 904a-h e não a propaga para os somador/subtrator 908a-h se-guintes mais significativos. Dessa maneira, o Controle de Operação 903executa as operações de controle de operação e de transporte 803 e decontrole de bit 802 para os dados em pacote de 64 bits. Aquele versado natécnica seria capaz de criar tal circuito, uma vez fornecidas as ilustraçõesnas Figuras de 1 -9 e a descrição acima.
Os somadores/subtratores 908a-h comunicam a informação doresultado, através da saída de resultado 907a-h, das diversas adições empacote ao registro de resultado 910a-h. Cada registro de resultado 910a-harmazena e, em seguida, transmite a informação de resultado para a barrade resultado 909. Esta informação de resultado é então armazenada no re-gistro inteiro especificado pelo endereço de registro DEST 605.A Figura 10 é uma vista lógica de um circuito para executar aadição em pacote e a subtração em pacote nos dados de palavra em pacote,de acordo com uma concretização da invenção. Aqui, as operações de pala-vra em pacote estão sendo executadas. A propagação de transportes entreo bit oito e o bit sete, o bit vinte e quatro e o bit vinte e três, o bit quarenta e obit trinta e nove, o bit cinqüenta e seis e o bit cinqüenta e cinco é ativadapelo Controle de Operação 903. Desse modo, os somador/subtrator 908a e908b, mostrados como somador/subtrator virtuais 1008a, atuarão juntos parasomar/subtrair a primeira palavra dos dados de palavra em pacote da Fonte2(do bit quinze até o bit zero) a/da primeira palavra dos dados de palavra empacote da Fontel (do bit quinze até o bit zero); somador/subtrator 908c e908d, mostrados como somador/subtrator virtuais 1008b, atuarão juntos parasomar/subtrair a segunda palavra dos dados de palavra em pacote da Fon-te2 (do bit trinta e um até o bit dezesseis) à/da segunda palavra dos dadosde palavra em pacote da Fonte 1 (do bit trinta e um até o bit dezesseis), etc..
Os somadores/subtratores virtuais 1008a-d comunicam a infor-mação de resultado, através da saída de resultado 1007a-d (saídas de re-sultado combinadas 907a-b, 907c-d, 907e-f e 907g-h), aos registros de re-sultado virtuais 1010a-d. Cada registro de resultado virtual 1010a-d (regis-tros de resultado combinados 910a-b, 910c-d, 910e-f e 910g-h) armazenaum elemento de dados de resultado de dezesseis bits para ser comunicadoà barra de Resultado 909.
A Figura 11 é uma vista lógica de um circuito para a execuçãode adição em pacote e de subtração em pacote nos dados de palavra duplaem pacote, de acordo com uma concretização da invenção. A propagaçãodos transportes entre o bit oito e bit sete, o bit dezesseis e o bit quinze, o bitvinte e quatro e o bit vinte e três, o bit quarenta e o bit trinta e nove, o bitquarenta e oito e o bit quarenta e sete, e o bit cinqüenta e seis e o bit cin-qüenta e cinco é ativada pelo Controle de Operação 903. Desse modo, ossomadores/subtratores 908a-d, mostrados como somadores/subtratores vir-tuais 1108a-d, atuam juntos para somar/subtrair a primeira palavra dupla dosdados de palavra dupla em pacote da Fonte2 (bit trinta e um até o bit zero)à/da primeira palavra dupla dos dados de palavra dupla em pacote da Fon-te1 (bit trinta e um até bit zero); somadores/subtratores 908e-h, mostradoscomo somadores/subtratores virtuais 1108b, atuam juntos para so-mar/subtrair a segunda palavra dupla dos dados de palavra dupla em pacoteda Fonte2 (bit sessenta e três até o bit trinta e dois) à/da segunda palavradupla dos dados de palavra dupla em pacote da Fonte 1 (bit sessenta e trêsaté o bit trinta e dois).
Os somadores/subtratores virtuais 1108a-b comunicam a infor-mação de resultado, através da saída de resultado 1107a-b (saídas de re-sultado combinadas 907a-d e 907e-h), aos registros de resultado virtuais1110a-b. Cada registro de resultado virtual 110a-b (registros de resultadocombinados 910a-d e 910e-h) armazena um elemento de dados de resulta-do de trinta e dois bits para ser comunicado à barra de Resultado 909.
MULTIPLICAÇÃO EM PACOTE
Operação de Multiplicação em pacote
Em uma concretização da invenção, o registro SRC1 contémdados do multiplicando (Fontel), o registro SRC2 contém dados do multipli-cador (Fonte2), e o registro DEST conterá uma porção do produto da multi-plicação (Resultado). Isto é, a Fontel apresentará cada elemento de dadosindependentemente multiplicado pelo respectivo elemento de dados daFonte2. Dependendo do tipo de multiplicação, o Resultado incluirá bits deordem mais superior ou de ordem mais inferior do produto.
Em uma concretização da invenção, são suportadas as seguin-tes operações de multiplicação: multiplicação em pacote superior sem sinalalgébrico, multiplicação em pacote superior com sinal algébrico e multiplica-ção em pacote inferior. As multiplicações superior/inferior indicam quais osbits originários do produto de multiplicação que devem ser incluídos no Re-sultado. Isto se faz necessário porque uma multiplicação de dois números deN bits resulta em um produto que apresenta 2N bits. Como cada elementode dados de resultado possui o mesmo tamanho que os elementos de dadosdo multiplicando e do multiplicador, apenas metade do produto pode ser re-presentada pelo resultado. A multiplicação superior faz com que bits de or-dem mais superior sejam emitidos como resultado. A multiplicação inferiorfaz com que bits de ordem inferior sejam emitidos como resultado. Porexemplo, a multiplicação superior em pacote sem sinal algébrico da Fon-te1[7:0] pela Fonte2[7:0] armazena os bits de ordem superior do produto noResultado[7:0].
Em uma concretização da invenção, o uso do modificador deoperação superior/inferior afasta a possibilidade de uma saturação de capa-cidade originária de um elemento de dados no próximo elemento de dadosmais alto. Isto é, este modificador permite que o programador selecionequais os bits do produto que devem estar no resultado sem a preocupaçãode saturações de capacidade. O programador pode gerar um produto com-pleto de 2N bits com o uso de uma combinação de operações de multiplica-ção em pacote. Por exemplo, o programador pode usar uma operação demultiplicação em pacote superior sem sinal algébrico e, em seguida, usandoa mesma Fontel e Fonte2, uma operação de multiplicação em pacote inferi-or para obter os produtos completos (2N). A operação superior de multiplica-ção é provida porque, geralmente, os bits de ordem superior do produto sãoa única parte do produto. O programador pode obter os bits de ordem supe-rior do produto sem primeiro ter que executar qualquer truncamento, confor-me é freqüentemente exigido por uma operação de dados não empacotados.
Em uma concretização da invenção, cada elemento de dados naFonte2 pode ter um valor diferente. Isto dá ao programador a flexibilidade deter um valor diferente como o multiplicador para cada multiplicando na Fonte 1.
A Figura 12 é um diagrama de fluxo que ilustra um processo deexecução das operações de multiplicação em pacote nos dados em pacote,de acordo com uma concretização da invenção.
Na etapa 1201, o decodificador 202 decodifica o sinal de con-trole 207 recebido pelo processador 109. Dessa maneira, o decodificador202 decodifica o código de operação para a operação de multiplicação ade-quada, os endereços SRC1 602, SRC2 603 e DEST 605 nos registros 209,as multiplicações com sinal algébrico/sem sinal algébrico, superior/inferior, eo comprimento dos elementos de dados nos dados em pacote.
Na etapa 1202, através da barra interna 170, o decodificador202 acessa os registros 209 no arquivo de registro geral 150, uma vez for-necidos os endereços SRC1 602 e SRC2 603. Os registros 209 apresentama unidade de execução 130 com os dados em pacote armazenados no re-gistro SRC1 602 (Fontel), e os dados em pacote armazenados no registroSRC2 603 (Fonte2). Isto é, os registros 209 comunicam os dados em pacoteà unidade de execução 130 através da barra interna 170.
Na etapa 1130, o decodificador 202 ativa a unidade de execução130 para executar a operação adequada de multiplicação em pacote. O de-codificador 202 adicionalmente comunica, através da barra interna 170, otamanho dos elementos de dados e a superioridade/inferioridade com rela-ção à operação de multiplicação.
Na etapa 1210, o tamanho do elemento de dados determina quala etapa que deve ser executada a seguir. Se o tamanho dos elementos dedados for de oito bits (dados de byte), então a unidade de execução 130executa a etapa 1212. Entretanto, se o tamanho dos elementos de dado nosdados em pacote for de dezesseis bits (dados de palavra), então a unidadede execução 130 executa a etapa 1214. Em uma concretização, apenas sãosuportadas as multiplicações em pacote com tamanho de elemento de da-dos de dezesseis bits. Em outra concretização, são suportadas as multipli-cações em pacote com tamanho de elemento de dados de oito bits e de de-zesseis bits. Entretanto, em outra concretização, é também suportada a mul-tiplicação em pacote com tamanho de elemento de dados de trinta e doisbits.
Assumindo-se que o tamanho dos elementos de dados é de oitobits, então é executada a etapa 1212. Na etapa 1212, é executado o se-guinte. Os bits de sete a zero da Fontel são multiplicados pelos bits de setea zero da Fonte2, gerando os bits de sete a zero do Resultado. Os bits dequinze a oito da Fontel são multiplicados pelos bits de quinze a oito daFonte 2, gerando os bits de quinze a oito do Resultado. Os bits de vinte etrês a dezesseis da Fonte 1 são multiplicados pelos bits de vinte e três a de-zesseis da Fonte 2, gerando os bits de vinte e três a dezesseis do Resulta-do. Os bits de trinta e um até vinte e quatro da Fonte 1 são multiplicadospelos bits de trinta e um até vinte e quatro da Fonte2, gerando os bits detrinta e um até vinte e quatro do Resultado. Os bits de trinta e nove até trintae dois da Fontel são multiplicados pelos bits de trinta e nove até trinta e doisda Fonte2, gerando os bits de trinta e nove até trinta e dois do Resultado. Osbits de quarenta e sete até quarenta da Fontel são multiplicados pelos bitsde quarenta e sete até quarenta da Fonte2, gerando os bits de quarenta esete até quarenta do Resultado. Os bits de cinqüenta e cinco até quarenta eoito da Fontel são multiplicados pelos bits de cinqüenta e cinco até quarentae oito da Fonte2, gerando os bits de cinqüenta e cinco até quarenta e oito doResultado. Os bits de sessenta e três até cinqüenta e seis da Fontel sãomultiplicados pelos bits de sessenta e três até cinqüenta e seis da Fonte 2.
Assumindo-se que o tamanho dos elementos de dados é de de-zesseis bits, então é executada a etapa 1214. Na etapa 1214, é executado oseguinte. Os bits de quinze a zero da Fonte 1 são multiplicados pelos bits dequinze até zero da Fonte2, gerando os bits de quinze a zero do Resultado.Os bits de trinta e um até dezesseis da Fontel são multiplicados pelos bitsde trinta e um até dezesseis da Fonte2, gerando os bits de trinta e um atédezesseis do Resultado. Os bits de quarenta e sete até trinta e dois da Fon-te1 são multiplicados pelos bits de quarenta e sete até trinta e dois da Fon-te2, gerando os bits de quarenta e sete até trinta e dois do Resultado. Osbits de sessenta e três até quarenta e oito da Fontel são multiplicados pelosbits de sessenta e três até quarenta e oito da Fonte 2, gerando os bits desessenta e três até quarenta e oito do Resultado.
Em uma concretização, as multiplicações da etapa 1212 sãoexecutadas simultaneamente. Entretanto, em outra concretização, estasmultiplicações são executadas em série. Em outra concretização, algumasdestas multiplicações são executadas simultaneamente e algumas são exe-cutadas em série. Esta discussão também se aplica igualmente à multiplica-ções da etapa 1214.
Na etapa 1220, o Resultado é armazenado no registro DEST.A Tabela 14 ilustra a representação em registro da operação demultiplicação superior em pacote sem sinal algébrico nos dados de palavraem pacote. A primeira fileira de bits é a representação de dados em pacoteda Fontel. A segunda fileira de bits é a representação de dados da Fonte2.
A terceira fileira de bits é a representação de dados em pacote do Resulta-do. O número abaixo de cada elemento de dados é o número do elementode dados. Por exemplo, o elemento de dados dois da Fontel é 11111111000000002.
<table>table see original document page 40</column></row><table>
Tabela 14
A Tabela 15 ilustra a representação em registro da operação demultiplicação superior em pacote com sinal algébrico nos dados de palavraem pacote.
<table>table see original document page 40</column></row><table>
Tabela 15
A Tabela 16 ilustra a representação em registro da operação demultiplicação inferior em pacote nos dados de palavra em pacote.<table>table see original document page 41</column></row><table>
Tabela 16
Circuitos de Multiplicação de Dados em pacote
Em uma concretização, a operação de multiplicação pode ocor-rer nos múltiplos elementos de dados no mesmo número de ciclos de reló-gio, como uma única operação de multiplicação nos dados desempacotados.Para se alcançar a execução do mesmo número de ciclos de relógio, é usa-do o paralelismo. Isto é, os registros são simultaneamente instruídos paraexecutar a operação de multiplicação nos elementos de dados. Isto é discu-tido em maiores detalhes abaixo.
A Figura 13 ilustra um circuito para executar uma multiplicaçãoem pacote, de acordo com uma concretização da invenção. O controle deoperação 1300 controla os circuitos que executam a multiplicação. O con-trole de operação 1300 processa o sinal de controle para o operação demultiplicação, apresentando as seguintes saídas: ativação superior/inferior1380; ativação de byte/palavra 1381 e ativação de sinal 1382. A ativaçãosuperior/inferior 1380 identifica se os bits de ordem superior ou inferior doproduto devem ser incluídos no resultado. A ativação de byte/palavra 1381identifica se uma operação de multiplicação de dados em pacote de byte ede dados em pacote de palavra deve ser executada. A ativação de sinal1382 indica se a multiplicação com sinal algébrico deve ser usada.
O multiplicador de palavra em pacote 1301 multiplica quatroelementos de dados de palavra simultaneamente. O multiplicador de byteem pacote 1302 multiplica oito elementos de dados de byte. O multiplicadorde palavra em pacote 1301 e o multiplicador de byte em pacote1302 possuem ambos as seguintes entradas: Fontel [63:0]1331, Fon-te2[63:0]1333, ativação de sinal 1382, e ativação superior/inferior 1380.
O multiplicador de palavra em pacote 1301 inclui quatro circuitosmultiplicadores de 16x16: multiplicador A 1310 de 16x16, multiplicador B1311 de 16x16, multiplicador C 1312 de 16x16 e multiplicador D 1313 de16x16. O multiplicador A 1310 de 16x16 possui como entradas a Fon-te1[15:0] e a Fonte2[15:0]. O multiplicador A 1311 de 16x16 possui comoentradas a Fontel [31:16] e a Fonte2[31:16], O multiplicador C 1312 de16x16 possui como entradas a Fontel [47:32] e a Fonte2[47:32]. O multipli-cador D 1313 de 16x16 possui como entradas a Fontel [63:48] e a Fon-te2[63:48]. Cada multiplicador de 16x16 é acoplado à ativação de sinal 1382.Cada multiplicador de 16x16 produz um produto de trinta e dois bits. Paracada multiplicador, um multiplexor (MxO 1350, Mx1 1251, Mx2 1352 e Mx31353, respectivamente) recebe o resultado de trinta e dois bits. Dependendodo valor da ativação superior/inferior 1380, cada multiplexor emite dezesseisbits de ordem superior ou dezesseis bits de ordem inferior do produto. Assaídas dos quatro multiplexores são combinadas em um resultado de ses-senta e quatro bits. Este resultado é opcionalmente armazenado em um re-gistro de resultado 1 1371.
O multiplicador de byte em pacote 1302 inclui oito circuitos mul-tiplicadores de 8x8: multiplicador A 1320 de 8x8 até multiplicador H 1327 de8x8. Cada multiplicador de 8x8 possui uma entrada de oito bits a partir decada uma da Fontel [63:0]1331 e da Fonte2[63:0]1333. Por exemplo, o mul-tiplicador A 1320 de 8x8 possui como entradas a Fontel[7:0] e a Fonte2[7:0],enquanto o multiplicador H 1327 de 8x8 possui como entradas a Fon-te1 [63:56] e a Fonte2[63:56]. Cada multiplicador de 8x8 é acoplado à ativa-ção de sinal 1382. Cada multiplicador de 8x8 produz um produto de dezes-seis bits. Para cada multiplicador, um multiplexor (por exemplo, Mx4 1360 eMx11 1367) recebe o resultado de dezesseis bits. Dependendo do valor daativação superior/inferior 1380, cada multiplexor emite oito bits de ordemsuperior ou oito bits de ordem inferior do produto. As saídas dos oito multi-plexores são combinadas em um resultado de sessenta e quatro bits. Esteresultado é opcionalmente armazenado em um registro de resultado 2 1372.A ativação de byte/palavras 1381 ativa o registro de resultado específico,dependendo do tamanho do elemento de dados que exige a operação.
Em uma concretização, a área usada para realizar as multiplica-ções é reduzida criando circuitos que possam multiplicar tanto dois númerosde 8x8 como um número de 16x16. Isto é, dois multiplicadores de 8x8 e ummultiplicador de 16x16 são combinados em um multiplicador de 8x8 e 16x16.O controle de operação 1300 ativaria o tamanho adequado para a multiplica-ção. Em tal concretização, a área física usada pelos multiplicadores seriareduzida; contudo, seria difícil executar uma multiplicação de byte em pacotee uma multiplicação de palavra em pacote. Em outra concretização que su-porta as multiplicações de palavra dupla em pacote, um multiplicador podeexecutar quatro multiplicações de 8x8, dois multiplicações de 16x16 ou umade 32x32.
Em uma concretização, é apenas provida uma operação de mul-tiplicação de palavra em pacote. Nesta concretização, o multiplicador de byteem pacote 1302 e o registro de resultado 1 1372 não seriam incluídos.
Vantagens de Incluir a Operação de Multiplicação em pacote Descrita noConjunto de Instruções
Dessa maneira, a instrução de multiplicação em pacote descritaapresenta a multiplicação independente de cada elemento de dados naFontel através de seu respectivo elemento de dados na Fonte2. Natural-mente, algoritmos que exijam que cada elemento na Fontel seja multiplica-do pelo mesmo número podem ser executados através do armazenamentodo mesmo número em cada elemento da Fonte2. Em adição, esta instruçãode multiplicação assegura-se contra as saturações de capacidade através dainterrupção das cadeias de transporte, isentando assim o programador destaresponsabilidade, afastando a necessidade de instruções para preparar osdados com a finalidade de impedir as saturações de capacidade, e resultan-do em um código mais robusto.
Em contraste, os processadores com finalidades gerais da técni-ca anterior que não suportam tal instrução são exigidos para executaremesta operação através do desempacotamento dos elementos de dados,através da execução das multiplicações, e, em seguida, através do empa-cotamento dos resultados para o processamento em pacote adicional. Dessamaneira, o processador 109 pode multiplicar diferentes elementos de dadosdos dados em pacote através de diferentes multiplicadores em paralelo como uso de uma instrução.
Os algoritmos típicos de múltiplos meios executam um grandenúmero de operações de multiplicação. Dessa maneira, com a redução donúmero de instruções exigido para a execução destas operações de multipli-cação, o desempenho destes algoritmos de múltiplos meios é aumentado.
Assim, com a provisão desta instrução de multiplicação no conjunto de ins-truções suportado pelo processador 109, o processador 109 pode executaros algoritmos exigindo esta funcionabilidade em um nível de desempenhomais alto.
MULTIPLICAÇÃO-SOMA/SUBTRAÇÃO
Operações de Multiplicacão-Soma/Subtracão
Em uma concretização, são executadas duas operações de mul-tiplicação-soma com o uso de uma única instrução de multiplicação-soma,conforme mostrado abaixo na Tabela 17a e Tabela 17b. A Tabela 17a mos-tra uma representação simplificada da instrução descrita de multiplicação-soma, enquanto a Tabela 17b mostra um exemplo de nível de bit da instru-ção descrita de multiplicação-soma.
Multiplicação-soma da Fontel, Fonte2
<table>table see original document page 44</column></row><table>
TABELA 17A<table>table see original document page 45</column></row><table>
Tabela 17b
A operação de multiplicação-subtração é a mesma que a opera-ção de multiplicação-soma, exceto pelo fato de que a soma é substituída poruma subtração. A operação de uma instrução de multiplicação-subtraçãoexemplificativa que executa duas operações de multiplicação-subtração émostrada abaixo na Tabela 12.
Multiplicação-subtração da Fontel, Fonte2
Fonte 1
Fonte 2
<figure>figure see original document page 45</figure>
Resultado 1
Tabela 12
Em uma concretização da invenção, o registro SRC1 contémdados em pacote (Fontel), o registro SRC2 contém dados em pacote (Fon-te2), e o registro DEST irá conter o resultado (Resultado) da execução dainstrução de multiplicação-soma ou de multiplicação-subtração na Fontel ouFonte2. Na primeira etapa da instrução de multiplicação-soma ou multiplica-ção-subtração, a Fonte2 irá apresentar cada elemento de dados indepen-cientemente multiplicado pelo respectivo elemento de dados da Fonte2, demodo a gerar um conjunto de respectivos resultados intermediários. Quandoda execução da instrução de multiplicação-soma, estes resultados interme-diários são somados por pares, produzindo dois elementos de dados resul-tantes que são armazenados como elementos de dados do Resultado. Emcontraste, quando da execução da instrução de multiplicação-subtração,estes resultados intermediários são subtraídos por pares, produzindo doiselementos de dados resultantes que são armazenados como elementos dedados do Resultado.
Concretizações alternativas podem variar o número de bits noselementos de dados, nos resultados intermediários, e/ou nos elementos dedados no Resultado. Em adição, a concretização alternativa pode variar onúmero de elementos de dados na Fontel, na Fonte2, e no Resultado. Porexemplo, se a Fontel e a Fonte2 possuírem, cada qual, 8 elementos de da-dos, as instruções de multiplicação-soma/subtração podem ser implementa-das para produzirem um Resultado com 4 elementos de dados (cada ele-mento de dados no Resultado representando a adição de dois resultadosintermediários), 2 elementos de dados (cada elemento de dados no resulta-do representando a adição dos quatro resultados intermediários), etc.
A Figura 14 é um diagrama de fluxo que ilustra um processopara executar as operações de multiplicação-soma e multiplicação-subtraçãonos dados em pacote, de acordo com uma concretização da invenção.
Na etapa 1401, o decodificador 202 decodifica o sinal de con-trole 207 recebido pelo processador 109. Dessa maneira, o decodificador202 decodifica o código de operação para uma instrução de multiplicação-soma ou multiplicação-subtração.
Na etapa 1402, através da barra interna 170, o decodificador202 acessa os registros 209 no arquivo de registro geral 150, uma vez for-necidos os endereços SRC1 602 e SRC2 603. Os registros 209 apresentama unidade de execução 130 com os dados em pacote armazenados no re-gistro SRC1 602 (FonteI)1 e os dados em pacote armazenados no registroSRC2 603 (Fonte2). Isto é, os registros 209 comunicam os dados em pacoteà unidade de execução 130 através da t
Na etapa 1403, o decodifica130 para executar a instrução. Se a inscação-soma, o fluxo passa para a etapauma instrução de multiplicação-subtraçãNa etapa 1414, é executadzero da Fontel são multiplicados pelosgerando um primeiro resultado interme<diário 1). Os bits de trinta e um até depelos bits de trinta e um até dezesseissultado intermediário de 32 bits (Resultirenta e sete até trinta e dois da Fontelrenta e sete até trinta e dois da Fonte2de 32 bits (Resultado Intermediário 3).renta e oito da Fontel são multiplicad<quarenta e oito da Fonte2, gerando umbits (Resultado Intermediário 4). O ResResultado Intermediário 2, gerando os be o Resultado Intermediário 3 é somacrando os bits de sessenta e três até trinl
A etapa 1415 é a mesma qque o Resultado Intermediário 1 e o Ridos para gerarem os bits de trinta e urtermediário 3 e o Resultado Intermediáos bits de sessenta e três até trinta e do
Circuitos de Multiplicação-Soma/Subtração de Dados em Pacote
Em uma concretização, cada uma das instruções de multiplica-ção-soma e multiplicação-subtração pode ocorrer nos múltiplos elementosde dados no mesmo número de ciclos de relógio como uma única multiplica-ção nos dados desempacotados. Para se alcançar a execução no mesmonúmero de ciclos de relógio, é usado o paralelismo. Isto é, os registros sãosimultaneamente instruídos para executarem as operações de multiplicação-soma ou multiplicação-subtração nos elementos de dados. Isto é discutidoem maiores detalhes abaixo.
A Figura 15 ilustra um circuito para executar as operações demultiplicação-soma e/ou multiplicação-subtração nos dados em pacote, deacordo com uma concretização da invenção. O controle de operação 1500processa o sinal de controle para as instruções de multiplicação-soma emultiplicação-subtração. O controle de operação 1500 emite sinais sobre aAtivação 1580 para controlar a Multiplicação em pacote dos Soma-dor/Subtrator 1501.
A Multiplicação em pacote dos Somador/Subtrator 1501 possuias seguintes entradas: Fontel [63:0]1531, Fonte2[63:0]1533, e Ativação1580. A Multiplicação em pacote dos Somador/Subtrator 1501 inclui quatrocircuitos multiplicadores de 16x16: multiplicador A 1510 de 16x16, o multipli-cador B 1511 de 16x16, o multiplicador C 1512 de 16x16, e o multiplicador D1513 de 16x16. O multiplicado A 1510 de 16x16 possui como entradas aFontel [15:0] e a Fonte2[15:0}. O multiplicador B 1511 de 16x16 possui comoentradas a Fontel [31:16] e a Fonte2[31:16]. O multiplicador C 1512 de16x16 possui como entradas a Fontel [47:32] e a Fonte2[47:32]. O multipli-cador D 1513 de 16x16 possui como entradas a Fontel [63:48] e a Fon-te2[63:48]. Os resultados intermediários de 32 bits gerados pelo multiplica-dor A 1510 de 16x16 e pelo multiplicador B 1511 de 16x16 são recebidospelos Somador/Subtrator Virtuais 1550, enquanto os resultados intermediári-os de 32 bits gerados pelo multiplicador C 1512 de 16x16 e pelo multiplica-dor D 1513 de 16x16 são recebidos pelos Somador/Subtrator Virtuais 1551.
Com base na eventualidade da instrução comum ser uma instru-ção de multiplicação-soma ou multiplicação-subtração, os Somador/ Sub-trator Virtuais 1550 e os Somador/Subtrator Virtuais 1551 somam ou subtra-em suas respectivas entradas de 32 bits. A saída dos Somador/SubtratorVirtuais 1550 (isto é, os bits de trinta e um até zero do Resultado) e a saídados Somador/Subtrator Virtuais 1551 (isto é, os bits de 63 a trinta e dois doResultado) são combinadas no Resultado de 64 bits e comunicadas ao Re-gistro de Resultado 1571.
Em uma concretização, os Somador/Subtrator Virtuais 1551 e osSomador/Subtrator Virtuais 1550 são implementados de forma similar comoos Somador/Subtrator Virtuais 1108b e os Somador/Subtrator Virtuais 1108a(isto é, cada um dos Somador/Subtrator Virtuais 1551 e Somador/SubtratorVirtuais 1550 sendo composto de quatro somadores de 8 bits com retardosde propagação apropriados). Entretanto, concretizações alternativas poderi-am implementar os Somador/Subtrator Virtuais 1551 e os Somador/SubtratorVirtuais 1550 em diversas maneiras.
Para executar o equivalente destas instruções de multiplicação-soma ou multiplicação-subtração nos processadores da técnica anterior queoperam nos dados desempacotados, seriam necessárias quatro operaçõesde multiplicação separadas de 64 bits e duas operação de soma ou subtra-ção de 64 bits, bem como as operações necessárias de carregamento e ar-mazenamento. Isto faz perder circuitos e linhas de dados que são usadospara os bits que são maiores do que o bit dezesseis para a Fontel e Fonte2,e maiores do que o bit trinta e dois para o Resultado. Igualmente, o resultadocompleto de 64 bits gerado por tais processadores da técnica anterior podenão ter uso para o programador. Por isso, o programador teria que truncarcada resultado.
Vantagens de Incluir a Operação Descrita de Multiplicação-Soma no Con-junto de Instruções
As instruções descritas de multiplicação-soma/subtração podemser usadas para diversas finalidades. Por exemplo, a instrução de multiplica-ção-soma pode ser usada para a multiplicação de números complexos epara a multiplicação e acúmulo de valores. Diversos algoritmos que utilizama instrução de multiplicação-soma serão posteriormente descritos aqui.
Dessa maneira, com a inclusão das instruções de multiplicação-soma e/ou de multiplicação-subtração descritas no conjunto de instruçõessuportado pelo processador 109, podem ser executadas muitas funções emum menor número de instruções do que os processadores de finalidadesgerais da técnica anterior, que carecem destas instruções.
DESLOCAMENTO EM PACOTE
Operação de Deslocamento Em pacote
Em uma concretização da invenção, o registro SRC1 contém osdados (FonteI) a serem deslocados, o registro SRC2 contém os dados(Fonte2) que representam a contagem de deslocamento, e o registro DESTirá conter o resultado do deslocamento (Resultado). Isto é, a Fontel iráapresentar cada elemento de dados independentemente deslocado pelacontagem de deslocamento. Em uma concretização, a Fonte2 é interpretadacomo um escalar de 64 bits sem sinal algébrico. Em outra concretização, aFonte2 são os dados em pacote e ela contém as contagens de desloca-mento para cada elemento de dados correspondente na Fontel.
Em uma concretização da invenção, são suportados tanto osdeslocamentos aritméticos como os deslocamentos lógicos. Um desloca-mento aritmético desloca descendentemente os bits de cada elemento dedados através de um número específico, e preenche o bit de ordem superiorde cada elemento de dados com o valor inicial do bit de sinal. Uma conta-gem de deslocamento maior do que sete para os dados de byte em pacote,maior do que quinze para os dados de palavra em pacote, ou maior do quetrinta e um para os dados de palavra dupla em pacote, faz com que cadaelemento de dados do Resultado seja preenchido com o valor inicial do bitde sinal. Um deslocamento lógico pode operar através do deslocamento debits para cima e para baixo. Em um deslocamento lógico para a direita, osbits de ordem superior de cada elemento de dados são preenchidos comzeros. Um deslocamento lógico para a esquerda faz com que os bits menossignificativos de cada elemento de dados sejam preenchidos com zeros.
Em uma concretização da invenção, as operações de desloca-mento aritmético para a direita, de deslocamento lógico para a direita e dedeslocamento lógico para a esquerda são suportadas para os bytes em pa-cotes e para as palavras em pacote. Em outra concretização da invenção,estas operações são sustentadas para as palavras duplas em pacote também.
A Figura 16 é um diagrama de fluxo que ilustra um processopara executar uma operação de deslocamento em pacote nos dados em pa-cote, de acordo com uma concretização da invenção.
Na etapa 1601, o decodificador 202 decodifica o sinal de con-trole 207 recebido pelo processador 109. Dessa forma, o decodificador 202decodifica o código de operação para a operação de deslocamento adequa-da, os endereços SRC1 602, SRC2 603 e DEST 605 nos registros 209, asaturação/insaturação (não necessariamente obrigatórias para as operaçõesde deslocamento), a aritmética com sinal algébrico/sem sinal algébrico (no-vamente não necessariamente obrigatórias), e o comprimento dos elemen-tos de dados nos dados em pacote.
Na etapa 1602, através da barra interna 170, o decodificador202 acessa os registros 209 no arquivo de registro geral 150, uma vez for-necidos os endereços SRC1 602 e SRC2 603. Os registros 209 apresentama unidade de execução 130 com os dados em pacote armazenados no re-gistro SRC1 602 (Fontel), e a contagem de deslocamento escalar no regis-tro SRC2 603 (Fonte2). Isto é, os registros 209 comunicam os dados em pa-cote à unidade de execução 130 através da barra interna 170.
Na etapa 1603, o decodificador 202 ativa a unidade de execução130 para executar a operação apropriada de deslocamento em pacote. Odecodificador 202 adicionalmente comunica, através da barra interna 170, otamanho dos elementos de dados, o tipo de operação de deslocamento, e adireção do deslocamento (para deslocamentos lógicos).
Na etapa 1610, o tamanho do elemento de dados determina quala etapa que deve ser executada a seguir. Se o tamanho dos elementos dedados for de oito bits (dados de byte), então a unidade de execução 130executa a etapa 1612. Entretanto, se o tamanho dos elementos de dadosnos dados em pacote for de dezesseis bits (dados de palavras), então a uni-dade de execução 130 executa a etapa 1614. Em uma concretização, ape-nas são suportados deslocamentos em pacote com tamanho de elemento dedados de oito bits e de dezesseis bits. Entretanto, em outra concretização, étambém suportado um deslocamento em pacote com tamanho de elementode dados de trinta e dois bits.
Assumindo-se que o tamanho dos elementos de dados é de oitobits, então é executada a etapa 1612. Na etapa 1612, é executado o se-guinte. Os bits de sete até zero da Fontel são deslocados pela contagem dedeslocamento (Bits de sessenta e três até zero da Fonte2), gerando os bitsde sete até zero do Resultado. Os bits de quinze até oito da Fontel sãodeslocados pela contagem de deslocamento, gerando os bits de quinze atéoito do Resultado. Os bits de vinte e três até dezesseis da Fonte 1 são des-locados pela contagem de deslocamento, gerando os bits de vinte e três atédezesseis do Resultado. Os bits de trinta e um até vinte e quatro da Fontelsão deslocados pela contagem de deslocamento, gerando os bits de trinta eum até vinte e quatro do Resultado. Os bits de trinta e nove até trinta e umda Fontel são deslocados pela contagem de deslocamento, gerando os bitsde trinta e nove até trinta e dois do Resultado. Os bits de quarenta e sete atéquarenta da Fontel são deslocados pela contagem de deslocamento, ge-rando os bits de quarenta e sete até quarenta do Resultado. Os bits de cin-qüenta e cinco até quarenta e oito da Fonte 1 são deslocados pela contagemde deslocamento, gerando os bits de cinqüenta e cinco até quarenta e oitodo Resultado. Os bits de sessenta e três até cinqüenta e seis da Fontel sãodeslocados pela contagem de deslocamento, gerando os bits de sessenta etrês até cinqüenta e seis do Resultado.
Assumindo-se que o tamanho dos elementos de dados é de de-zesseis bits, então é executada a etapa 1614. Na etapa 1614, é executado oseguinte. Os bits de quinze até zero da Fontel são deslocados pela conta-gem de deslocamento, gerando os bits de quinze até zero do Resultado. Osbits de trinta e um até dezesseis da Fontel são deslocados pela contagemde deslocamento, gerando os bits de trinta e um até dezesseis do Resultado.
Os bits de quarenta e sete até trinta e dois da Fontel são deslocados pelacontagem de deslocamento, gerando os bits de quarenta e sete até trinta edois do Resultado. Os bits de sessenta e três até quarenta e oito da Fontelsão deslocados pela contagem de deslocamento, gerando os bits de ses-senta e três até quarenta e oito do Resultado.
Em uma concretização, os deslocamentos da etapa 1612 sãoexecutados simultaneamente. Entretanto, em outra concretização, estesdeslocamentos são executados em série. Em outra concretização, algunsdestes deslocamentos são executados simultaneamente e alguns são exe-cutados em série. Esta discussão aplica-se igualmente aos deslocamentosda etapa 1614.
Na etapa 1620, o Resultado é armazenado no registro DEST.
A Tabela 19 ilustra a representação em registro da operação empacote de byte de deslocamento aritmético para a direita. A primeira fileirade bits é a representação de dados em pacote da Fontel. A segunda fileirade bits é a representação de dados da Fonte2. A terceira fileira de bits é arepresentação de dados em pacote do Resultado. O número abaixo de cadabit de elemento de dados é o número do elemento de dados. Por exemplo, oelemento três dos dados da Fontel é 100000002.
<table>table see original document page 53</column></row><table>
onde Shift = Deslocamento
Tabela 19
A Tabela 20 ilustra a representação em registro da operação empacote de deslocamento lógico para a direita nos dados de byte em pacote.<table>table see original document page 54</column></row><table>
onde Shift = Deslocamento
Tabela 20
A Tabela 21 ilustra a representação em registro da operação empacote de deslocamento lógico para a esquerda nos dados de byte em pa-cote.
<table>table see original document page 54</column></row><table> I
onde Shift = Deslocamento
Tabela 21
Circuitos de Deslocamento de Dados em pacote
Em uma concretização, a operação de deslocamento pode ocor-rer nos múltiplos elementos de dados no mesmo número de ciclos de relógiocomo uma única operação de deslocamento nos dados desempacotados.Para se alcançar a execução no mesmo número de ciclos de relógio, é usa-do o paralelismo. Isto é, os registros são simultaneamente instruídos paraexecutarem a operação de deslocamento nos elementos de dados. Isto édiscutido em maiores detalhes abaixo.
A Figura 17 ilustra um circuito para a execução de um desloca-mento em pacote nos bytes individuais dos dados em pacote, de acordo comuma concretização da invenção. A Figura 17 ilustra o uso de um circuito mo-dificado de deslocamento de fração de byte, o estágio, de fração de byte1799. Cada fração de byte, exceto para a fração de byte do elemento de da-dos mais significativo, inclui um controle de bit e unidade de deslocamento.A fração de byte de elemento de dados mais significativo precisa apenas deuma unidade de deslocamento.
A unidade, de deslocamento 1711 e a unidadei+1 de desloca-mento 1771 permitem, cada qual, que oito bits da Fontel sejam deslocadospela contagem de deslocamento. Em uma concretização, cada unidade dedeslocamento opera como um circuito de deslocamento de oito bits conheci-do. Cada unidade de deslocamento possui uma entrada de Fontel, uma en-trada de Fonte2, uma entrada de controle, um próximo estágio de sinal, umúltimo estágio de sinal, e uma saída de resultado. Por isso, a Unidadei dedeslocamento 1711 possui a entrada da Fontel, 1731, a entrada da Fon-te2[63:0]1733, a entrada de controle, 1701, o próximo estágio de sinal, 1713,a última entrada de estágiOi 1712, e um resultado armazenado no registro deresultado, 1751. Por isso, a unidade,+i de deslocamento 1771 possui a en-trada de Fontel,+ι 1732, a entrada de Fonte2[63:0] 1733, a entrada de con-trole i+i 1702, o próximo estágio de sinali+i 1773, a última entrada de estági-Oi+i 1772, e um resultado armazenado no registro,+i 1752 de resultado.
A entrada de Fontel é tipicamente uma porção de oito bits daFontel. Os oito bits representam o menor tipo de elemento de dados, umelemento de dados de byte em pacote. A entrada de Fonte2 representa acontagem de deslocamento. Em uma concretização, cada unidade de deslo-camento recebe a mesma contagem de deslocamento da Fonte2[63:0] 1733.
O controle de operação 1700 transmite sinais de controle para ativar cadaunidade de deslocamento para a execução do deslocamento exigido. Ossinais de controle são determinados a partir do tipo de deslocamento (arit-mético/lógico) e a direção do deslocamento. O próximo estágio de sinal érecebido a partir do controle de bit para essa unidade de deslocamento. Aunidade de deslocamento irá deslocar a saída/entrada do bit mais significati-vo no próximo estágio de sinal, dependendo da direção do deslocamento(esquerda/direita). Similarmente, cada unidade de deslocamento irá deslocara saída/entrada do bit menos significativo no último estágio de sinal, depen-dendo da direção do deslocamento (direita/esquerda). O último estágio desinal é recebido a partir da unidade de controle de bit do estágio anterior. Asaída do resultado representa o resultado da operação de deslocamento naporção da Fontel que a unidade de deslocamento está operando.
O controle, de bit 1720 é ativado a partir do controle de operação1700 através da ativaçãO|1706 dos dados em pacote. O controle, de bit 1720controla o próximo estágiOj1713 e o último estágioi+i 1772. Assume-se, porexemplo, que a unidade, de deslocamento 1711 seja responsável pelos oitobits menos significativos da Fontel1 e a unidadei+i de deslocamento 1771seja responsável pelos próximos oito bits da Fontel. Se um deslocamentofor executado nos bytes em pacote , o Controlei de bit 1720 não irá permitirque o bit menos significativo originário da unidadei+i de deslocamento 1771tenha comunicação com o bit mais significativo da unidade, de deslocamento1711. Entretanto, é executado um deslocamento nas palavras em pacote;então o controle, de bit 1720 irá permitir que o bit menos significativo originá-rio da unidade,+1 de deslocamento 1771 tenha comunicação com o bit maissignificativo da unidade, de deslocamento 1711.
Por exemplo, na Tabela 22, é executado um deslocamento arit-mético direito de byte em pacote. Assume-se que a unidadei+i de desloca-mento 1771 opere no elemento um de dados, e a unidade, de deslocamento1711 opere no elemento zero de dados. A unidade^ de deslocamento 1771desloca seu bit menos significativo par fora. Entretanto, o controle de opera-ção 1700 irá fazer com que o controle, de bit 1720 detenha a propagaçãodesse bit, recebido a partir do último estágioi+i 1721, para o último estágio,1713. Ao invés disso, a unidade, de deslocamento 1711 irá encher os bits deordem superior com o bit de sinal, Fontel [7].<table>table see original document page 57</column></row><table>
onde Shift = Deslocamento
Tabela 22
Entretanto, se for executado um deslocamento aritmético de pa-lavra em pacote, então o bit menos significativo da unidadei+i de desloca-mento 1771 será comunicado ao bit mais significativo da unidade, de deslo-camento 1711. A Tabela 23 ilustra este resultado. Esta comunicação seriaigualmente permitida para os deslocamentos de palavra dupla em pacote.
<table>table see original document page 57</column></row><table>
onde Shift = Deslocamento
Tabela 23
Cada unidade de deslocamento é opcionalmente acoplada a umregistro de resultado. O registro de resultado temporariamente armazena oresultado da operação de deslocamento até que o resultado completo, Re-sultado[63:0] 1760 possa ser transmitido ao registro DEST.
Para um circuito completo de deslocamento em pacote de ses-senta e quatro bits, são usadas oito unidades de deslocamento e sete uni-dades de controle de bit. Tal circuito pode também ser usado para executarum deslocamento em dados desempacotados de sessenta e quatro bits,usando assim o mesmo circuito para executar a operação de deslocamentodesempacotado e a operação de deslocamento em pacote.
Vantagens de Incluir a Operação de Descolamento Descrita no Conjunto deInstruções
A instrução descrita de deslocamento em pacote faz com quecada elemento da Fontel seja deslocado pela contagem de deslocamentoindicada. Com a inclusão desta instrução no conjunto de instruções, cadaelemento de dados em pacote pode ser deslocado com o uso de uma únicainstrução. Em contraste, os processadores de finalidades gerais da técnicaanterior, que não suportam tal operação, têm que executar numerosas ins-truções para a Fontel desempacotada, individualmente deslocar cada ele-mento de dados desempacotados, e depois empacotar os resultados em umformato de dados em pacote para o processamento adicional em pacote.
OPERAÇÃO DE MOVIMENTO
A operação de movimento transfere os dados para e a partir dosregistros 209. Em uma concretização, SRC2 603 é o endereço que contémos dados de fonte e DEST 605 é o endereço para onde devem ser transferi-dos os dados. Nesta concretização SRC1 602 não seria usado. Em outraconcretização, SRC1 602 é igual a DEST 605.
Para fins de explicação da operação de movimento, é feita umadistinção entre um registro e uma localização de memória. Registros sãoencontrados no arquivo de registro geral 150, enquanto a memória podeestar, por exemplo, no cache 160, na memória principal 104, na ROM (Me-mória de Leitura Apenas) 106, no dispositivo de armazenamento de dados 107.
A operação de movimento pode mover os dados da memóriapara os registros 209, dos registros 209 para a memória, e de um registronos registros 209 para um segundo registro nos registros 209. Em uma con-cretização, os dados em pacote são armazenados em diferentes registros doque aqueles usados para armazenar dados inteiros. Nesta concretização, aoperação de movimento pode mover os dados dos registros inteiros 201para os registros 209. Por exemplo, no processador 109, se os dados empacote estiverem armazenados nos registros 209 e os dados inteiros estive-rem armazenados nos registros interiores 201, então uma instrução de mo-vimento pode ser usada para mover os dados dos registros inteiros 201 paraos registros 209, e vice-versa.
Em uma concretização, quando um endereço de memória forindicado para o movimento, os oito bytes de dados na localização da memó-ria (a localização da memória contendo o byte menos significativo) são car-regados para um registro nos registros 209 ou armazenados a partir desseregistro. Quando um registro nos registros 209 for indicado, os conteúdosdesse registro são movidos ou carregados a partir de um segundo registronos registros 209. Se os registros inteiros 201 tiverem sessenta e quatro bitsde comprimento, e um registro inteiro for especificado, então os oito bytes dedados no registro inteiro são carregados para um registro nos registros 209ou armazenados a partir desse registro.
Em uma concretização, os inteiros são representados comotrinta e dois bits. Quando uma operação de movimento é executada a partirdos registros 209 para os registros inteiros 201, então apenas os trinta e doisbits baixos dos dados em pacote são movidos para o registro inteiro especí-fico. Em uma concretização, os trinta e dois bits de ordem superior são zera-dos. Similarmente, apenas os trinta e dois bits baixos de um registro nos re-gistros 209 são carregados, quando um movimento é executado a partir dosregistros inteiros 201 para os registros 209. Em uma concretização, o pro-cessador 109 suporta uma operação de movimento de trinta e dois bits entreum registro nos registros 209 e na memória. Em outra concretização, ummovimento de apenas trinta e dois bits é executado em trinta e dois bits deordem superior dos dados em pacote.
OPERAÇÃO DE EMPACOTAMENTO
Em uma concretização da invenção, o registro SRC1 602 con-tém os dados (Fontel), o registro SRC2 603 contém os dados (Fonte2), e oregistro DEST 605 irá conter os dados do resultado (Resultado) da opera-ção. Isto é, as partes da Fontel e as partes da Fonte2 serão empacotadasjuntas para gerarem o Resultado.
Em uma concretização, uma operação de empacotamento con-verte as palavras (ou palavras duplas) em pacote em bytes (ou palavras) empacote através do empacotamento dos bytes (ou palavras) de ordem inferiordas palavras (ou palavras duplas) em pacote da fonte nos bytes (ou pala-vras) do Resultado. Em uma concretização, a operação de empacotamentoconverte as palavras em pacote quádruplas em palavras duplas em pacote.
Esta operação pode ser opcionalmente executada com os dados contendosinal algébrico. Adicionalmente, esta operação pode ser opcionalmente exe-cutada com a saturação. Em uma concretização alternativa são incluídas asoperações de empacotamento adicionais, as quais operam nas porções deordem superior de cada elemento de dado.
A Figura 18 é um diagrama de fluxo que ilustra um processopara a execução de operações em pacote nos dados em pacote, de acordocom uma concretização da invenção.
Na etapa 1801, o decodificador 202 decodifica o sinal de con-trole 207 recebido pelo processador 109. Dessa forma, o decodificador 202decodifica o código de operação para a operação de empacotamento apro-priada, os endereços SRC1 602, SRC2 603 e DEST 605 nos registros 209, asaturação/ insaturação, a operação com sinal algébrico/sem sinal algébrico,e o comprimento dos elementos de dados nos dados em pacote. Conformeanteriormente mencionado. SRC1 602 (ou SRC2 603) pode ser usado comDEST 605.
Na etapa 1802, através da barra interna 170, o decodificador202 acessa os registros 209 no arquivo de registro geral 150, uma vez for-necidos os endereços SRC1 602 SRC2 603. Os registros 209 apresentam aunidade de execução 130 com os dados em pacote armazenados no registroSRC1 602 (Fontel), e os dados em pacote armazenados no registro SRC2603 (Fonte2). Isto é, os registros 209 comunicam os dados em pacote à uni-dade de execução 130 através da barra interna 170.
Na etapa 1803, o decodificador 202 ativa a unidade de execução130 para executar a operação de empacotamento apropriada. O decodifica-dor 202 adicionalmente comunica, através da barra interna 170, a saturaçãoe o tamanho dos elementos de dados na Fontel e na Fonte2. A saturação éopcionalmente usada para maximizar o valor dos dados no elemento de da-dos do resultado. Se o valor dos elementos de dados na Fontel ou Fonte2for maior ou menor do que a faixa de valores que os elementos de dados doResultado podem representar, então o elemento de dados do resultado cor-respondente é ajustado no valor mais alto ou mais baixo. Por exemplo, se osvalores com sinal algébrico nos elementos de dados de palavra da Fontel eda Fonte2 forem menos do que 0x80 (ou 0x8000 para palavras duplas), en-tão os elementos de dados do byte (palavra) de resultado são retidos em0x80 (ou 0x8000 para palavras duplas). Se os valores com sinal algébriconos elementos de dados de palavra da Fontel e da Fonte2 forem maioresdo que 0x7F (ou 0x7FFF para palavras duplas), então os elementos de da-dos do byte (ou palavra) do resultado são retidos em 0x7F (ou 0x7FFF).
Na etapa 1810, o tamanho do elemento de dados determina quala etapa que deve ser executada a seguir. Se o tamanho dos elementos dedados for de dezesseis bits (dados de palavra em pacote 402), então a uni-dade de execução 130 executa a etapa 1812. Entretanto, se o tamanho doselementos de dados nos dados em pacote for de trinta e dois bits (dados depalavra dupla em pacote 403), a unidade de execução 130 irá executar aetapa 1814.
Assumindo-se que o tamanho dos elementos de dados da fonteé de dezesseis bits, então é executada a etapa 1812. Na etapa 1812, é exe-cutado o seguinte. Os bits de sete até zero da Fontel são os bits de sete atézero do Resultado. Os bits de vinte e três até dezesseis da Fonte, são osbits de quinze até oito do Resultado. Os bits de trinta e nove até trinta e doisda Fontel são os bits de vinte e três até dezesseis do Resultado. Os bits desessenta e três até cinqüenta e seis da Fontel são os bits de trinta e um atévinte e quatro do Resultado. Os bits de sete até zero da Fonte2 são dos bitsde trinta e nove até trinta e dois do Resultado. Os bits de vinte e três até de-zesseis da Fonte2 são os bits de quarenta e sete até quarenta do Resultado.
Os bits de trinta e nove até trinta e dois da Fonte2 são os bits de cinqüenta ecinco até quarenta e oito do Resultado. Os bits de sessenta e três até cin-qüenta e seis da Fonte2 são os bits de trinta e um até vinte e quatro do Re-sultado. Se a saturação for estabelecida, então os bits de ordem superior decada palavra são testados para determinarem se o elemento de dados doResultado deve ser retido.
Assumindo-se que o tamanho dos elementos de dado da fonte éde trinta e dois bits, então é executada a etapa 1814. Na etapa 1814, é exe-cutado o seguinte: os bits de quinze até zero da Fontel são os bits de quin-ze até zero do Resultado. Os bits de quarenta e sete até trinta e dois daFontel são os bits de trinta e um até dezesseis do Resultado. Os bits dequinze até zero da Fonte2 são os bits de quarenta e sete até trinta e dois doResultado. Os bits de quarenta e sete até trinta e dois da Fonte2 são os bitsde sessenta e três até quarenta e oito do Resultado. Se a saturação for es-tabelecida, então os bits de ordem superior de cada palavra dupla são testa-dos para determinarem se o elemento de dados do Resultado deve ser retido.
Em uma concretização, o empacotamento da etapa 1812 é exe-cutada simultaneamente. Entretanto, em outra concretização, esta empaco-tamento é executada em série. Em outra concretização, parte do empacota-mento é executada simultaneamente e parte é executada em série. Esta dis-cussão também aplica-se à empacotamento da etapa 1814.
Na etapa 1820, o Resultado é armazenado no registro DEST 605.
A Tabela 24 ilustra a representação em registro de uma opera-ção de palavra em pacote. Os Hs e Ls subscritos representam os bits de or-dem superior e de ordem inferior, respectivamente, de cada elemento dedados de 16 bits na Fontel e na Fonte2. Por exemplo, Al representa os 8bits de ordem inferior do elemento de dados A na Fonte 1.FONTE 2 FONTE 1
<figure>figure see original document page 63</figure>
Tabela 24
A Tabela 25 ilustra a representação em registro de uma opera-ção de palavra dupla em pacote, onde os Hs e Ls subscritos representam osbits de ordem superior e inferior, respectivamente, de cada elemento de da-dos de 32 bits na Fontel e Fonte2.
FONTE 2 FONTE 1
<figure>figure see original document page 63</figure>
RESULTADO
Tabela 25
Circuitos de Empacotamento
Em uma concretização da invenção, para se alcançar a execu-ção eficiente das operações de empacotamento é usado o paralelismo. AsFiguras 19a e 19b ilustram um circuito para executar as operações de em-pacotamento nos dados em pacote, de acordo com uma concretização dainvenção. O circuito pode opcionalmente executar a operação de empaco-tamento com saturação.
O circuito das Figuras 19a e 19b inclui um controle de operação1900, um registro de resultado 1952, um registro de resultado 1953, oito cir-cuitos de saturação de teste de dezesseis bits até 8 bits, e quatro circuitosde saturação de teste de trinta e dois bits até dezesseis bits.
O controle de operação 1900 recebe a informação do decodifi-cador 202 para possibilitar uma operação de empacotamento. O controle deoperação 1900 usa o valor de saturação para ativar os testes de saturaçãopara cada um dos circuitos de saturação de teste. Se o tamanho dos dadosem pacote da fonte for dados em pacote de palavra 503, então a ativação desaída 1931 é estabelecida pelo controle de operação 1900. Isto possibilita asaída do registro de resultado 1952. Se o tamanho dos dados em pacote defonte for dados em pacote de palavra dupla 504, então a ativação da saída1932 é estabelecida pelo controle de operação 1900. Isto possibilita a saídado registro de saída 1953.
Cada circuito de saturação de teste pode seletivamente testar asaturação. Se um teste para saturação for desativado, então cada circuito desaturação de teste meramente passa os bits de ordem inferior para uma po-sição correspondente em um registro de resultado. Se um teste para satura-ção for ativado, então cada circuito de saturação de teste testa os bits deordem superior para determinar se o resultado deve ser retido.
A saturação de teste 1910 até a saturação de teste 1917 possu-em dezesseis entradas de bit e oito saídas de bit. As oito saídas de bit sãoos oito bits inferiores das entradas, ou, opcionalmente, são um valor retido(0x80, 0x7F, ou OxFF). A saturação de teste 1910 recebe os bits de quinzeaté zero da Fontel e emite os bits de sete até zero para o registro de resul-tado 1952. A saturação de teste 1911 recebe os bits de trinta e um até de-zesseis da Fontel e emite os bits de quinze até oito para o registro de re-sultado 1952. A saturação de teste 1912 recebe os bits de quarenta e seteaté trinta e dois da Fontel e emite os bits de vinte e três até dezesseis parao registro de resultado 1952. A saturação de teste 1913 recebe os bits desessenta e três até quarenta e oito da Fonte 1 e emite os bits de trinta e umaté vinte e quatro para o registro de resultado 1952. A saturação de teste1914 recebe os bits de quinze até zero da Fonte2 e emite os bits de trinta enove até trinta e dois para o registro de resultado 1952. A saturação de teste1915 recebe os bits de trinta e um até dezesseis da Fonte2 e emite os bitsde quarenta e sete até quarenta para o registro de resultado 1952. A satura-ção de teste 1916 recebe os bits de quarenta e sete até trinta e dois daFonte2 e emite os bits cinqüenta e cinco até quarenta e oito para o registrode resultado 1952. A saturação de teste 1917 recebe os bits de sessenta etrês até quarenta e oito da Fonte2 e emite os bits de sessenta e três até cin-qüenta e seis para o registro de resultado 1952.
A saturação de teste 1920 a saturação de teste 1923 possuemtrinta e duas entradas de bit e dezesseis saídas de bit. As dezesseis saídasde bit são os dezesseis bits inferiores das entradas, ou, opcionalmente, sãoum valor retiro (0x8000, 0x7FFF, ou OxFFFF). A saturação de teste 1920recebe os bits de trinta e um até zero da Fontel e emite os bits de quinzeaté zero para o registro de resultado 1953. A saturação de teste 1921 recebeos bits de sessenta e três até trinta e dois da Fontel e emite os bits de trintae um até dezesseis para o registro de resultado 1953. A saturação de teste1922 recebe os bits de trinta e um até zero da Fonte2 e emite os bits de qua-renta sete até trinta e dois para o registro de resultado 1953. A saturação deteste 1923 recebe os bits de sessenta e três até trinta e dois da Fonte2 eemite os bits de sessenta e três até quarenta e oito para o registro de resul-tado 1953.
Por exemplo, na Tabela 26, é executada uma palavra em pacotesem sinal algébrico sem qualquer saturação. O controle de operação 1900irá ativar o registro de resultado 1952 a emitir o resultado[63:0] 1960.
<table>table see original document page 65</column></row><table>Tabela 26
Entretanto, se uma palavra dupla em pacote sem sinal algébricoe sem qualquer saturação for executada, o controle de operação 1900 iráativar o registro de resultado 1953 para emitir o resultado [63:0] 1960. A Ta-bela 27 ilustra este resultado.
Fonte 1
<table>table see original document page 66</column></row><table>
Tabela 27
Vantagens de Incluir a Operação de Empacotamento Descrita no Conjuntode Instruções
A instrução de empacotamento descrita empacota um númeropredefinido de bits originário de cada elemento de dados na Fontel e Fonte2para gerar o Resultado. Desta maneira, o processador 109 pode empacotaros dados em tão pouco quanto a metade das instruções exigidas pelos pro-cessadores de finalidades gerais da técnica anterior. Por exemplo, a geraçãode um resultado que contenha quatro elementos de dados de 16 bits originá-rios de quatro elementos de dados de 32 bits requer apenas uma instrução(em oposição a 2 instruções), conforme mostrado abaixo:
Fonte 1
Fonte 2
Resultado 1
As aplicações típicas de múltiplos meios empacotam grandes
Empacotamento Superior da Fontel, Fonte2
Ao. .A0 Co. .Co Go. .Go Bo. .Bo Ao. Co. Go. Bo.
Tabela 28quantidades de dados. Desse modo, com a redução do número de instru-ções exigidas para empacotar estes dados em tanto quanto a metade, é in-tensificado o desempenho destas aplicações de múltiplos meios.
OPERAÇÃO DE DESEMPACOTAMENTO
Operação de Desempacotamento
Em uma concretização, uma operação de desempacotamentointercala os bytes, palavras ou palavras duplas em pacote de ordem inferiorde dois dados em pacote de fonte para gerar os bytes, palavras ou palavrasduplas em pacote do resultado. Esta operação é mencionada aqui comouma operação de desempacotamento inferior. Em outra concretização, umaoperação de desempacotamento poderia também intercalar os elementos deordem superior (mencionados como a operação de empacotamento superior).
A Figura 20 é um diagrama de fluxo que ilustra um processo deexecução das operações de desempacotamento nos dados em pacote, deacordo com uma concretização da invenção.
A etapa 2001 e a etapa 2002 são executadas primeiro. Na etapa2003, o decodificador 202 ativa a unidade de execução 130 para executar aoperação de desempacotamento. O decodificador 202 comunica, através dabarra interna 170, o tamanho dos elementos de dados na Fontel e Fonte2.
Na etapa 2010, o tamanho do elemento de dados determina quala etapa que deve ser executada a seguir. Se o tamanho dos elementos dedados foi de oito bits (dados do byte em pacote 401), então a unidade deexecução 130 executa a etapa 2012. Entretanto, se o tamanho dos elemen-tos de dados nos dados em pacote for de dezesseis bits (dados de palavraem pacote 402), então a unidade de execução 130 executa a etapa 2014.
Entretanto, se o tamanho dos elementos de dados nos dados em pacote forde trinta e dois bits (dados de palavra dupla em pacote 503), então a unida-de de execução 130 executa a etapa 2016.
Assumindo-se que o tamanho dos elementos de dados de fonteé de oito bits, então é executada a etapa 2012. Na etapa 2012, é executadoo seguinte. Os bits de sete até zero da Fonte 1 são os bits de sete até zerodo Resultado. Os bits de sete até zero da Fonte2 são os bits de quinze atéoito do Resultado. Os bits de quinze até oito da Fonte 1 são os bits de vintee três até dezesseis do Resultado. Os bits de quinze até oito da Fonte2 sãoos bits de trinta e um até vinte e quatro do Resultado. Os bits de vinte e trêsaté dezesseis da Fontel são os bits de trinta e nove até trinta e dois do Re-sultado. Os bits de vinte e três até dezesseis da Fonte2 são os bits de qua-renta e sete até quarenta do Resultado. Os bits de trinta e um até vinte equatro da Fontel são os bits de cinqüenta e cinco até quarenta e oito do Re-sultado. Os bits de trinta e um até vinte e quatro da Fonte2 são os bits desessenta e três até cinqüenta e seis do Resultado.
Assumindo-se que o tamanho dos elementos de dados de fonteé de dezesseis bits, então é executada a etapa 2012. Na etapa 2014, é exe-cutado o seguinte. Os bits de quinze até zero da Fontel são os bits de quin-ze até zero do Resultado. Os bits de quinze até zero da Fonte2 são os bitsde trinta e um até dezesseis do Resultado. Os bits de trinta e um até dezes-seis da Fontel são os bits de quarenta e sete até trinta e dois do Resultado.Os bits de trinta e um até dezesseis da Fonte2 são os bits de sessenta e trêsaté quarenta e oito do Resultado.
Assumindo-se que o tamanho dos elementos de dados da fonteé de trinta e dois bits, então é executada a etapa 2016. Na etapa 2016, éexecutado o seguinte. Os bits de trinta e um até zero da Fontel são os bitsde trinta e um até zero do Resultado. Os bits de trinta e um até zero daFonte2 são os bits de sessenta e três até trinta e dois do Resultado.
Em uma concretização, o desempacotamento da etapa 2012 éexecutado simultaneamente. Entretanto, em outra concretização, este de-sempacotamento é executado em série. Em outra concretização, parte destedesempacotamento é executado simultaneamente e parte é executada emsérie. Esta discussão também se aplica a desempacotamento da etapa 2014eda etapa 2016.
Na etapa 2020, o Resultado é armazenado no registro DEST605.
A Tabela 29 ilustra a representação em registro da operação dedesempacotamento de palavra dupla (cada um dos elementos de dados A0-ie B0-i contém 32 bits).
FONTE 2 FONTE 1
Tabela 29
A Tabela 30 ilustra a representação em registro de uma opera-ção de desempacotamento de palavra (cada um dos elementos de dados A0-3 e Bo-3 contém 16 bits).
FONTE 1 FONTE 2
Tabela 30
A Tabela 31 ilustra a representação em registro de uma opera-ção de desempacotamento de byte (cada um dos elementos de dados A07 eB0-7 contém 8 bits).
FONTE 1 FONTE 2Tabela 31
Circuitos de Desempacotamento
A Figura 21 ilustra um circuito para a execução das operaçõesde desempacotamento nos dados em pacote, de acordo com uma concreti-zação da invenção. O circuito da Figura 21 inclui o circuito de controle deoperação 2100, um registro de resultado 2152, um registro de resultado2153 e um registro de resultado 2154.
O controle de operação 2100 recebe a informação originária dodecodificador 202 para ativar uma operação de desempacotamento. Se otamanho dos dados em pacote da fonte for dados em pacote de byte 502,então uma ativação de saída 2132 é estabelecida pelo controle de operação2100. Isto ativa a saída do registro de resultado 2152. Se o tamanho dosdados em pacote da fonte for dados em pacote de palavra 503, então a ati-vação de saída 2133 é estabelecida pelo controle de operação 2100. Istoativa a saída do registro de saída 2153. Se o tamanho dos dados em pacotede fonte for dados em pacote de palavra dupla 504, então a ativação de saí-da 2134 é estabelecida pelo controle de operação 2100. Isto ativa a saída doregistro de resultado de saída 2154.
O registro de resultado 2152 possui as seguintes entradas. Osbits de sete até zero da Fontel são os bits de sete até zero para o registrode resultado 2152. Os bits de sete até zero da Fonte 2 são os bits de quinzeaté oito para o registro de resultado 2152. Os bits de quinze até oito daFontel são os bits de vinte e três até dezesseis para o registro de resultado2152. Os bits de quinze até oito da Fonte2 são os bits de trinta e um atévinte e quatro para o registro de resultado 2152. Os bits de vinte e três atédezesseis da Fontel são os bits de trinta e nove até trinta e dois para o re-gistro de resultado 2152. Os bits de vinte e três até dezesseis da Fonte2 sãoos bits de quarenta e sete até quarenta para o registro de resultado 2152. Osbits de trinta e um até vinte e quatro da Fonte 1 são os bits cinqüenta e cincoaté quarenta e oito para o registro de resultado 2152. Os bits de trinta e umaté vinte e quatro da Fonte 2 são os bits de sessenta e três até cinqüenta eseis para o registro de resultado 2152.O registro de resultado 2153 possui as seguintes entradas. Osbits de quinze até zero da Fontel são os bits de quinze até zero para o re-gistro de resultado 2153. Os bits de quinze até zero da Fonte2 são os bits detrinta e um até dezesseis para o registro de resultado 2153. Os bits de trintae um até dezesseis da Fontel são os bits de quarenta e sete até trinta e doispara o registro de resultado 2153. Os bits de trinta e um até dezesseis daFonte2 são os bits de sessenta e três até quarenta e oito do registro de re-sultado 1953.
O registro de resultado 2154 possui as seguintes entradas. Osbits de trinta e um até zero da Fontel são os bits de trinta e um até zero parao registro de resultado 2154. Os bits de trinta e um até zero da Fonte2 sãoos bits de sessenta e três até trinta e dois do registro de resultado 2154.
Por exemplo, na Tabela 32, é executada uma operação de de-sempacotamento de palavras. O controle de operação 2100 irá ativar o re-gistro de resultado 2153 para emitir o resultado[63:0] 2160.
<table>table see original document page 71</column></row><table>
Tabela 32
Entretanto, se for executada uma operação de desempacota-mento de palavra dupla, o controle de operação 2100 irá ativar o registro deresultado 2154 para emitir o resultado[63:0] 2160. A Tabela 33 ilustra esteresultado.Fonte 1
<table>table see original document page 72</column></row><table>
Tabela 33
Vantagens de Incluir a Instrução de Desempacotamento Descrita no Con-junto de Instruções
Com a inclusão da instrução de desempacotamento descrita noconjunto de instruções, os dados em pacote podem ser intercalados ou de-sempacotados. Esta instrução de desempacotamento pode ser usada paradesempacotar os dados em pacote através da criação de todos os elemen-tos de dados em todos os os da Fonte2. Um exemplo de bytes de desempa-cotamento é mostrado abaixo na Tabela 34a.
Fonte 1
<table>table see original document page 72</column></row><table>
Tabela 34a
Esta mesma instrução de desempacotamento pode ser usadapara intercalar os dados, conforme mostrado na Tabela 34b. A intercalaçãoé útil em inúmeros algoritmos de múltiplos meios. Por exemplo, a intercala-ção é útil para transpor as matrizes e os pixels de interpolação.<table>table see original document page 73</column></row><table>
Dessa forma, com a provisão desta instrução de desempacota-mento no conjunto de instruções suportado pelo processador 109, o proces-sador 109 torna-se mais versátil e pode executar os algoritmos que exijamesta funcionalidade em um nível mais alto de desempenho.
CONTAGEM DE OCUPAÇÃO
Contagem de Ocupação
Uma concretização da invenção permite que as operações decontagem de ocupação sejam executadas nos dados em pacote. Isto é, ainvenção gera um elemento de dados de resultado para cada elemento dedados de primeiros dados em pacote. Cada elemento de dados de resultadorepresenta o número de bits estabelecido em cada elemento de dados cor-respondente dos primeiros dados em pacote. Em uma concretização, o nú-mero total de bits estabelecido em um é contado.
A Tabela 35a ilustra uma representação em registro de umaoperação de contagem de ocupação nos dados em pacote. A primeira fileirade bits é a representação de dados em pacote dos dados em pacote daFontel. A segunda fileira de bits é a representação de dados em pacote dosdados em pacote do Resultado. O número abaixo de cada bit do elementode dados é o número do elemento de dados. Por exemplo, o elemento 0 dosdados da Fontel é 1000111110001OOO2. Por isso, se os elementos de da-dos tiverem dezesseis bits de comprimento (dados de palavra), e uma ope-ração de contagem de ocupação for executada, a unidade de Execução 130irá produzir os dados em pacote do Resultado, conforme mostrado.
<table>table see original document page 74</column></row><table>
Tabela 35a
Em outra concretização, as contagens de ocupação são execu-tadas nos elementos de dados de oito bits. A Tabela 35b ilustra uma repre-sentação em registro de uma contagem de ocupação nos dados em pacoteque possuem oito elementos de dados em pacote de oito bits.
<table>table see original document page 74</column></row><table>
Tabela 35b
Em outra concretização, as contagens de ocupação são execu-tadas nos elementos de dados de trinta e dois bits. A Tabela 35c ilustra umarepresentação em registro de uma contagem de ocupação nos dados empacote que possuem dois elementos de dados em pacote de trinta e doisbits.
<table>table see original document page 74</column></row><table>
Tabela 35c
As contagens de ocupação podem também ser executadas nosdados inteiros de sessenta e quatro bits. Isto é, o número de bits estabeleci-do em um é totalizado em sessenta e quatro bits de dados. A Tabela 35dilustra uma representação em registro de uma contagem de ocupação nosdados inteiros de sessenta e quatro bits.
<table>table see original document page 75</column></row><table> Tabela 35d
Processo de Execução de uma Contagem de Ocupação
A Figura 22 é um diagrama de fluxo que ilustra um processopara executar uma operação de contagem de ocupação nos dados em pa-cote, de acordo com uma concretização da invenção. Na etapa 2201, emresposta ao recebimento de um sinal de controle 207, o decodificador 202decodifica esse sinal de controle 207. Em uma concretização, o sinal decontrole 207 é suprido através da barra 101. Em outra concretização, o sinalde controle 207 é suprido pelo cachê 160. Dessa maneira, o decodificador202 decodifica o código de operação para a contagem de ocupação, os en-dereços SRC1 602 e DEST 605 nos registros 209. Deve ser notado queSRC2 603 não é usado nesta presente concretização da invenção. Da mes-ma forma, não são usados nesta presente concretização a satura-ção/insaturação, a aritmética com sinal algébrico/sem sinal algébrico e ocomprimento dos elementos de dados nos dados em pacote. Na presenteconcretização da invenção, é suportada apenas uma adição em pacote comcomprimento de elemento de dados de dezesseis bits. Entretanto, aqueleversado na técnica entenderia que as contagens de ocupação não podemser executadas nos dados em pacote que possuem oito elementos de dadosde byte em pacote ou dois elementos de dados de palavra dupla em pacote.
Na etapa 2202, através da barra interna 170, o decodificador202 acessa os registros 209 no arquivo de registro geral 150, uma vez for-necido o endereço SRC1 602. Os registros 209 apresentam a unidade deExecução 130 com os dados em pacote, Fontel, armazenados no registroneste endereço. Isto é, os registros 209 comunicam os dados em pacote àunidade de Execução 130 através da barra interna 170.
Na etapa 2130, o decodificador 202 ativa a unidade de Execu-ção 130 para executar uma operação de contagem de ocupação. Em umaconcretização alternativa, o decodificador 202 adicionalmente comunica,através da barra interna 170, o comprimento dos elementos de dados.
Na etapa 2205, assumindo-se que o comprimento dos elemen-tos de dados é de dezesseis bits, então a unidade de Execução 130 totalizao número de bits estabelecido do bit quinze até o bit zero da Fontel, produ-zindo do bit quinze até o bit zero dos dados em pacote do Resultado. Emparalelo com esta totalização, a unidade de Execução 130 soma os totais dobit trinta e um até o bit dezesseis da Fontel, produzindo do bit trinta e umaté bit dezesseis dos dados em pacote do Resultado. Em paralelo com ageração destes totais, a unidade de Execução 130 totaliza dos bit quarenta esete até o bit trinta e dois da Fontel, produzindo do bit quarenta e sete até obit trinta e dois dos dados em pacote do Resultado. Em paralelo com a gera-ção destes totais, a unidade de Execução 130 totaliza do bit sessenta e trêsaté o bit quarenta e oito da Fontel, produzindo do bit sessenta e três até obit quarenta e oito dos dados em pacote do Resultado.
Na etapa 2206, o decodificador 202 ativa um registro nos regis-tros 209 com o endereço DEST 605 do registro de destino. Dessa maneira,os dados em pacote do Resultado são armazenados no registro endereçadopelo DEST 605.
Processo de Execução de uma Contagem de Ocupação em um Elemento deDados
A Figura 23 é um diagrama de fluxo que ilustra um processopara a execução de uma operação de contagem de ocupação em um ele-mento de dados de dados em pacote e para a geração de um único ele-mento de dados de resultado para dados em pacote de resultado, de acordocom uma concretização da invenção. Na etapa 2310a, uma soma de coluna,CSum 1a, e um transporte de coluna, CCarry 1a, são gerados a partir dosbits quinze, quatorze, treze e dois da Fontel. Na etapa 2310b, uma soma decoluna, CSum 1b, e um transporte de coluna, CCarry 1b, são gerados a par-tir dos bits onze, dez, nove e oito da Fontel. Na etapa 2310c, uma soma decoluna, CSum 1c, e um transporte de coluna, CCarry 1c, são gerados a par-tir dos bits sete, seis, cinco e quatro da Fontel. Na etapa 231 Od, uma somade coluna, CSum 1 d, e um transporte de coluna CCarry 1 d, são gerados apartir dos bits três, dois, um e zero da Fonte 1. Em uma concretização dainvenção, as etapas 2310a-d são executadas em paralelo. Na etapa 2320a,uma soma de coluna, CSum 2a, e um transporte de coluna, CCarry 2b, sãogerados a partir de CSum 1a, CCarry 1a, CSum 1b e CCarry 1b. Na etapa2320b, uma soma de coluna, CSum 2b, e um transporte de coluna, CCarry2b, são gerados a partir de CSum 1c, CCarryI, CSumI d, e CCarryI d. Emuma concretização da invenção, as etapas 2320a-b são executadas em pa-ralelo. Na etapa 2330, uma soma de coluna CSum3, e um transporte de co-luna, CCarry3 são gerados a partir de CSum2a, CCarry2a, CSum2b e CCar-ry2b. Na etapa 2340, um Resultado é gerado a partir de CSum3 e CCarry3.
Em uma concretização, o Resultado é representado em dezesseis bits.Nesta concretização, na medida em que apenas os bits de quatro até zerosão necessários para representarem o número máximo de bits estabelecidoem uma Fontel, os bits de quinze até cinco são estabelecidos em zero. Onúmero máximo de bits para a Fontel é de dezesseis. Isto ocorre quando aFontel equaliza 11111111111111112. O Resultado seria dezesseis e seriarepresentado por 000000000001OOOO2.
Desse modo, para calcular quatro elementos de dados do re-sultado para uma operação de contagem de ocupação em dados em pacotede sessenta e quatro bits, as etapas da Figura 23 seriam executadas paracada elemento de dados nos dados em pacote. Em uma concretização, osquatro elementos de dados de resultado de dezesseis bits seriam calculadosem paralelo.
Circuito para Executar uma Contagem de Ocupação
A Figura 24 ilustra um circuito para executar uma operação decontagem de ocupação nos dados em pacote que apresentam quatro ele-mentos de dados de palavra, de acordo com uma concretização da inven-ção, a Figura 25 ilustra um circuito detalhado de execução de uma operaçãode contagem de ocupação em um elemento de dados de palavra de dadosem pacote, de acordo com uma concretização da invenção.
A Figura 24 ilustra um circuito, no qual a barra 2401 da Fontelconduz os sinais de informação para os circuitos popcnt (de contagem deocupação) 2408a-d através da FonteIiN 2406a-d. Dessa maneira, o circuitopopcnt (de contagem de ocupação) 2408a totaliza o número de bits estabe-lecido do bit quinze até o bit zero da Fontel, produzindo do bit quinze até obit zero do Resultado. O circuito popcnt (de contagem de ocupação) 2408btotaliza o número de bits estabelecido do bit trinta e um até o bit dezesseisda Fontel, produzindo do bit trinta e um até o bit dezesseis do Resultado. Ocircuito popcnt (de contagem de ocupação) 2408c totaliza o número de bitsestabelecido do bit quarenta e sete até o bit trinta e dois da Fontel, produ-zindo do bit quarenta e sete até o bit trinta e dois do Resultado. O circuitopopcnt (de contagem de ocupação) 2408d totaliza o número de bits estabe-lecido do bit sessenta e três para o bit quarenta e oito da Fontel1 produzindodo bit sessenta e três até o bit quarenta e oito do Resultado. A ativação2404a-d recebe, a partir do Controle de Operação 2410, através do controle2403, através dos sinais de controle que ativam os circuitos popcnt (de con-tagem de ocupação) 2408a-d para executar as operações de contagem deocupação, e para colocar um Resultado na Barra de Resultado 2409. Aqueleversado na técnica seria capaz de criar tal circuito, uma vez fornecidas adescrição acima acima e as ilustrações nas Figuras 1-6b e 23-25.
Os circuitos popcnt (de contagem de ocupação) 2408a-d comu-nicam a informação de resultado de uma operação de contagem de ocupa-ção em pacote para a barra de Resultado 2409, através da saída de resulta-do2407a-d. Esta informação de resultado é então armazenada no registrointerior especificado pelo endereço de registro DEST 605.
Circuito para a Execução de uma Contagem de Ocupação em Um Elementode Dados
A Figura 25 ilustra um circuito detalhado para a execução deuma operação de contagem de ocupação em um elemento de dados de pa-lavra de dados em pacote. Em particular, a Figura 25 ilustra uma porção docircuito popcnt (de contagem de ocupação) 2408a. Para alcançar o desem-penho máximo de aplicações que empregam uma operação de contagem deocupação, a operação deve ser completa dentro de um ciclo de relógio. Porisso, uma vez fornecido o acesso a um registro e o armazenamento de umresultado exige uma certa porcentagem de ciclo de relógio, o circuito da Fi-gura 24 irá completar sua operação dentro de aproximadamente 80% de umperíodo de relógio. Este circuito possui a vantagem de permitir que o pro-cessador 109 execute uma operação de contagem de ocupação em quatroelementos de dados de dezesseis bits em um ciclo de relógio.
O circuito popcnt (de contagem de ocupação) 2408a empregasomadores de transporte-reserva 4->2 (a menos que de outra maneira es-pecificado, os somadores de transporte-reserva (CSA) irão se referir a umsomador de transporte-reserva 4->2). Os somadores de transporte-reserva4->2, conforme podem ser empregados no circuito popcnt (de contagem deocupação) 2408a-d, são bem conhecidos na técnica. Um somador de trans-porte-reserva 4->2 é um somador que soma quatro operandos, resultandoem duas somas. Uma vez que a operação de contagem de ocupação nocircuito popcnt (de contagem de ocupação) 2408a envolver dezesseis bits, oprimeiro nível irá incluir quatro somadores de transporte-reserva 4->2. Estesquatro somadores de transporte-reserva 4->2 transformam os dezesseisoperandos de um bit em oito somas de dois bits. O segundo nível transformaas oito somas de dois bits em quatro somas de três bits, e o terceiro níveltransforma as quatro somas de três bits em duas somas de quatro bits. Emseguida, um somador completo de quatro bits soma as duas somas de qua-tro bits para gerar um resultado final.
Embora sejam usados os somadores de transporte-reserva 4->2,uma concretização alternativa poderia empregar somadores de transporte-reserva 3->2. Alternativamente, diversos somadores completos poderiam serusados; entretanto, esta configuração não apresentaria um resultado tãorapidamente quanto a concretização mostrada na Figura 25.
A FonteIiN 15 02406a conduz do bit quinze até o bit zero da Fon-te1. Os primeiros quatro bits são acoplados às entradas de um somador detransporte-reserva 4->2 (CSA 2510a). Os próximos quatro bits são acopla-dos às entradas de CSA 2510b. Os próximos quatro bits são acoplados àsentradas de CSA 2510c. Os quatro bits finais são acoplados às entradas deCSA 251 Od. Cada CSA 2510a-d gera duas saídas de dois bits. As duas saí-das de dois bits de CAS 2510a são acopladas as duas entradas de CSA2520a. As duas saídas de dois bits de CAS 2510b são acopladas às outrasduas entradas de CSA 2520a. As duas saídas de dois bits de CSA 2510asão acopladas às duas entradas de CSA 2520b. As duas saídas de dois bitsde CSA 251 Od são acopladas às outras duas entradas de CSA 2530b. CadaCSA 2520a-d gera duas saídas de três bits. As duas saídas de três bits de2520a são acopladas as duas entradas de CSA 2530. As duas saídas detrês bits de 2520b são acopladas às outras duas entradas de CSA 2530.CSA 2530 gera duas saídas de quatro bits.
Estas duas saídas de quatro bits são acopladas as duas entra-das de um somador completo (FA 2550). FA 2550 soma as duas entradasde quatro bits e comunica do bit três até o bit zero da Saída de Resultado2407a como um total da adição de duas entradas de quatro bits. FA 2550gera o bit quatro da Saída de Resultado 2407a através da saída de trans-porte (CO 2552). Em uma concretização alternativa, um somador completode cinco bits é usado para gerar do bit quatro até o bit zero da Saída de Re-sultado 2407a. Em cada caso, dos bits de quinze até cinco da Saída de Re-sultado 2407a são ligados a zero.
Embora não-mostrado na Figura 25, aquele versado na técnicaentenderia que a Saída de Resultado 2407a poderia ser multiplexada ou se-parada na barra de Resultado 2409. O multiplexador seria controlado atra-vés da Ativação 2404a. Isto iria permitir que outros circuitos da unidade deExecução gravassem os dados na barra de Resultado 2409.
Vantagens de Incluir a Operação de Contagem de Ocupação Descrita noConjunto de Instruções
A instrução de contagem de ocupação descrita calcula o númerode bits estabelecido em cada um dos elementos de dados de dados em pa-cote, tal como a Fontel. Dessa maneira, com a inclusão desta instrução noconjunto de instruções, pode ser executada uma operação de contagem deocupação nos dados em pacote em uma única instrução. Em contraste, osprocessadores de finalidades gerais da técnica anterior têm que executarnumerosas instruções para desempacotar a Fontel, têm que executar a fun-ção individualmente em cada elemento de dados desempacotados, e depoisempacotar os resultados para o processamento em pacote adicional.
Desse modo, com a provisão esta instrução de contagem deocupação no conjunto de instruções suportado pelo processador 109, é in-tensificado o desempenho dos algoritmos exigindo esta funcionabilidade.
OPERAÇÕES LÓGICAS
Operações Lógicas
Em uma concretização da invenção, o registro SRC1 contém osdados em pacote (Fontel), o registro SRC2 contém os dados em pacote(Fonte2) e o registro DEST irá conter o resultado (Resultado) da execuçãoda operação lógica selecionada na Fontel e Fonte2. Por exemplo, se a ope-ração AND lógica for selecionada, a Fontel será operada com lógica emAND com a Fonte2.
Em uma concretização da invenção, as seguintes operaçõeslógicas são suportadas: AND lógica, ANDN lógica, OR lógica, e XOR lógica.As operações lógicas AND, OR e XOR são bem conhecidas na técnica. Aoperação lógica ANDN faz com que a Fonte2 seja operada com lógica emAND com a inversão lógica da Fontel. Enquanto a invenção é descrita emrelação a estas operações lógicas, concretizações alternativas poderiam im-plementar outras operações lógicas.
A Figura 26 é um diagrama de fluxo que ilustra um processopara a execução de diversas operações lógicas nos dados em pacote, deacordo com uma concretização da invenção.
Na etapa 2601, o decodificador 202 decodifica o sinal de con-trole 207 recebido pelo processador 109. Dessa maneira, o decodificador202 decodifica o código de operação para a operação lógica apropriada (istoé, AND, ANDN, OR ou XOR), e os endereços SRC1 602, SRC2 603 e DEST605 nos registros 209.
Na etapa 2602, através da barra interna 170, o decodificador202 acessa os registros 209 no arquivo de registro geral 150, uma vez for-necidos os endereços SRC1 602 e SRC2 603. Os registros 209 apresentama unidade de execução 130 com os dados em pacote armazenados no re-gistro SRC1 602 (FonteI) e nos dados em pacote armazenados no registroSRC2 603 (Fonte2). Isto é, os registros 209 comunicam os dados em pacoteà unidade de execução 130 através da barra interna 170.
Na etapa 2603, o decodificador 202 ativa a unidade de execução130 para executar a operação selecionada das operações lógicas em paco-te.
Na etapa 2610, a operação selecionada das operações lógicasem pacote determina qual a etapa que deve ser executada a seguir. A uni-dade de Execução 130 executa a etapa 2612, se a operação AND lógicafosse selecionada; a unidade de Execução 130 executa a etapa 2613, se aoperação ANDN lógica fosse selecionada; a unidade de Execução 130 exe-cuta a etapa 2614, se a operação OR lógica fosse selecionada; e a unidadede Execução 130 executa a etapa 2615, se a operação lógica XOR fosseselecionada.
Assumindo-se que a operação AND lógica fosse selecionada, éexecutada a etapa 2612. Na etapa 2612, os bits de sessenta e três até zeroda Fontel são operados com lógica em AND com os bits de sessenta e trêsaté zero da Fonte2 para gerar os bits de sessenta e três até zero do Resul-tado.
Assumindo-se que a operação ANDN lógica fosse selecionada,é executada a etapa 2613. Na etapa 2613, os bits de sessenta e três atézero da Fontel são operados com lógica em ANDN com os bits de sessentae três até zero da Fonte2 para gerar os bits de sessenta e três até zero doResultado.
Assumindo-se que a operação OR lógica fosse selecionada, éexecutada a etapa 2614. Na etapa 2514, os bits de sessenta e três até zeroda Fonte um são operados com lógica em OR com os bits de sessenta e trêsaté zero da Fonte2 para gerar os bits de sessenta e três até zero do Resultado.
Assumindo-se que a operação XOR lógica fosse selecionada, aetapa 2615 é executada. Na etapa 2615, os bits de sessenta e três até zeroda Fontel são exclusivamente operados com lógica em OR com os bits desessenta e três até zero da Fonte2 para gerar os bits de sessenta e três atézero do Resultado.
Na etapa 2620, o Resultado é armazenado no registro DEST.
A Tabela 36 ilustra a representação em registro de uma opera-ção ANDN lógica nos dados em pacote. A primeira fileira de bits é a repre-sentação de dados em pacote da Fontel. A segunda fileira de bits é a repre-sentação de dados em pacote da Fonte2. A terceira fileira de bits é a repre-sentação de dados em pacote do Resultado. O número abaixo de cada bitde elemento de dados é o número do elemento de dados. Por exemplo, oelemento dois de dados da Fontel é 11111111 000000002.
<table>table see original document page 83</column></row><table>
Tabela 36
Enquanto a invenção é descrita em relação a mesma operaçãológica que é executada nos elementos de dados correspondentes na Fontele Fonte2, concretizações alternativas poderiam suportar as instruções quepossibilitaram a operação lógica executada nos elementos de dados corres-pondentes a serem selecionados em uma base por elemento.
Circuitos Lógicos de Dados em pacote
Em uma concretização, as operações lógicas descritas podemocorrer nos múltiplos elementos de dados no mesmo número de ciclos derelógio que a única operação lógica nos dados desempacotados. Para sealcançar a execução no mesmo número de ciclos de relógio, é usado o pa-ralelismo.
A Figura 27 ilustra um circuito para executar as operações lógi-cas nos dados em pacote, de acordo com uma concretização da invenção. Ocontrole de operação 2700 controla os circuitos executando as operaçõeslógicas. O controle de operação 2700 processa o sinal de controle e emite ossinais de seleção nas linhas de controle 2780. Estes sinais de seleção co-municam ao Circuito de Operações Lógicas 2701 a operação selecionadadas operações AND, ANDN, OR e XOR.
O Circuito de Operações Lógicas 2701 recebe a Fontel[63:0] ea Fonte2[63:0] e executa a operação lógica indicada pela seleção de sinaispara gerar o Resultado. O Circuito de Operações Lógicas 2701 comunica oResultado[63:0] ao Registro de Resultado 2731.
Vantagens de Incluir as Operações Lógicas Descritas no Conjunto de Instruções
As instruções lógicas descritas executam uma operação lógicaAND, uma operação lógica AND NOT, uma operação lógica OR e uma ope-ração lógica OR NOT. Estas instruções são úteis em qualquer aplicação queexija a manipulação lógica de dados. Com a inclusão destas instruções noconjunto de instruções suportado pelo processador 109, estas operaçõeslógicas podem ser executadas nos dados em pacote em uma instrução.
COMPARAÇÃO EM PACOTE
Operação de Comparação em Pacote
Em uma concretização da invenção, o registro SRC1 602 con-tém os dados (FonteI) a serem comparados, o registro SRC2 603 contém osdados (Fonte2) a serem comparados, e o registro DEST 605 irá conter o re-sultado de comparação (Resultado). Isto é, a Fontel terá cada elemento dedados independentemente comparado por cada elemento de dados daFonte2, de acordo com uma relação indicada.
Em uma concretização da invenção, são suportadas as seguin-tes relações de comparação: igual, com sinal algébrico maior do que; comsinal algébrico maior do que ou igual; sem sinal algébrico maior do que; ousem sinal algébrico maior do que ou igual. A relação é testada em cada parde elementos de dados correspondentes. Por exemplo, a Fontel [7:0] é mai-or do que a Fonte2[7:0], com o resultado sendo Resultado[7:0]. Se o resulta-do da comparação satisfizer a relação, então, em uma concretização, o ele-mento de dados correspondente no Resultado é estabelecido a todos aque-les. Se o resultado de comparação não satisfizer a relação, então o ele-mento de dados correspondente no Resultado é estabelecido para todos oszeros.
A Figura 28 é um diagrama de fluxo que ilustra um processopara a execução de operações de comparação em pacote nos dados empacote, de acordo com uma concretização da invenção.
Na etapa 2801, o decodificador 202 decodifica o sinal de con-trole 207 recebido pelo processador 109. Dessa forma, o decodificador de-codifica o código de operação para a operação de comparação apropriada,os endereços SRC1 602, SRC2 603 e DEST 605 nos registros 209, a satu-ração/insaturação (não necessariamente obrigatórias para as operações decomparação), a aritmética com sinal algébrico/sem sinal algébrico, e o com-primento dos elementos de dados nos dados em pacote. Conforme anteri-ormente mencionado, SRC1 602 (ou SRC2 603) pode ser usado comoDEST 605.
Na etapa 2802, através da barra interna 170, o decodificador202 acessa os registros 209 no arquivo de registro geral 150, uma vez for-necidos os endereços SRC1 602 e SRC2 603. Os registros 209 apresentama unidade de execução 130 com os dados em pacote armazenados no re-gistro SRC1 602 (Fontel), e os dados em pacote armazenados no registroSRC2 603 (Fonte2). Isto é, os registros 209 comunicam os dados em pacoteà unidade de execução 130 através da barra interna 170.
Na etapa 2803, o decodificador 202 ativa a unidade de execução130 para executar a operação de comparação em pacote apropriada. O de-codificador 202 adicionalmente comunica, através da barra interna 170, otamanho dos elementos de dados e a relação para a operação de comparação.Na etapa 2810, o tamanho do elemento de dados determina quala etapa que deve ser executada a seguir. Se o tamanho dos elementos dedados for de oito bits (dados byte em pacote 401), então a unidade de exe-cução 130 executa a etapa 2812. Entretanto, se o tamanho dos elementosde dados nos dados em pacote for de dezesseis bits (dados de palavra empacote 402), então a unidade de execução 130 executa a etapa 2814. Emuma concretização, apenas são suportadas as comparações em pacote dotamanho de elemento de dados de oito bits de dezesseis bits. Entretanto, emoutra concretização, uma comparação em pacote do tamanho do elementode dados de trinta e dois bits é também suportada (palavra dupla em pacote403).
Assumindo-se que o tamanho dos elementos de dados é de oitobits, então é executada a etapa 2812. Na etapa 2812, é executado o se-guinte. Os bits de sete até zero da Fontel são comparados aos bits de seteaté zero da Fonte2, gerando os bits de sete até zero do Resultado. Os bitsde quinze até oito da Fontel são comparados aos bits de quinze até oito daFonte2, gerando os bits de quinze até oito do Resultado. Os bits de vinte etrês até dezesseis da Fontel são comparados aos de vinte e três até dezes-seis da Fonte2, gerando os bits de vinte e três até dezesseis do Resultado.Os bits de trinta e um até vinte e quatro da Fontel são comparados aos bitsde trinta e um até vinte e quatro, gerando os bits de trinta e um até vinte equatro do Resultado. Os bits de trinta e nove até trinta e dois da Fontel sãocomparados aos bits de trinta e nove até trinta e dois da Fonte2, gerando osbits de trinta e nove até trinta e dois do Resultado. Os bits de quarenta esete até quarenta da Fontel são comparados com os bits de quarenta e seteaté quarenta da Fonte2, gerando os bits de quarenta e sete até quarenta doResultado. Os bits de cinqüenta e cinco até quarenta e oito da Fontel sãocomparados com os bits de cinqüenta e cinco até quarenta e oito da Fonte2,gerando os bits de cinqüenta e cinco até quarenta e oito do Resultado. Osbits de sessenta e três até cinqüenta e seis da Fontel são comparados comos bits de sessenta e três até cinqüenta e seis da Fonte2, gerando os bits desessenta e três até cinqüenta e seis do Resultado.Assumindo-se que o tamanho dos elementos de dados é de de-zesseis bits, então é executada a etapa 2814. Na etapa 2814, é executado oseguinte. Os bits de quinze até zero da Fontel são comparados com os bitsde quinze até zero da Fonte2, gerando os bits de quinze até zero do Resul-tado. Os bits de trinta e um até dezesseis da Fontel são comparados aosbits de trinta e um até dezesseis da Fonte2, gerando os bits de trinta e umaté dezesseis do Resultado. Os bits de quarenta e sete até trinta e dois daFontel são comparados com os bits de quarenta e sete até trinta e dois daFonte2, gerando os bits de quarenta e sete até trinta e dois do Resultado. Osbits de sessenta e três até quarenta e oito da Fontel são comparados aosbits de sessenta e três até quarenta e oito da Fonte2, gerando os bits desessenta e três até quarenta e oito do Resultado.
Em uma concretização, as comparações da etapa 2812 sãoexecutadas simultaneamente. Entretanto, em outra concretização, estascomparações são executadas em série. Em outra concretização, algumasdestas comparações são executadas simultaneamente e algumas são exe-cutadas em série. Esta discussão também aplica-se igualmente às compara-ções da etapa 2814.
Na etapa 2820, o Resultado é armazenado no registro DEST 605.
A Tabela 37 ilustra a representação em registro da comparaçãoem pacote sem sinal algébrico maior do que a operação. A primeira fileira debits é a representação dos dados em pacote da Fontel. A segunda fileira debits é a representação de dados em pacote da Fonte2. A terceira fileira é arepresentação de dados em pacote do Resultado. O número abaixo de cadabit do elemento de dados é o número do elemento de dados. Por exemplo, oelemento três dos dados da Fontel é 100000002.<table>table see original document page 88</column></row><table>
Tabela 37
A Tabela 38 ilustra a representação em registro da operação de
comparação em pacote com sinal algébrico maior ou igual nos dados debyte em pacote.
<table>table see original document page 88</column></row><table>
Tabela 38
Circuitos de Comparação de Dados em pacote
Em uma concretização, a operação de comparação pode ocorrernos múltiplos elementos de dados no mesmo número de ciclos de relógiocomo uma única operação de comparação nos dados desempacotados.Para se alcançar a execução no mesmo número de ciclos de relógio, é usa-do o paralelismo. Isto é, os registros são simultaneamente instruídos paraexecutar a operação de comparação nos elementos de dados. Isto é discuti-do em maiores detalhes abaixo.
A Figura 29 ilustra um circuito para executar as operações decomparação em pacote nos bytes individuais dos dados em pacote, de acor-do com uma concretização da invenção. A Figura 29 ilustra o uso de um cir-cuito de comparação de fração de byte modificado, o estágiOi2999 da fraçãode byte. Cada fração de byte, exceto para a fração de byte do elemento dedados mais significativo, inclui um controle de bit e unidade de controle. Afração de byte do elemento de dados mais significativo precisa apenas teruma unidade de comparação.
A unidade,2911 de comparação e a unidadei+i2971 de compara-ção permitem, cada qual, que oito bits da Fontel sejam comparados a oitobits correspondentes da Fonte2. Em uma concretização, cada unidade decomparação opera como um circuito de comparação conhecido de oito bits.Tal circuito de comparação conhecido de oito bits inclui um circuito de fraçãode byte que permite a subtração da Fonte2 a partir da Fontel. Os resultadosda subtração são processados para determinarem os resultados da opera-ção de comparação. Em uma concretização, os resultados da subtração in-cluem uma informação de saturação de capacidade. Esta informação desaturação de capacidade é testada para determinar se o resultado da opera-ção do comparação é verdadeiro.
Cada unidade de comparação possui uma entrada de Fontel,uma entrada de Fonte2, uma entrada de controle, um sinal de próximo está-gio, um sinal de estágio final, e uma saída de resultado. Por isso, a unida-de,2911 possui a entrada Fontel ,2931, a entrada Fonte2|2933, a entrada decontrolej2901, o próximo estágio de sinal, 2913, a entrada de estági0j2912final, e um resultado armazenado no registro,2951 de resultado. Por isso, aunidadei+i2971 de comparação possui a entrada de Fontel μ2932, a entradade Fonte2i+i2934, a entrada de controlei+i2902, o próximo estágio de sina-Ií+i2973, a entrada de estágiOi+i2972 final, e um resultado armazenado noregistrOi+i2952 do resultado.
A entrada de Fonteln é tipicamente uma porção de oito bits daFontel. Os oito bits representam o menor tipo de elemento de dados, umelemento de dados de byte em pacote 401. A entrada de Fonte2 é a porçãocorrespondente de oito bits da Fonte2. O controle de operação 2900 trans-mite os sinais de controle para ativar cada unidade de comparação, com afinalidade de executar a comparação exigida. Os sinais de controle são de-terminados a partir da relação para a comparação (por exemplo com sinalalgébrico maior do que) e o tamanho do elemento de dados (por exemplo,byte ou palavra). O sinal de próximo estágio é recebido a partir do controlede bit para essa unidade de comparação. As unidades de comparação sãoefetivamente combinadas pelas unidades de controle de bit, quando for usa-do um elemento de dados com tamanho de byte maior. Por exemplo, quan-do forem comparados os dados em pacote de palavra, a unidade de controlede bit entre a primeira unidade de comparação e a segunda unidade decomparação irá fazer com que as duas unidades de comparação atuemcomo uma unidade de comparação de dezesseis bits. Similarmente, a uni-dade de comparação entre as terceira e quarto unidades de comparação iráfazer com que estas duas unidades de comparação atuem como uma unida-de de comparação. Isto continua para os quatro elementos de dados de pa-lavra em pacote.
Dependendo da relação desejada e dos valores da Fontel, eFonte2, a unidade de comparação executa a comparação permitindo que oresultado da unidade de comparação de ordem mais superior seja propaga-do até a unidade de comparação de ordem inferior ou vice-versa. Isto é,cada unidade de comparação irá prover os resultados da comparação com ouso da informação comunicada pelo controlej2920 de bit. Se forem usadosos dados em pacote de palavra dupla, então quatro unidades de compara-ção atuam entre si para formar uma unidade de comparação com um com-primento de trinta e dois bits para cada elemento de dados. A saída do re-sultado de cada unidade de comparação representa o resultado da operaçãode comparação na porção da Fontel e Fonte2 da unidade de comparaçãoem que está operando.
O controlei2920 de bit é ativado a partir do controle de operação2900 através da ativaçãOj2906 dos dados em pacote. O controlei2920 de bitcontrola o próximo estágiO|2913 e o último estágiOi+i 2972. Assume-se, porexemplo, que a unidadei2911 de comparação seja responsável pelos oitobits menos significativos da Fontel e Fonte2, e uma unidadej+i 2971 sejaresponsável pelos próximos oito bits da Fontel e Fonte2. Se for executadauma comparação nos dados de byte em pacote, o controlej2920 de bit nãoirá permitir que a informação de resultado originária da unidadei+12971 sejacomunicada com a unidadei2911 de comparação, e vice-versa. Entretanto,se for executada uma comparação nas palavras em pacote, então o contro-Ιe12920 de bit irá permitir que a informação do resultado (em uma concretiza-ção, uma saturação de capacidade) originária da unidadei2911 de compara-ção seja comunicada à unidadei+ide comparação e a informação do resulta-do (em uma concretização, uma saturação de capacidade) originária da uni-dadei+12971 seja comunicada à unidadei2911 de comparação.
Por exemplo, na Tabela 39, é executada uma comparação debyte em pacote com sinal algébrico maior. Assume-se que a unidadei+1 2971de comparação opera no elemento de dados um, e a unidadei2911 de com-paração opera no elemento de dados zero. A unidade^ de comparação2971 compara os oito bits mais significativos de uma palavra e comunica ainformação do resultado através do último estágiOi+12972. A unidadei2911 decomparação compara os oito bits menos significativos de palavra e comuni-ca a informação do resultado através do próximo estágioi2913. Entretanto, ocontrole de operação 2900 irá fazer com que o controlei2920 de bit detenhaa propagação dessa informação de resultado, recebida a partir do últimoestágioi+12972 e do próximo estágioi2913, entre as unidades de comparação.
<table>table see original document page 91</column></row><table>
Tabela 39
Entretanto, se for executada uma palavra em pacote com sinalalgébrico maior do que a comparação, então o resultado da unidadei+12971de comparação será comunicado à unidade, de comparação 2911, e vice-versa. A Tabela 40 ilustra este resultado. Este tipo de comunicação seriaigualmente permitido para as comparações de palavra dupla em pacote.<table>table see original document page 92</column></row><table>
Tabela 40
Cada unidade de comparação é opcionalmente acoplada a umregistro de resultado. O registro de resultado temporariamente armazena oresultado da operação de comparação até que o resultado completo, Resul-tado[63:0]2960, possa ser transmitido ao registro DEST 605.
Para um circuito completo de comparação em pacote de ses-senta e quatro bits, são usadas oito unidades de comparação e sete unida-des de controle de bit. Tal circuito pode também ser usado para executaruma comparação nos dados desempacotados de sessenta e quatro bits,usando assim o mesmo circuito para executar a operação de comparaçãodesempacotada e a operação de comparação em pacote.Vantagens de Incluir a Operação de Comparação em Pacote Descrita noConjunto de Instruções
A instrução de comparação em pacote descrita armazena o re-sultado de comparação da Fonte1 e Fonte2 como uma máscara em pacote.Conforme anteriormente descrito, as bifurcações condicionais nos dadostornam-se imprevisíveis, e, conseqüentemente, o desempenho do processa-dor de custo, porque elas interrompem os algoritmos de prognóstico de bi-furcação. Entretanto, com a geração de uma máscara em pacote, esta ins-trução de comparação reduz o número de bifurcações condicionais combase nos dados. Por exemplo, a função (se Y > A, então X = X + B; ou X =X) pode ser executada nos dados em pacote, conforme mostrado abaixo naTabela 41 (os valores mostrados na Tabela 41 são mostrados em notaçãohexadecimal).
Comparação Maior do que da Fonte1, Fonte2<table>table see original document page 56</column></row><table>
TABELA 41
Conforme pode ser visto a partir do exemplo acima, as bifurca-ções condicionais não são mais exigidas. Uma vez que uma instrução debifurcação não é exigida, os processadores que especulativamente predizemas bifurcações não apresentam um decréscimo do desempenho, quando douso desta instrução de comparação para executar esta e outras operaçõessimilares. Dessa maneira, com a provisão desta instrução de comparação noconjunto de instruções suportado por um processador 109, o processador109 pode executar os algoritmos que exijam esta funcionalidade em um nívelmaior de desempenho.
ALGORITMOS EXEMPLIFICATIVOS DE MÚLTIPLOS MEIOS
Para ilustrar a versatilidade do conjunto de instruções descrito,são descritos abaixo diversos algoritmos exemplificativos de múltiplos meios.
Em alguns casos, as instruções de dados em pacote similares poderiam serusadas para a execução certas etapas nestes algoritmos. Várias etapas queexigem o uso de instruções de processador de finalidades gerais para ge-renciar o movimento de dados, a repetição e a bifurcação condicional tendosido omitidas nos seguintes exemplos.
1) Multiplicação de Números Complexos
A instrução de multiplicação-soma descrita pode ser usada paramultiplicar dois números complexos em uma única instrução, conforme mos-trado na Tabela 42a. A multiplicação de dois números complexos (porexemplo, T1 ii e r212) é executada de acordo com a seguinte equação: Componente Real = η . r2 . ii. 12Componente Imaginário = ri . i2 + r2 . h
Se esta instrução for implementada para ser completada a cadaciclo de relógio, a invenção pode multiplicar dois números complexos a cadaciclo de relógio.
Multiplicação-Soma da Fontel, Fonte2
<table>table see original document page 94</column></row><table>
Tabela 42a
Como outro exemplo, a Tabela 42b mostra as instruções usadaspara multiplicar entre si os três números complexos.
Multiplicação-Soma da Fontel, Fonte2
<table>table see original document page 94</column></row><table>Deslocamento em pacote para a direita, da Fontel, Fonte2
<table>table see original document page 95</column></row><table> Empacotamento do Resultado2, Resultado2 = <table>table see original document page 95</column></row><table>
Multiplicação-Soma do Resultado3, Fonte3 <table>table see original document page 95</column></row><table>
Tabela 42b
2) Operações de Acumulo de Multiplicação
As instruções descritas podem também ser usadas para multipli-car e acumular valores. Por exemplo, dois conjuntos de quatro elementos dedados (Ai_4e B^4) podem ser multiplicados e acumulados, conforme mostra-do abaixo na Tabela 43. Em uma concretização, cada uma das instruçõesmostradas na Tabela 43 é implementada para completar cada ciclo de reló-gio.
Multiplicação-Soma da Fontel, Fonte2<table>table see original document page 96</column></row><table>
Multiplicação-Soma da Fonte3, Fonte4
<table>table see original document page 96</column></row><table>
Soma Desempacotada do Resultadol, Resultado2
<table>table see original document page 96</column></row><table>
TABELA 43
Se o número de elementos de dados em cada conjunto excedera 8 e for um múltiplo de 4, a multiplicação e o acúmulo destes conjuntos exi-gem menos instruções, se executados conforme mostrado na Tabela 44abaixo.
Multiplicação-Soma da Fontel, Fonte2
<table>table see original document page 96</column></row><table><table>table see original document page 97</column></row><table>
Soma em pacote do Resultado1, Resultado2
<table>table see original document page 97</column></row><table>
Desempacotamento superior do Resultado3,Fonte5
<table>table see original document page 97</column></row><table>
Desempacotamento inferior do Resultado3,Fonte5
<table>table see original document page 97</column></row><table>
Soma em pacote do Resultado4, Resultado5 Resultado4
<table>table see original document page 97</column></row><table> 5 Tabela 44
Como outro exemplo, a Tabela 45 mostra a multiplicação e oacúmulo dos conjuntos AeBe conjuntos C e D, onde cada um destes con-juntos inclui 2 elementos de dados.Multiplicação-soma da Fontel, Fonte2
<table>table see original document page 98</column></row><table>
Tabela 45
Como outro exemplo, a Tabela 46 mostra a multiplicação e oacúmulo dos conjuntos AeBe dos conjuntos C e D, onde cada um destesconjuntos inclui 4 elementos de dados.
Multiplicação-soma da Fontel, Fonte2
<table>table see original document page 98</column></row><table>
Multiplicação-soma da Fonte3, Fonte4
<table>table see original document page 98</column></row><table>
Soma em pacote do Resultadol, Resutltado2
<table>table see original document page 98</column></row><table>
Tabela 46
3) Algoritmos de Produto de Pontos
O produto de pontos (também denominado de produto interno) éusado no processamento de sinal e nas operações de matriz. Por exemplo,o produto de pontos é usado quando da computação do produto de matrizes,da filtragem digital de operações (tais a filtragem FIR e IIR), e da computa-ção das seqüências de correlação. Uma vez que muitos algoritmos de com-pressão de fala (por exemplo, GSM, G,728, CELP e VSELP) e algoritmos decompressão de Alta Fidelidade (por exemplo, MPEG e codificação de sub-banda) fazem uso extenso da filtragem digital e computações de correlação,intensificando o desempenho do produto de pontos, o desempenho destesalgoritmos será também intensificado. O produto de pontos de duas seqüências A e B de comprimentoN é definido como:
N-1
Resultado = Σ Ai □ Bi i=0
A execução de um cálculo de produto de pontos torna extenso ouso da operação de acúmulo de multiplicação, onde elementos correspon-dentes de cada uma das seqüências são multiplicados entre si, e os resulta-dos são acumulados para formar o resultado de produto de pontos.
Com a inclusão das operações de movimento, de soma em pa-cote, de multiplicação-soma, e de deslocamento em pacote, a invençãopermite que o cálculo do produto de pontos seja executado com o uso dedados em pacote. Por exemplo, se o tipo de dados em pacote contendoquatro elementos de dezesseis bits for usado, o cálculo do produto de pon-tos pode ser executado em duas seqüências, cada qual contendo quatrovalores através:
1) do acesso dos quatro valores de dezesseis bits originários da seqüên-cia A para gerarem a Fontel com o uso de uma instrução de movi-mento;
2) do acesso dos quatro valores de dezesseis bits originários da seqüên-cia B para gerarem a Fonte2 com o uso de uma instrução de movi-mento; e
3) da multiplicação e do acúmulo, conforme anteriormente descrito com ouso de instruções de multiplicação-soma, soma em pacote e desloca-mento.
Para os vetores com mais do que apenas alguns elementos, oprocesso mostrado na Tabela 46 é usado e os resultados finais são soma-dos entre si no final. Outras instruções de suporte incluem as instruções empacote OR e XOR para inicializar o registro acumulador, a instrução de des-locamento em pacote para deslocar os valores indesejados no estágio finalda computação. As operações de controle de circuito são conseguidas como uso de instruções já existentes no conjunto de instruções do processador109.
4) Filtro de Circuito Bidimensional
Filtros de circuito bidimensionais são usados em certos algorit-mos de múltiplos meios. Por exemplo, os coeficientes de filtro mostradosabaixo na Tabela 47 podem ser usados nos algoritmos de conferência devídeo para executar um filtro passa-baixo nos dados de pixel.
<table>table see original document page 100</column></row><table>
Tabela 47
Para calcular o novo valor de um pixel em localização (x,y), éusada a seguinte equação:
Pixel Resultante = (x-1,y-1) + 2(x,y-1) + (x+1,y-1) + 2(x-1,y) + 4(x,y) +2(x+1 ,y)+(x-1 ,y+1) + 2(x,y+1) + (x+1 ,y+1)
Com a inclusão de empacotamento, desempacotamento, movi-mento, deslocamento em pacote, e uma soma em pacote, a invenção per-mite que um filtro de circuito bidimensional seja executado com o uso de da-dos em pacote. De acordo com uma implementação do filtro de circuito ante-riormente descrito, este filtro de circuito é aplicado como dois filtros unidi-mensionais simples; isto é, o filtro bidimensional acima pode ser aplicadocomo dois filtros 121. O primeiro filtro se encontra na direção horizontal, en-quanto o segundo filtro encontra-se na direção vertical.
A Tabela 48 mostra uma representação de um bloco de 8x8 dedados de pixel.
<table>table see original document page 101</column></row><table>
Tabela 48
As seguintes etapas são executadas para implementar a passa-gem horizontal do filtro neste bloco de 8x8 de dados de pixel:
1) acessar oito valores de oito bits como dados em pacote com ouso de uma instrução de movimento;
2) desempacotar os oito pixels de oito bits em dados em pacote de 16 bits contendo quatro pixels de 8 bits (Fonte1) para manter a precisãodurante os acúmulos;
3) duplicar a Fonte1 duas vezes para gerar a Fonte2 e Fonte3;
4) executar um deslocamento desempacotado para a direitaatravés de 16 bits na Fonte1;
5) executar um deslocamento desempacotado para a esquerdaatravés de 16 bits na Fonte3;
6) gerar (Fonte1 + 2*Fonte2 + Fonte3) através da execução dasseguintes somas em pacote:
a) Fonte1 + Fonte 1 + Fonte2, b) Fonte 1 + Fonte1 + Fonte2, c) Fonte1 + Fonte1 + Fonte3;
7) armazenar os dados de palavra em pacote resultantes comoparte de uma disposição de resultado intermediária de 8x8; e
8) repetir estas etapas até que toda a disposição de resultadointermediária de 8x8 seja gerada, conforme mostrado na Tabela 49 abaixo(por exemplo, IA0 representa o resultado intermediário para A0 originário daTabela 49).
<table>table see original document page 102</column></row><table>
Tabela 49
As seguintes etapas são executadas para implementarem apassagem vertical do filtro na disposição de resultado intermediário de 8x8:
1) acessar um bloco de dados de 4x4 a partir da disposição deresultado intermediário como dados em pacote usando uma instrução demovimento para gerar a Fontel, Fonte2, e Fonte3 (por exemplo, vide Tabela50, para um exemplo);
<table>table see original document page 102</column></row><table>
Tabela 50
2) gerar (Fonte 1 + 2*Fonte2 + Fonte3) através da execução dasseguintes somas em pacote:
a) Fontel = Fontel + Fonte2,
b) Fontel = Fontel + Fonte2,c) Fontel = Fontel + Fonte3;
3) executar um deslocamento em pacote para a direita atravésde 4 bits na Fontel resultante para gerar a soma dos pesos -- isto é, efeti-vamente dividindo por 16;
4) empacotar a Fontel resultante com a saturação para conver-ter os valores de 16 bits de volta para os valores de pixel de 8 bits;
6) armazenar os dados de byte em pacote resultantes comoparte de uma disposição de resultado de 8x8 (com relação ao exemplo mos-trado na Tabela 50, estes quatro bytes representam os novos valores de pi-xel para B0, B1, B2 e B3); e
7) repetir estas etapas até que toda a disposição de resultado de8x8 seja gerada.
Vale por enquanto notar que as fileiras de topo e de base dadisposição de resultado de 8x8 são determinadas com o uso de um algorit-mo diferente que não está descrito aqui, de modo que não obscureça a in-venção.
Desse modo, com a provisão no processador 109 das instruçõesde empacotamento, desempacotamento, movimento, deslocamento em pa-cote, e soma em pacote, a invenção apresenta um aumento significativo nodesempenho sobre os processadores de finalidades gerais da técnica ante-rior, os quais têm que executar as operações exigidas por tais elementos dedados dos filtros 1 de uma vez.
5) Estimativa de Movimento
A estimativa de movimento é usada nas diversas aplicações demúltiplos meios (por exemplo, conferência de vídeo e MPEG (repetição dedisco de vídeo de alta qualidade). Em relação à conferência de vídeo, a es-timativa de movimento é usada para reduzir a quantidade de dados que temque ser transmitida entre os terminais. A estimativa de movimento trabalhacom a divisão dos quadros de vídeo em blocos de vídeo de tamanho fixo.
Para cada bloco no Quadrai, é determinado se há um bloco contendo umaimagem similar no Quadro2. Se tal bloco estiver contido no Quadro2, essebloco pode ser descrito com uma referência de vetor de movimento no Qua-drol. Desse modo, além de transmitir todos os dados que representam essebloco, apenas um vetor de movimento precisa ser transmitido ao terminal derecebimento. Por exemplo, se um bloco no Quadrol for similar e na mesmatela coordenadas como um bloco no Quadro2, apenas um vetor de movi-mento de 0 precisa ser enviado para esse bloco. Contudo, se um bloco no
Quadrol for similar a um bloco no Quadro2, mas em diferentes coordenadasde tela do que um bloco no Quadro2, apenas um vetor de movimento queindica a nova localização desse bloco precisará ser enviado. De acordo comuma implementação, para determinar se um blocoA no Quadrol é similar aum bloco B no Quadro2, será determinada a soma das diferenças absolutasentre os valores de pixel. Quanto mais inferior a soma, mais similar o bloco Aé do bloco B (isto é, se a soma for 0), o bloco A será idêntico ao bloco B).
Com a inclusão das operações de movimento, de desempaco-tamento, de soma em pacote, de subtração em pacote com saturação, eoperações lógicas, a invenção permite que a estimativa de movimento sejaexecutada com o uso de dados em pacote. Por exemplo, se dois blocos devídeo de 16x16 forem representados pelas duas disposições de valores depixel de 8 bits armazenados como dados em pacote, a diferença absolutados valores de pixel nestes blocos pode ser calculada:
1) acessando oito valores de 8 bits originários do bloco A paragerarem a Fontel com o uso de uma instrução de movimento;
2) acessando oito valores de 8 bits originários do bloco B paragerarem a Fonte2 com o uso de uma instrução de movimento;
3) executando uma subtração em pacote com saturação parasubtrair a Fontel da Fonte2 gerando a Fonte3- Através da subtração comsaturação, a Fonte 3 irá conter apenas os resultados positivos desta subtra-ção (isto é, os resultados negativos serão zerados);
4) executando uma subtração em pacote com saturação parasubtrair a Fonte2 da Fontel gerando a Fonte 4~ Com a subtração com satu-ração, a Fonte 4 irá conter apenas os resultados positivos desta subtração(isto é, os resultados negativos serão zerados);
5) executando uma operação OR em pacote na Fonte3 e Fonte4para produzirem a Fonte5. Com a execução desta operação OR1 a Fonte5contém o valor absoluto da Fontel e Fonte2;
6) repetindo estas etapas até que os blocos de 16x16 tenhamsido processados.
Os valores absolutos de 8 bits resultantes são desempacotadosem elementos de dados de 16 bits para permitir a precisão de 16 bits, e de-pois somados com o uso de somas em pacote.
Dessa maneira, com a provisão no processador 109 das opera-ções de movimento, de desempacotamento, de soma em pacote, de subtra-ção em pacote com saturação e operações lógicas, a invenção proporcionaum aumento significativo do desempenho sobre os processadores de finali-dades gerais da técnica anterior que têm que executar as adições e as dife-renças absolutas do cálculo de estimativa de movimento de um elemento dedados de cada vez.
6)Transformação Discreta de Cosseno
A Transformação Discreta de Cosseno (DCT) é uma função bemconhecida usada em muitos algoritmos de processamento de sinal. Os algo-ritmos de compressão de imagem e vídeo, em particular, tornam o uso destatransformação extensa.
Nos algoritmos de compressão de imagem e vídeo, DCT(Transformação Discreta de Cosseno) é usada para transportar um bloco depixels da representação espacial para a representação de freqüência. Narepresentação de freqüência, a informação de modelo é dividida em compo-nentes de freqüência, alguns dos quais são mais importantes do que outros.
O algoritmo de compressão seletivamente quantiza ou descarta os compo-nentes de freqüência que não afetam contrariamente os conteúdos de mo-delo reconstruído. Desta maneira, é alcançada a compressão.
Há muitas implementações de DCT (Transformação Discreta deCosseno), a mais popular sendo algum tipo de processo de transformaçãorápida modelado com base no fluxo de computação de Transformação Rápi-da de Fourier (FFT). Na transformação rápida, uma transformação de ordemN é trazida até uma combinação de transformações de ordem N/2 e o resul-tado combinado. Esta decomposição pode ser executada até que a trans-formação de ordem 2 menor seja alcançada. Este núcleo de transformaçãoelementar 2 é freqüentemente mencionado como operação borboleta. A ope-ração borboleta é expressa como segue: X = a*x+b*yY = c*x-d*y
onde, a, b, c e d são denominados de coeficiente, χ e y são os dados de en-trada, e X e Y são as saídas de transformação.
Com a inclusão das operações de movimento, multiplicação-soma, e de deslocamento em pacote, a invenção permite que o cálculo daDCT (Transformação Discreta de Cosseno) seja executado com o uso dedados em pacote, da seguinte maneira:
1) acessando os dois valores de 16 bits que representam χ e ypara gerar a Fontel (vide Tabela 51 abaixo) com o uso de instruções de mo-vimento e de desempacotamento;
2) gerando a Fonte2, conforme mostrado na Tabela 51 abaixo.Deve ser notado que a Fonte2 pode ser reutilizada sobre diversas operaçõesde borboleta; e
3) executando uma instrução de multiplicação-soma com o usoda Fontel e da Fonte2 para gerar o Resultado (vide Tabela 51 abaixo).
Tabela 51
Em algumas situações, os coeficientes da operação borboleta é1. Para estes casos, a operação borboleta degenera-se simplesmente emsomas e subtrações que possam ser executadas com o uso de instruções desoma em pacote e de subtração em pacote.
Um documento do IEEE (Instituto de Engenheiros Elétricos eEletrônicos) especifica a precisão com a qual a DCT (Transformação Dis-creta de Cosseno) inversa deve ser executada para a conferência de vídeo.(Vide, Sociedade de Sistemas e Circuitos do IEEE, "Especificações Padrãodo IEEE para as Implementações de Transformação Discreta de CossenoInversa de 8x8", Std. IEEE 1180-1990, IEEE Inc. 345 East 47th St., NY, NY10017, USA, de 18 de março de 1991). A precisão exigida é encontradaatravés da instrução de multiplicação-soma descrita, porque ela usa entra-das de 16 bits para gerar saídas de 32 bits.
Dessa maneira, com a provisão no processador 109 de opera-ções de movimento, de multiplicação-soma e de deslocamento em pacote, ainvenção apresenta um significativo aumento no desempenho sobre os pro-cessadores de finalidades gerais da técnica anterior, que têm que executaras adições e multiplicações do cálculo de DCT (Transformação Discreta deCosseno) de um elemento de dados de cada vez.
Concretizações Alternativas
Enquanto a invenção foi descrita, na qual cada uma das dife-rentes operações possui circuitos separados, concretizações alternativaspoderiam ser implementadas, de tal forma que certos circuitos fossem com-partilhados pelas diferentes operações. Por exemplo, em uma concretização,são usados os seguintes circuitos: 1) uma única unidade lógica aritmética(ALU) para executar as operações de soma em pacote, de subtração empacote, de comparação em pacote e lógica em pacote; 2) uma unidade decircuitos para executar as operações de empacotamento, desempacota-mento e de deslocamento em pacote; 3) uma unidade de circuitos para exe-cutar as operação de multiplicação em pacote e de multiplicação-soma; e 4)uma unidade de circuitos para executar a operação de contagem de ocupa-ção.
Os respectivos termos correspondentes são usados aqui parafazer referência à relação predeterminada entre os elementos de dados ar-mazenados em um ou mais dados em pacote. Em uma concretização, estarelação baseia-se nas posições de bit dos elementos de dados nos dadosem pacote. Por exemplo, o elemento de dados 0 (por exemplo, armazenadonas posições de bit 0-7 no formato de byte em pacote) de primeiros dadosem pacote corresponde aos elementos de dados 0 (por exemplo, armazena-dos nas posições de bit 0-7 no formato de byte em pacote) de segundos da-dos em pacote. Entretanto, esta relação pode diferir nas concretizações al-ternativas. Por exemplo, elementos de dados correspondentes nos primeiroe segundo dados em pacote podem ser de diferentes tamanhos. Como outroexemplo, além do elemento de dados menos significativo dos primeiro dadosem pacote que correspondem ao elemento de dados menos significativo dossegundos dados em pacote (e assim por diante), os elementos de dados nosprimeiros e segundos dados em pacote podem se corresponder em algumaoutra ordem. Como outro exemplo, ao invés de se ter uma correspondênciade 1 para 1 dos elementos de dados nos primeiros e segundos dados empacote, os elementos de dados podem se corresponder em uma proporçãodiferente (por exemplo, os primeiros dados em pacote podem ter um ou maiselementos de dados que correspondem a um ou mais elementos de dadosdiferentes nos segundos dados em pacote).
Enquanto a invenção foi descrita em termos das diversas con-cretizações, aqueles versados na técnica irão reconhecer que a invençãonão é limitada às concretizações descritas. O processo e aparelho da inven-ção podem ser praticados com modificações e alterações que estejam den-tro do espírito e escopo das reivindicações anexas. A descrição deve, dessamaneira, ser considerada ilustrativa e não como limitando a invenção.

Claims (31)

1. Método para realizar operações de multiplicação-adição emdados em pacote compreendendo as etapas de:receber uma instrução que especifica as localizações de um pri-meiro dado em pacote possuindo uma primeira pluralidade de elementos dedados e um segundo dado em pacote possuindo uma segunda pluralidadede elementos de dados, cada um dos elementos de dados do primeiro dadoem pacote correspondendo a um elemento de dado diferente do segundodado em pacote; e gerar um resultado de dado em pacote pela execução da instru-ção, caracterizado pelo fato de que o dado em pacote resultante possuiuma pluralidade de elementos de dados resultantes, cada um dos elementosde dados resultantes compreendendo um somatório de produtos dos ele-mentos de dados correspondentes ao primeiro dado em pacote e ao segun-do dado em pacote.
2. Método, de acordo com a reivindicação 1, caracterizado pelofato de que ainda compreende a etapa de armazenar o resultado de dadosem pacote sobre os primeiros dados em pacote ou sobre os segundos dadosem pacote.
3. Método, de acordo com a reivindicação 1 ou 2, caracterizadopelo fato de que cada um dos elementos de dados resultantes possui umaprecisão maior do que os elementos de dados dos primeiros dados em paco-te.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que os elementos de dados dos primeiro e segundo dados em pacote compreendem elementos de dados de palavrasem pacote, e em que os elementos de dados resultantes compreendem e-Iementos de dados de palavras duplas em pacote.
5. Método, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que ainda compreende a etapa de completar a execução da instrução sem somar a pluralidade de elementos de dadosresultantes.
6. Método, de acordo com qualquer uma das reivindicações 1 a-5, caracterizado pelo fato de que ainda compreende as etapas de:acessar o segundo dado em pacote a partir de uma localizaçãoespecificada pelos bits zero a dois da instrução;acessar o primeiro dado em pacote a partir de uma localizaçãoespecificada pelos bits três a cinco da instrução;armazenar o dado em pacote resultante em um destino especifi-cado pelos bits três a cinco da instrução.
7. Método, de acordo com qualquer uma das reivindicações 1 a-6, caracterizado pelo fato de que o primeiro dado em pacote possui um Ai,um A2, um A3, e um A4 como elementos de dados, o segundo pacote de da-dos possui um Bi, um B2, um B3 e um B4 como elementos de dados e a ge-ração do dado em pacote resultante compreende gerar um primeiro elemen-to de dados resultante incluindo (A1 χ Bi + A2 χ B2), e um segundo elementode dados resultante incluindo (A3 χ B3 + A4 χ B4).
8. Aparelho (109) para realizar operações de multiplicação-adição em dados em pacote compreendendo:um decodificador (165) para receber e decodificar uma instruçãoque especifica localizações (1531,1533) de um primeiro dado em pacotepossuindo uma primeira pluralidade de elementos de dados e um segundodado em pacote possuindo uma segunda pluralidade de elementos de da-dos, cada um dos elementos de dados do primeiro dado em pacote corres-pondendo a um elemento de dados diferente do segundo dado em pacote; euma unidade de execução (130) em comunicação com o decodi-ficador (165) para gerar um dado em pacote resultante em resposta ao de-codificador (165) decodificando a instrução, caracterizado pelo fato de queo dado em pacote resultante tem uma pluralidade de elementos de dadosresultantes, cada um dos elementos de dados resultantes compreendendoum somatório de produtos dos elementos de dados correspondentes dosprimeiro e segundo dados em pacote.
9. Aparelho, de acordo com a reivindicação 8, caracterizadopelo fato de que a unidade de execução (130) armazena os dados em pa-cote resultantes sobre os primeiro ou segundo dados em pacote.
10. Aparelho, de acordo com a reivindicação 8 ou 9, caracteri-zado pelo fato de que a unidade de execução (130) gera elementos de da-dos resultantes que possuem uma precisão maior que os elementos de da-dos do primeiro dado em pacote.
11. Aparelho, de acordo com qualquer uma das reivindicações 8a 10, caracterizado pelo fato de que a unidade de execução (130) comple-ta a execução da instrução sem somar a pluralidade de elementos de dadosresultantes.
12. Aparelho, de acordo com qualquer uma das reivindicações 8a 11, caracterizado pelo fato de que o decodificador (165) decodifica umainstrução tendo um formato de instrução de 24 bits, em que os bits zero atédois da instrução especificam uma localização do segundo dado em pacotee em que os bits três até cinco da instrução especificam uma locação doprimeiro dado em pacote.
13. Aparelho, de acordo com qualquer uma das reivindicações 8a 12, caracterizado pelo fato de que a unidade de execução (130) gera umdado em pacote resultante tendo um elemento de dados resultante compre-endendo um somatório de dois produtos de elementos de dados correspon-dentes aos primeiro e segundo dados em pacote.
14. Aparelho, de acordo com qualquer uma das reivindicações 8a 13, caracterizado pelo fato de que o primeiro dado em pacote possui umAi, um A2, um A3, e um A4 como elementos de dados, em que o segundodado em pacote possui um Bi, um B2, um B3 e um B4 como elementos dedados e em que a unidade de execução (130) gera um dado em pacote re-sultante tendo um primeiro elemento de dados resultante incluindo (Αι χ Bi +A2 χ B2) e um segundo elemento de dados resultante incluindo (A3 χ B3 + A4XB4).
15. Aparelho, de acordo com qualquer uma das reivindicações 8a 14, caracterizado pelo fato de que o primeiro dado em pacote possui umAi, um A2, um A3, e um A4 como elementos de dados, em que o segundodado em pacote possui um Bi, um B2, um B3 e um B4 como elementos dedados e em que a unidade de execução (130) gera um dado em pacote re-sultante tendo um ou mais selecionados a partir de um primeiro elemento dedados resultante incluindo (A1 χ B1 - A2 χ B2) e um segundo elemento dedados resultante incluindo (A3 χ B3 - A4 χ B4).
16. Aparelho, de acordo com a reivindicação 8, caracterizadopelo fato de que um dado em pacotes compreende uma unicidade de da-dos que consiste em uma pluralidade de elementos de dados do mesmo ta-manho.
17. Aparelho, de acordo com a reivindicação 8, caracterizadopelo fato de que um dado em pacotes compreende uma unicidade de da-dos tendo todos os bits disponíveis usados para uma pluralidade de elemen-tos de dados do mesmo tamanho.
18. Aparelho, de acordo com a reivindicação 8, caracterizadopelo fato de que um registro usado para armazenar os dados em pacotes éimplementado para armazenar um número de bits que é maior do que o nú-mero de bits usado para os dados em pacote.
19. Método para realizar operações de multiplicação-adição emdados em pacote compreendendo as etapas de:receber uma primeira instrução, a primeira instrução de um for-mato de instrução compreendendo um primeiro código operacional (601), umprimeiro campo (602) para indicar um primeiro operando tendo uma primeirapluralidade de elementos de dados incluindo pelo menos os elementos dedados Ai, A2, A3 e A4, e um segundo campo (603) para indicar um segundooperando tendo uma segunda pluralidade de elementos de dados incluindopelo menos os elementos de dados Bi, B2, B3 e B4, cada um dos elementosde dados da primeira e da segunda pluralidade de elementos de dados ten-do um comprimento de N bits; earmazenar o dado em pacote tendo um comprimento de pelomenos 4N bits em um operando de destino arquiteturalmente visível em res-posta à primeira instrução caracterizado pelo fato de que o dado em paco-te é gerado pela realização da operação (Αι χ Bi) + (A2 χ B2) para gerar umprimeiro elemento de dado do dado em pacote, e pela realização da opera-ção (A3 χ B3) + (A4 χ B4) para gerar um segundo elemento de dados do dadoem pacote, cada um dos primeiro e segundo elementos de dados tendo umcomprimento de pelo menos 2N bits.
20. Método, de acordo com a reivindicação 19, caracterizadopelo fato de que ainda compreende a etapa de sobregravar a primeira plu-ralidade de elementos de dados do primeiro operando com o dado em paco-te do operando de destino.
21. Método, de acordo com a reivindicação 19 ou 20, caracteri-zado pelo fato de que o operando de destino é indicado pelo primeiro cam-po (602).
22. Método, de acordo com qualquer uma das reivindicações 19a 21, caracterizado pelo fato de que o primeiro campo (602) compreendeos bits três a cinco do formato de instrução e em que o segundo campo(603) compreende os bits zero a dois do formato de instrução.
23. Aparelho (109) para realizar operações de multiplicação-adição em dados em pacote compreendendo:um decodificador (165) para decodificar uma instrução tendo umprimeiro formato, o primeiro formato sendo operável para identificar um pri-meiro conjunto de dados em pacote incluindo quatro elementos A1, A2, A3 eA4, e para identificar um segundo conjunto de dados em pacote incluindoquatro elementos B1, B2, B3 e B4, o decodificador (165) iniciando um primeiroconjunto de operações no primeiro e no segundo conjunto de dados em pa-cote em resposta à decodificação da instrução; euma unidade de execução (130) para realizar um primeiro con-junto de operações iniciado pelo decodificador (165), caracterizado pelofato de que a unidade de execução (130) realiza uma primeira operaçãopara produzir um primeiro resultado incluindo um somatório de produtos, (A1χ B1) + (A2 χ B2), e para realizar uma segunda operação do primeiro conjuntode operações iniciado pelo decodificador para produzir um segundo resulta-do incluindo um somatório de produtos (A3 χ B3) + (A4 χ B4).
24. Aparelho, de acordo com a reivindicação 23, caracterizadopelo fato de que a unidade de execução (130) armazena o primeiro e o se-gundo resultados sobre o primeiro conjunto de dados em pacote ou sobre osegundo conjunto de dados em pacote.
25. Aparelho, de acordo com qualquer uma das reivindicações 23 ou 24, caracterizado pelo fato de que a unidade de execução (130) ge-ra um primeiro resultado que possui uma precisão maior do que a dos ele-mentos de dados do primeiro conjunto de dados em pacote.
26. Aparelho, de acordo com qualquer uma das reivindicações 23 a 25, caracterizado pelo fato de que a unidade de execução (130) com-pleta a execução da instrução sem somar o primeiro resultado com o segun-do resultado.
27. Aparelho, de acordo com qualquer uma das reivindicações 23 a 26, caracterizado pelo fato de que o decodificador (165) decodificauma instrução que possui um formato de 24 bits, em que os bits zero a doisda instrução especificam uma localização do segundo conjunto de dados empacote (603) e em que os bits três a cinco da instrução especificam uma lo-calização do primeiro conjunto de dados em pacote (602).
28. Aparelho, de acordo com qualquer uma das reivindicações 23 a 27, caracterizado pelo fato de que o primeiro conjunto de dados empacote também inclui mais quatro elementos A5, Αβ, A7 e As, e o segundoconjunto de dados em pacote também inclui mais quatro elementos B5, B6,B7 e B8, e a unidade de execução (130) realiza uma terceira operação doprimeiro conjunto de operações iniciado pelo decodificador (165) para pro-duzir um terceiro resultado incluindo um somatório de produtos (A5 χ B5) +(Αβ χ Βε) e para realizar uma quarta operação do primeiro conjunto de ope-rações iniciado pelo decodificador para produzir um quarto resultado incluin-do um somatório dos produtos (A7 χ B7) + (As χ Be).
29. Aparelho, de acordo com a reivindicação 23, caracterizadopelo fato de que um dado em pacotes compreende uma unicidade de da-dos que consiste em uma pluralidade de elementos de dados do mesmo ta-manho.
30. Aparelho, de acordo com a reivindicação 23, caracterizadopelo fato de que um dado em pacotes compreende uma unicidade de da-dos tendo todos os bits disponíveis usados para uma pluralidade de elemen-tos de dados do mesmo tamanho.
31. Aparelho, de acordo com a reivindicação 23, caracterizadopelo fato de que um registro usado para armazenar os dados em pacotes éimplementado para armazenar um número de bits que é maior do que o nú-mero de bits usado para os dados em pacote.
BRPI9612911-5A 1995-08-31 1996-07-17 aparelho e mÉtodo para realizar operaÇÕes multiplicaÇço-adiÇço em dados em pacote. BR9612911B1 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US52136095A 1995-08-31 1995-08-31

Publications (1)

Publication Number Publication Date
BR9612911B1 true BR9612911B1 (pt) 2010-12-14

Family

ID=24076444

Family Applications (2)

Application Number Title Priority Date Filing Date
BR9610095A BR9610095A (pt) 1995-08-31 1996-07-17 Conjunto de instruções para a operação em dados condensados
BRPI9612911-5A BR9612911B1 (pt) 1995-08-31 1996-07-17 aparelho e mÉtodo para realizar operaÇÕes multiplicaÇço-adiÇço em dados em pacote.

Family Applications Before (1)

Application Number Title Priority Date Filing Date
BR9610095A BR9610095A (pt) 1995-08-31 1996-07-17 Conjunto de instruções para a operação em dados condensados

Country Status (9)

Country Link
EP (2) EP1693742A3 (pt)
JP (1) JP3711147B2 (pt)
KR (1) KR19990044304A (pt)
CN (23) CN103092564B (pt)
AU (1) AU6677896A (pt)
BR (2) BR9610095A (pt)
HK (2) HK1099095A1 (pt)
TW (1) TW310406B (pt)
WO (1) WO1997008608A1 (pt)

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6738793B2 (en) 1994-12-01 2004-05-18 Intel Corporation Processor capable of executing packed shift operations
CN103092564B (zh) * 1995-08-31 2016-04-06 英特尔公司 执行乘加指令的处理器和对分组数据执行乘加操作的系统
US6145068A (en) * 1997-09-16 2000-11-07 Phoenix Technologies Ltd. Data transfer to a non-volatile storage medium
US5864703A (en) 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US7197625B1 (en) 1997-10-09 2007-03-27 Mips Technologies, Inc. Alignment and ordering of vector elements for single instruction multiple data processing
WO1999048025A2 (en) 1998-03-18 1999-09-23 Koninklijke Philips Electronics N.V. Data processing device and method of computing the cosine transform of a matrix
US6233671B1 (en) 1998-03-31 2001-05-15 Intel Corporation Staggering execution of an instruction by dividing a full-width macro instruction into at least two partial-width micro instructions
US6230253B1 (en) * 1998-03-31 2001-05-08 Intel Corporation Executing partial-width packed data instructions
US6230257B1 (en) 1998-03-31 2001-05-08 Intel Corporation Method and apparatus for staggering execution of a single packed data instruction using the same circuit
US7392275B2 (en) 1998-03-31 2008-06-24 Intel Corporation Method and apparatus for performing efficient transformations with horizontal addition and subtraction
US6192467B1 (en) * 1998-03-31 2001-02-20 Intel Corporation Executing partial-width packed data instructions
US7395302B2 (en) 1998-03-31 2008-07-01 Intel Corporation Method and apparatus for performing horizontal addition and subtraction
US7117342B2 (en) * 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
JP3336986B2 (ja) * 1999-02-03 2002-10-21 日本電気株式会社 信号処理プロセッサ及びそれに用いる丸め機能付き積和演算器
EP2267896A3 (en) * 1999-05-12 2013-02-20 Analog Devices, Inc. Method for implementing finite impulse response filters
US6678810B1 (en) 1999-12-30 2004-01-13 Intel Corporation MFENCE and LFENCE micro-architectural implementation method and system
US6671795B1 (en) 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US7039906B1 (en) * 2000-09-29 2006-05-02 International Business Machines Corporation Compiler for enabling multiple signed independent data elements per register
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7711763B2 (en) 2001-02-21 2010-05-04 Mips Technologies, Inc. Microprocessor instructions for performing polynomial arithmetic operations
US7818356B2 (en) 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US20040054877A1 (en) 2001-10-29 2004-03-18 Macy William W. Method and apparatus for shuffling data
US7739319B2 (en) 2001-10-29 2010-06-15 Intel Corporation Method and apparatus for parallel table lookup using SIMD instructions
JP3857614B2 (ja) 2002-06-03 2006-12-13 松下電器産業株式会社 プロセッサ
US7392368B2 (en) 2002-08-09 2008-06-24 Marvell International Ltd. Cross multiply and add instruction and multiply and subtract instruction SIMD execution on real and imaginary components of a plurality of complex data elements
WO2004015563A1 (en) 2002-08-09 2004-02-19 Intel Corporation Multimedia coprocessor control mechanism including alignment or broadcast instructions
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7293056B2 (en) * 2002-12-18 2007-11-06 Intel Corporation Variable width, at least six-way addition/accumulation instructions
US7139900B2 (en) 2003-06-23 2006-11-21 Intel Corporation Data packet arithmetic logic devices and methods
US7424501B2 (en) 2003-06-30 2008-09-09 Intel Corporation Nonlinear filtering and deblocking applications utilizing SIMD sign and absolute value operations
US7426749B2 (en) * 2004-01-20 2008-09-16 International Business Machines Corporation Distributed computation in untrusted computing environments using distractive computational units
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US8024551B2 (en) * 2005-10-26 2011-09-20 Analog Devices, Inc. Pipelined digital signal processor
US8127117B2 (en) * 2006-05-10 2012-02-28 Qualcomm Incorporated Method and system to combine corresponding half word units from multiple register units within a microprocessor
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US7958181B2 (en) 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
CN100461095C (zh) * 2007-11-20 2009-02-11 浙江大学 一种支持多模式的媒体增强流水线乘法单元设计方法
CN101685388B (zh) * 2008-09-28 2013-08-07 北京大学深圳研究生院 执行比较运算的方法和装置
US9747105B2 (en) 2009-12-17 2017-08-29 Intel Corporation Method and apparatus for performing a shift and exclusive or operation in a single instruction
US8504807B2 (en) 2009-12-26 2013-08-06 Intel Corporation Rotate instructions that complete execution without reading carry flag
WO2012137428A1 (ja) * 2011-04-08 2012-10-11 パナソニック株式会社 データ処理装置、及びデータ処理方法
WO2013095513A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Packed data operation mask shift processors, methods, systems, and instructions
US9703558B2 (en) * 2011-12-23 2017-07-11 Intel Corporation Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate
CN107741861B (zh) * 2011-12-23 2022-03-15 英特尔公司 用于混洗浮点或整数值的装置和方法
US9864602B2 (en) 2011-12-30 2018-01-09 Intel Corporation Packed rotate processors, methods, systems, and instructions
US9122475B2 (en) * 2012-09-28 2015-09-01 Intel Corporation Instruction for shifting bits left with pulling ones into less significant bits
US20140281418A1 (en) * 2013-03-14 2014-09-18 Shihjong J. Kuo Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US9405539B2 (en) * 2013-07-31 2016-08-02 Intel Corporation Providing vector sub-byte decompression functionality
US9513907B2 (en) * 2013-08-06 2016-12-06 Intel Corporation Methods, apparatus, instructions and logic to provide vector population count functionality
US9495155B2 (en) * 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
US20150227366A1 (en) * 2014-02-12 2015-08-13 Imagination Technologies Limited Processor with granular add immediates capability & methods
US10068652B2 (en) 2014-09-03 2018-09-04 Micron Technology, Inc. Apparatuses and methods for determining population count
US9891913B2 (en) * 2014-12-23 2018-02-13 Intel Corporation Method and apparatus for performing conflict detection using vector comparison operations
CN104778147B (zh) * 2015-04-14 2017-06-06 飞天诚信科技股份有限公司 一种基于协处理器的数据处理方法
US11204764B2 (en) * 2016-03-31 2021-12-21 Intel Corporation Processors, methods, systems, and instructions to Partition a source packed data into lanes
CN107766079B (zh) * 2016-08-19 2022-03-11 北京百度网讯科技有限公司 处理器以及用于在处理器上执行指令的方法
US10296292B2 (en) * 2016-10-20 2019-05-21 Advanced Micro Devices, Inc. Dynamic variable precision computation
US10409603B2 (en) * 2016-12-30 2019-09-10 Intel Corporation Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
US10162633B2 (en) * 2017-04-24 2018-12-25 Arm Limited Shift instruction
CN107145334B (zh) * 2017-04-26 2020-10-09 龙芯中科技术有限公司 常量获取方法、装置、处理器及计算机可读存储介质
CN109388427A (zh) * 2017-08-11 2019-02-26 龙芯中科技术有限公司 向量处理方法、向量处理单元和微处理器
CN107861709B (zh) * 2017-12-01 2021-04-02 中国兵器装备集团自动化研究所 适应前端高速处理的累加器和功率谱累加器及其累加方法
CN108595149B (zh) * 2018-04-28 2021-05-04 天津芯海创科技有限公司 可重构乘加运算装置
CN110554886B (zh) * 2018-05-30 2021-12-10 赛灵思公司 数据拆分结构、方法及其片上实现
WO2020039522A1 (ja) * 2018-08-22 2020-02-27 日本電気株式会社 情報処理装置、情報処理方法及びプログラム
CN109783054B (zh) * 2018-12-20 2021-03-09 中国科学院计算技术研究所 一种rsfq fft处理器的蝶形运算处理方法及系统
CN110221807B (zh) * 2019-06-06 2021-08-03 龙芯中科(合肥)技术有限公司 数据移位方法、装置、设备及计算机可读存储介质
CN111258538B (zh) * 2020-01-13 2023-07-21 电子科技大学 一种基于fpga的大位宽高性能加法器电路
CN112230886B (zh) * 2020-09-11 2022-11-08 清华大学 免除Toom-Cook的处理装置和基于其的模乘获取方法
CN112181354B (zh) * 2020-10-12 2021-08-10 上海芯旺微电子技术有限公司 一种移位饱和同步处理的方法及其应用
CN112181355B (zh) * 2020-10-12 2021-08-06 上海芯旺微电子技术有限公司 一种移位饱和处理方法及其应用
US20230297371A1 (en) * 2022-03-15 2023-09-21 Intel Corporation Fused multiple multiplication and addition-subtraction instruction set

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE310008B (pt) * 1965-06-30 1969-04-14 Ericsson Telefon Ab L M
JPS5955546A (ja) * 1982-09-24 1984-03-30 Fujitsu Ltd フア−ムウエア処理装置
JPS60134974A (ja) * 1983-12-23 1985-07-18 Hitachi Ltd ベクトル処理装置
JPS6284335A (ja) * 1985-10-09 1987-04-17 Hitachi Ltd 乗算回路
JPS6297060A (ja) * 1985-10-23 1987-05-06 Mitsubishi Electric Corp デイジタルシグナルプロセツサ
JP2634609B2 (ja) * 1987-10-16 1997-07-30 富士通テン株式会社 データ転送装置
US4985848A (en) * 1987-09-14 1991-01-15 Visual Information Technologies, Inc. High speed image processing system using separate data processor and address generator
US4933847A (en) * 1987-11-17 1990-06-12 International Business Machines Corporation Microcode branch based upon operand length and alignment
US5126964A (en) * 1988-04-01 1992-06-30 Digital Equipment Corporation High performance bit-sliced multiplier circuit
EP0344347B1 (de) * 1988-06-02 1993-12-29 Deutsche ITT Industries GmbH Einrichtung zur digitalen Signalverarbeitung
US5073969A (en) * 1988-08-01 1991-12-17 Intel Corporation Microprocessor bus interface unit which changes scheduled data transfer indications upon sensing change in enable signals before receiving ready signal
CA1311063C (en) * 1988-12-16 1992-12-01 Tokumichi Murakami Digital signal processor
US5047973A (en) * 1989-04-26 1991-09-10 Texas Instruments Incorporated High speed numerical processor for performing a plurality of numeric functions
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
JP2984463B2 (ja) * 1991-06-24 1999-11-29 株式会社日立製作所 マイクロコンピュータ
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
US5257214A (en) * 1992-06-16 1993-10-26 Hewlett-Packard Company Qualification of register file write enables using self-timed floating point exception flags
US5263125A (en) * 1992-06-17 1993-11-16 Motorola, Inc. Circuit and method for evaluating fuzzy logic rules
US5295229A (en) * 1992-06-17 1994-03-15 Motorola, Inc. Circuit and method for determining membership in a set during a fuzzy logic operation
EP0581986A1 (de) * 1992-08-04 1994-02-09 Siemens Nixdorf Informationssysteme Aktiengesellschaft Datenverarbeitungsanlage mit Verarbeitung von Aufbereitungsbefehlen
JPH0682269A (ja) * 1992-09-03 1994-03-22 Matsushita Electric Ind Co Ltd エンコーダ信号逓倍回路
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
US5375080A (en) * 1992-12-18 1994-12-20 Xerox Corporation Performing arithmetic on composite operands to obtain a binary outcome for each multi-bit component
US5717616A (en) * 1993-02-19 1998-02-10 Hewlett-Packard Company Computer hardware instruction and method for computing population counts
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
DE69424626T2 (de) * 1993-11-23 2001-01-25 Hewlett Packard Co Parallele Datenverarbeitung in einem Einzelprozessor
US5442581A (en) * 1993-11-30 1995-08-15 Texas Instruments Incorporated Iterative division apparatus, system and method forming plural quotient bits per iteration
CN1099081C (zh) * 1994-01-29 2003-01-15 世嘉企业股份有限公司 信息处理装置
GB2287333B (en) * 1994-03-11 1998-02-11 Advanced Risc Mach Ltd Data processing multiplier
US5557734A (en) * 1994-06-17 1996-09-17 Applied Intelligent Systems, Inc. Cache burst architecture for parallel processing, such as for image processing
JP3579087B2 (ja) * 1994-07-08 2004-10-20 株式会社日立製作所 演算器およびマイクロプロセッサ
CN103092564B (zh) * 1995-08-31 2016-04-06 英特尔公司 执行乘加指令的处理器和对分组数据执行乘加操作的系统

Also Published As

Publication number Publication date
CN103064653A (zh) 2013-04-24
CN103064651A (zh) 2013-04-24
WO1997008608A1 (en) 1997-03-06
CN103064649A (zh) 2013-04-24
EP0847551A4 (en) 2001-11-21
CN103383639A (zh) 2013-11-06
CN103064652B (zh) 2016-07-20
CN103455304B (zh) 2016-04-27
CN103455304A (zh) 2013-12-18
CN103064653B (zh) 2016-05-18
CN103345380A (zh) 2013-10-09
CN103064651B (zh) 2016-01-27
CN1534458B (zh) 2010-05-26
BR9610095A (pt) 1999-02-17
JP3711147B2 (ja) 2005-10-26
CN102073475A (zh) 2011-05-25
CN102073475B (zh) 2015-05-13
CN103092564A (zh) 2013-05-08
HK1144974A1 (en) 2011-03-18
TW310406B (pt) 1997-07-11
CN101794212A (zh) 2010-08-04
CN1515994A (zh) 2004-07-28
CN102707922B (zh) 2015-10-07
CN1431580A (zh) 2003-07-23
EP1693742A2 (en) 2006-08-23
CN1252587C (zh) 2006-04-19
CN102707922A (zh) 2012-10-03
CN103064649B (zh) 2016-03-02
HK1099095A1 (en) 2007-08-03
CN103064650B (zh) 2016-02-24
CN1225688C (zh) 2005-11-02
CN103064652A (zh) 2013-04-24
CN101794212B (zh) 2015-01-07
CN1892589A (zh) 2007-01-10
CN103092563B (zh) 2016-05-18
EP1693742A3 (en) 2010-01-06
KR19990044304A (ko) 1999-06-25
CN1534453A (zh) 2004-10-06
CN1892589B (zh) 2011-02-23
CN103383639B (zh) 2016-05-18
CN103092562B (zh) 2016-05-18
CN1264085C (zh) 2006-07-12
CN1149469C (zh) 2004-05-12
CN103092564B (zh) 2016-04-06
EP0847551A1 (en) 1998-06-17
CN100380312C (zh) 2008-04-09
CN101794213A (zh) 2010-08-04
CN1200822A (zh) 1998-12-02
CN101930352A (zh) 2010-12-29
CN101930352B (zh) 2016-05-18
CN103092563A (zh) 2013-05-08
CN1534458A (zh) 2004-10-06
CN101794213B (zh) 2014-09-17
CN1523492A (zh) 2004-08-25
CN103345380B (zh) 2016-05-18
AU6677896A (en) 1997-03-19
CN103092562A (zh) 2013-05-08
EP0847551B1 (en) 2012-12-05
CN103064650A (zh) 2013-04-24
JPH11511575A (ja) 1999-10-05

Similar Documents

Publication Publication Date Title
BR9612911B1 (pt) aparelho e mÉtodo para realizar operaÇÕes multiplicaÇço-adiÇço em dados em pacote.
US8745119B2 (en) Processor for performing multiply-add operations on packed data
US5859997A (en) Method for performing multiply-substrate operations on packed data
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
US7395298B2 (en) Method and apparatus for performing multiply-add operations on packed data
US8195732B2 (en) Methods and apparatus for single stage Galois field operations

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B06A Patent application procedure suspended [chapter 6.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 14/12/2010, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE AS ANUIDADES EM DEBITO

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: MANUTENCAO DA EXTINCAO - ART. 78 INCISO IV DA LPI