BR112015030098B1 - Métodos, sistemas e instruções de processadores de predicação de elemento de dados compactados - Google Patents

Métodos, sistemas e instruções de processadores de predicação de elemento de dados compactados Download PDF

Info

Publication number
BR112015030098B1
BR112015030098B1 BR112015030098-7A BR112015030098A BR112015030098B1 BR 112015030098 B1 BR112015030098 B1 BR 112015030098B1 BR 112015030098 A BR112015030098 A BR 112015030098A BR 112015030098 B1 BR112015030098 B1 BR 112015030098B1
Authority
BR
Brazil
Prior art keywords
compressed data
processor
instruction
bits
masked
Prior art date
Application number
BR112015030098-7A
Other languages
English (en)
Other versions
BR112015030098A2 (pt
Inventor
Bret L. Toll
Buford M. Guy
Mishali Naik
Ronak Singhal
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BR112015030098A2 publication Critical patent/BR112015030098A2/pt
Publication of BR112015030098B1 publication Critical patent/BR112015030098B1/pt

Links

Images

Classifications

    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/30018Bit or string instructions
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

MÉTODOS, SISTEMAS E INSTRUÇÕES DE PROCESSADORES DE PREDICAÇÃO DE ELEMENTO DE DADOS COMPACTADOS Trata-se de um processador que inclui um primeiro modo no qual o processador não deve usar mascaramento de operação de dados compactados e um segundo modo no qual o processador deve usar mascaramento de operação de dados compactados. Uma unidade de decodificação para decodificar uma instrução de dados compactados não mascarada para uma determinada operação de dados compactados no primeiro modo e para decodificar uma instrução de dados compactados mascarada para uma versão mascarada da determinada operação de dados compactados no segundo modo. As instruções têm um mesmo comprimento de instrução. A instrução mascarada tem bit(s) para especificar uma máscara. A(s) unidade(s) de execução são acopladas à unidade de decodificação. A(s) unidade(s) de execução, em resposta à unidade de decodificação que decodifica a instrução não mascarada no primeiro modo, deve(devem) realizar a determinada operação de dados compactados. A (s) unidade(s) de execução, em resposta à unidade de decodificação que decodifica a instrução mascarada no segundo modo, deve(devem) realizar a versão mascarada da certa operação de dados compactados.

Description

HISTÓRICO CAMPO DA TÉCNICA
[0001] As modalidades descritas no presente documento, em geral, referem-se a processadores. Em particular, as modalidades descritas no presente documento, em geral, se referem a processadores que têm capacidade para processar dados compactados.
INFORMAÇÕES DE HISTÓRICO
[0002] Muitos processadores têm arquiteturas de Instruções Únicas e Múltiplos Dados (SIMD). Em arquiteturas de SIMD, em vez de uma instrução em escala que opera em apenas um elemento de dados ou par de elementos de dados, uma instrução de dados compactados, instrução de vetor ou instrução de SIMD podem operar em múltiplos elementos de dados ou múltiplos pares de elementos de dados simultaneamente (por exemplo, em paralelo). O processador pode ter hardware de execução paralelo responsivo à instrução de dados compactados para realizar as múltiplas operações nos múltiplos elementos de dados simultaneamente (por exemplo, em paralelo).
[0003] Em arquiteturas de SIMD, múltiplos elementos de dados podem ser compactados dentro de uma localização de registro ou memória como dados compactados ou dados de vetor. Em dados compactados, os bits da localização de registro ou outra localização de armazenamento podem ser divididos de modo lógico em uma sequência de múltiplos elementos de dados. Cada um dos elementos de dados pode representar uma peça individual de dados que são armazenados na localização de registro ou outra localização de armazenamento junto com outros elementos de dados que têm comumente o mesmo tamanho. Por exemplo, um registro de amplitude de 138 bits pode ter dois elementos de dados compactados de amplitude de 64 bits, quatro elementos de dados compactados de amplitude de 32 bits, oito elementos de dados compactados de amplitude de 16 bits ou dezesseis elementos de dados compactados de amplitude de 8 bits. Cada um dos elementos de dados comumente compactados representa uma peça individual separada de dados (por exemplo, uma cor de um pixel, uma coordenada gráfica, etc.) que pode ser operado separadamente uns dos outros.
[0004] Representativamente, um tipo de instrução de dados compactados, instrução de vetor ou instrução de SIMD (por exemplo, uma instrução de adição compactada) pode especificar que uma única operação de dados compactados (por exemplo, adição) pode ser realizada em todos os pares correspondentes de elementos de dados a partir de dois operandos de dados compactados de fonte de uma maneira vertical para gerar um destino ou dados compactados de resultado. Os operandos de dados compactados de fonte podem ser do mesmo tamanho, podem conter elementos de dados da mesma largura e, desse modo, cada um pode conter o mesmo número de elementos de dados. Os elementos de dados de fonte nas mesmas posições de bit nos dois operandos de dados compactados de fonte podem representar pares de elementos de dados correspondentes. A operação de dados compactados pode ser realizada separada ou substancialmente de modo independente em cada um desses pares de elementos de dados correspondentes de fonte para gerar um número correspondente de elementos de dados de resultado e, desse modo, cada par de elementos de dados correspondentes de fonte pode ter um elemento de dados de resultado correspondente. Tipicamente, os elementos de dados de resultado para tal instrução estão na mesma ordem e os mesmos, em geral, têm o mesmo tamanho.
[0005] Além do tipo exemplificativo de instrução de dados compactados, há uma variedade de outros tipos de instruções de dados compactados. Por exemplo, há aqueles que têm apenas um operando de dados compactados de fonte. Por exemplo, uma instrução de troca de dados compactados pode trocar de modo independente cada elemento de dados de dados compactados de fonte únicos para produzir dados compactados de resultado. Outras instruções de dados compactados podem operar em mais de dois operandos de dados compactados de fonte. Além disso, outras instruções de dados compactados podem operar de uma maneira horizontal em elementos de dados dentro do mesmo operando de dados compactados em vez de uma maneira vertical (por exemplo, em elementos de dados correspondentes entre dois operandos de dados compactados de fonte). Ainda outras instruções de dados compactados podem gerar operandos de dados compactados de resultado de um tamanho diferente, que têm elementos de dados de tamanhos diferentes e/ou que têm uma ordem de elemento de dados diferente.
BREVE DESCRIÇÃO DOS DESENHOS
[0006] A invenção pode ser mais bem entendida em referência à descrição a seguir e desenhos anexos que são usados para ilustrar modalidades. Nos desenhos:
[0007] A Figura 1 é um diagrama de blocos de uma modalidade de um processador.
[0008] A Figura 2 é um diagrama de blocos de outra modalidade de um processador.
[0009] A Figura 3 é um diagrama de blocos de uma modalidade exemplificativa de uma operação de dados compactados mascarada com mesclagem.
[0010] A Figura 4 é um diagrama de blocos de uma modalidade exemplificativa de uma operação de dados compactados mascarada com anulação.
[0011] A Figura 5 é um diagrama de fluxo de blocos de uma modalidade de um método para processar uma modalidade de uma instrução de dados compactados mascarada.
[0012] A Figura 6 é uma tabela que ilustra que o número de bits de máscara de operação de dados compactados depende da largura de dados compactados e da largura de elemento de dados compactados.
[0013] A Figura 7 é um diagrama de blocos de uma modalidade exemplificativa de um conjunto adequado de registros de máscara de operação de dados compactados.
[0014] A Figura 8 é um diagrama que ilustra uma modalidade de um registro de máscara de operação de dados compactados e que mostra que o número de bits de máscara de operação de dados compactados depende da largura de dados compactados e da largura de elemento de dados.
[0015] A Figura 9 é um diagrama de blocos que ilustra uma modalidade na qual um mesmo registro físico pode ser logicamente visto e/ou acessado tanto como um registro de dados compactados quanto como um registro de máscara de operação de dados compactados.
[0016] A Figura 10 é um diagrama de blocos que ilustra uma modalidade na qual um mesmo registro físico pode ser logicamente visto e/ou acessado tanto como um registro de dados compactados quanto como um registro de máscara de operação de dados compactados que armazena múltiplas máscaras de operação de dados compactados.
[0017] A Figura 11 é um diagrama de blocos que ilustra uma modalidade na qual os bits de uma máscara de operação de dados compactados são distribuídos dentre os elementos de dados de dados compactados.
[0018] A Figura 12 é um diagrama de blocos que ilustra uma modalidade na qual um conjunto de registros que tem bits de máscara de operação de dados compactados que são distribuídos dentre os elementos de dados de dados compactados podem ser vistos ou acessados em exibições diferentes enquanto armazenam duas ou mais máscaras menores ou uma única máscara maior.
[0019] A Figura 13A é um diagrama em blocos que ilustra tanto um encadeamento em ordem exemplificativo quanto um renomeação de registro exemplificativo, pipeline de emissão/execução fora de ordem de acordo com as modalidades da invenção;
[0020] A Figura 13B é um diagrama em blocos que ilustra tanto uma modalidade exemplificativa de um núcleo de arquitetura em ordem quanto um renomeação de registro exemplificativo, um núcleo de arquitetura de emissão/execução fora de ordem a serem incluídos em um processador de acordo com as modalidades da invenção;
[0021] A Figura 14A é um diagrama de blocos de um único núcleo de processador, junto com sua conexão para a rede de interconexão em matriz e com seu subconjunto local do cache de Nível 2 (L2), de acordo com as modalidades da invenção.
[0022] A Figura 14B é uma vista expandida de parte do núcleo de processador na Figura 14A de acordo com as modalidades da invenção.
[0023] A Figura 15 é um diagrama em blocos de um processador que pode ter mais de um núcleo, pode ter um controlador de memória integrado e pode ter gráficos integrados de acordo com as modalidades da invenção;
[0024] A Figura 16 mostrada é um diagrama de blocos de um sistema de acordo com uma modalidade da presente invenção.
[0025] A Figura 17 é um diagrama em blocos de um primeiro sistema exemplificativo mais específico de acordo com uma modalidade da presente invenção;
[0026] A Figura 18 é um diagrama em blocos de um segundo sistema exemplificativo mais específico de acordo com uma modalidade da presente invenção;
[0027] A Figura 19 é um diagrama em blocos de um SoC de acordo com uma modalidade da presente invenção;
[0028] A Figura 20 é um diagrama em blocos que contrasta o uso de um conversor de instrução de software para converter instruções binárias em um conjunto de instruções de fonte para instruções binárias em um conjunto de instrução de alvo de acordo com as modalidades da invenção.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0029] Abordagens são reveladas no presente documento para operações predicadas ou de máscara em elementos de dados compactados. Na descrição a seguir, diversos detalhes específicos são apresentados (por exemplo, maneiras específicas de implantar máscaras, comprimentos de máscara específicos, formatos de dados, configurações de processador, detalhes de microarquitetura, sequências de operações, etc.). No entanto, as modalidades podem ser praticadas sem esses detalhes específicos. Em outros exemplos, circuitos, estruturas e técnicas conhecidos não foram mostrados em detalhes para evitar obscurecer o entendimento da descrição.
[0030] A Figura 1 é um diagrama de blocos de uma modalidade de um processador 100. O processador representa um aparelho de processamento de instrução que é operável para processar instruções. Em algumas modalidades, o processador pode ser um processador de propósito geral (por exemplo, um microprocessador de propósito geral do tipo em geral usado como uma unidade de processamento central (CPU) no computador do tipo desktop, computador do tipo laptop e computadores similares). De modo alternativo, o processador pode ser um processador de propósito geral. Exemplos de processadores de propósito geral adequados inclui, porém, sem limitação, processadores de rede, processadores de comunicação, processadores criptográficos, processadores gráficos, coprocessadores, processadores inseridos, processadores de sinal digital (DSPs) e controladores (por exemplo, microcontroladores), apenas para dar alguns exemplos. O processador pode ser qualquer um dentre diversos processadores de computação de conjunto de instruções complexos (CISC), diversos processadores de computação de conjunto de instruções reduzidos (RISC), diversos processadores de palavra de instrução muito longa (VLIW), diversos híbridos dos mesmos ou outros tipos de processadores completamente. Em algumas modalidades, o processador pode representar um processador de RISC que tem capacidade para utilizar predicado ou mascaramento para operações de dados compactados.
[0031] O processador tem um conjunto de instruções 102. As instruções do conjunto de instruções representam macroinstruções, instruções de linguagem de montagem ou instruções de nível de máquina que são fornecidas ao processador para execução, quando opostas às microinstruções, micro-ops ou outras instruções ou sinais de controle decodificados ou convertidos a partir das instruções do conjunto de instruções. Em algumas modalidades (por exemplo, como no caso de certos processadores de RISC), as instruções podem ter um comprimento de instrução substancialmente fixo (por exemplo, todas ou pelo menos a maior parte das instruções podem ser de 32 bits ou algum outro comprimento), quando opostas às que tem um comprimento de instrução variável.
[0032] Conforme mostrado, em algumas modalidades, o conjunto de instruções pode incluir opcionalmente uma ou mais instruções de dados compactados não mascaradas 106 para uma ou mais certas operações de dados compactados não mascaradas. Conforme mostrado, o conjunto de instruções também inclui uma ou mais instruções de dados compactados mascaradas 104 para uma ou mais certas operações de dados compactados mascaradas. Alguns exemplos ilustrativos de instruções/operações de dados compactados não mascaradas e mascaradas adequadas incluem, porém, sem limitação, instruções/operações de adição compactados mascaradas e não mascaradas, instruções/operações de subtração compactadas mascaradas e não mascaradas, instruções/operações de multiplicação compactadas mascaradas e não mascaradas, instruções/operações de troca compactadas mascaradas e não mascaradas, instruções/operações de rotação compactadas mascaradas e não mascaradas, instruções/operações de comparação compactadas mascaradas e não mascaradas, instruções/operações OU lógica compactadas mascaradas e não mascaradas, instruções/operações E lógica compactadas mascaradas e não mascaradas, instruções/operações recíprocas compactadas mascaradas e não mascaradas, instruções/operações ponderadas compactadas mascaradas e não mascaradas e outras instruções/operações lógicas e/ou aritméticas compactadas mascaradas e não mascaradas conhecidas nas técnicas.
[0033] O processador também inclui um conjunto de registros de dados compactados 108. Os registros de dados compactados, em geral, representam localizações de armazenamento de processador na matriz, cada uma, operável para armazenar dados compactados, dados de vetor, ou dados de SIMD. Os registros de dados compactados podem representar registros que são visíveis para um software e/ou um programador e/ou registros que são especificados por instruções do conjunto de instruções para identificar operandos (por exemplo, operandos de fonte e destino). Os registros podem ser implantados de maneiras diferentes em microarquiteturas diferentes com o uso de técnicas bem conhecidas e não são limitados a qualquer tipo particular de circuito. Exemplos de tipos adequados de registros incluem, porém, sem limitação, registros físicos dedicados, registros físicos dinamicamente alocados com o uso de renomeação de registro e combinações dos mesmos.
[0034] Em algumas modalidades, o processador pode ter opcionalmente um conjunto de um ou mais registros de máscara de operação de dados compactados 110 que são implantados nos registros de dados compactados 108, embora isso não seja exigido. Em algumas modalidades, o processador pode ter opcionalmente um conjunto de um ou mais registros de máscara de operação de dados compactados dedicados separados 112 que são separados dos registros de dados compactados 108. Os registros de máscara de operação de dados compactados 110 e/ou os registros de máscaras de operação de dados compactados 112 podem ser usados para armazenar máscaras de operação de dados compactados. À título de exemplificação, as instruções de dados compactados mascaradas podem ter um ou mais bits para especificar uma máscara de operação de dados compactados, por exemplo, um registro de máscara de operação de dados compactados 112 ou um registro de dados compactados 108. As máscaras de operação de dados compactados também podem chamadas no presente documento de máscaras de predicado ou simplesmente máscaras.
[0035] O processador também inclui uma ou mais unidades de execução 114. A uma ou mais unidades de execução são operáveis para executar ou processar as instruções do conjunto de instruções 102 (por exemplo, as instruções de dados compactados mascaradas 104). Em algumas modalidades, as unidades de execução podem incluir lógica particular (por exemplo, conjunto de circuitos integrado particular ou outro hardware potencialmente combinado com firmware) para executar ou processar as instruções.
[0036] Em algumas modalidades, o processador pode ter modos diferentes nos quais a máscara é ou não é usada para instruções de dados compactados/operações, embora isso não seja exigido. Por exemplo, o processador pode ter um primeiro modo no qual o processador não deve usar mascaramento de operação de dados compactados e um segundo modo no qual o processador deve usar mascaramento de operação de dados compactados. À título de exemplificação, as instruções de dados compactados não mascaradas podem ser procuradas, decodificadas e executadas para realizar operações de dados compactados não mascaradas sem com o uso de máscaras ou máscaras de operação de dados compactados enquanto no primeiro modo. Em contraste, as instruções de dados compactados mascaradas podem ser procuradas, decodificadas e executadas para realizar operações de dados compactados mascaradas com o uso de máscaras de operação de dados compactados e máscaras enquanto no segundo modo. O primeiro e o segundo modos podem ser indicados por um ou mais bits em um registro do processador (por exemplo, um registro de controle, registro de configuração, etc.). Tal uso de modos diferentes pode tender a oferecer vantagens em processadores de RISC, processadores que usam um comprimento de instrução substancialmente fixo (por exemplo, a partir da maior parte ou de quase todas as instruções que têm o mesmo comprimento de instrução como 32 bits), processadores que têm um espaço opcode limitado e similares. Em geral, o número de códigos operacionais disponíveis em tais processadores é insuficiente para suportar tanto versões mascaradas quanto não mascaradas de uma determinada operação de dados compactados. Mediante o fornecimento de um modo diferente para operações de dados compactados mascaradas, instruções adicionais podem ser incluídos para realizar operações de dados compactados mascaradas sem precisar necessariamente aumentar o comprimento do opcode. Outras modalidades não são limitadas ao uso de tais modos.
[0037] A Figura 2 é um diagrama de blocos de outra modalidade de um processador 200. Conforme descrito anteriormente, o processador pode representar um processador de propósito geral ou processador de propósito geral e pode ser qualquer um dentre diversos RISC, CISC, VLIW, híbridos ou outros tipos de processadores. Qualquer um dos detalhes e detalhes opcionais mencionados acima para o processador da Figura 1 também podem opcionalmente se aplicar ao processador da Figura 2.
[0038] O processador 200 pode receber uma instrução de dados compactados mascarada 204. Por exemplo, a instrução pode ser recebida de uma unidade de busca de instrução, uma fila de espera de instrução ou similares. A instrução de dados compactados mascarada pode representar uma instrução de código de máquina, instrução de linguagem de montagem, macroinstrução ou sinal de controle de um conjunto de instruções do processador. Qualquer um dos tipos mencionados anteriormente de instruções de dados compactados mascaradas, bem como outros tipos de instruções de dados compactados mascaradas, são adequados.
[0039] O processador ilustrado inclui uma unidade de decodificação de instrução 216. A unidade de decodificação de instrução também pode ser chamada de uma unidade de decodificação ou decodificador. A unidade de decodificação pode receber e decodificar instruções de nível relativamente alto (por exemplo, macroinstruções, instruções de código de máquina, instruções de linguagem de montagem, etc.) e emitir uma ou mais instruções de nível relativamente baixo ou sinais de controle (por exemplo, microinstruções, micro- operações, pontos de entrada de microcódigo, etc.) que refletem, representam e/ou são derivadas das instruções de nível superior. As uma ou mais instruções de nível inferior ou sinais de controle pode implantar a instrução de nível superior através de uma ou mais operações de nível inferior (por exemplo, nível de circuito ou nível de hardware). A unidade de decodificação pode ser implantada com o uso de diversos mecanismos diferentes incluindo, porém, sem limitação, memórias de apenas leitura de microcódigo (ROMs), tabelas de consulta, implantações de hardware, matrizes de lógica programável (PLAs) e outros mecanismos usados para implantar unidades de decodificação conhecidas na técnica.
[0040] Em outras modalidades, um emulador de instrução, tradutor, morpher, intérprete ou outra lógica de conversão de instrução podem ser usados. Diversos tipos diferentes de lógica de conversão de instrução são conhecidos nas técnicas e podem ser implantados em software, hardware, firmware ou uma combinação dos mesmos. A lógica de conversão de instrução pode emular, traduzir, tomar forma, interpretar ou de outro modo converter a instrução em uma ou mais instruções derivadas correspondentes ou sinais de controle. Em algumas modalidades, tanto a lógica de conversão de instrução quanto uma unidade de decodificação podem ser usadas. Por exemplo, a lógica de conversão de instrução pode converter uma instrução em uma ou mais instruções intermediárias e a unidade de decodificação pode codificar a uma ou mais instruções intermediárias em uma ou mais instruções de nível inferior ou sinais de controle executáveis por conjunto de circuitos integrado do processador. A lógica de conversão de instrução pode estar localizada fora do processador (por exemplo, em uma matriz separada ou na memória), no processador ou uma combinação.
[0041] O processador também inclui um conjunto de registros de dados compactados 208. Esses registros de dados compactados podem ser similares aos registros de dados compactados 108 descritos acima. A instrução de dados compactados mascarada 204 pode especificar explicitamente (por exemplo, através de um ou mais campos ou um conjunto de bits) ou de outro modo indicar (por exemplo, indicar implicitamente), primeiros dados compactados de fonte (por exemplo, um primeiro registro de dados compactados de fonte 218). Dependendo do tipo de instrução, a instrução de dados compactados mascarada pode especificar, de modo opcional, explicitamente ou de outro modo indicar segundos dados compactados de fonte (por exemplo, um segundos registro de dados compactados de fonte 220). Em alguns casos, os dados compactados mascarados podem especificar de modo opcional ou de outro modo indicar dados compactados de destino (por exemplo, um registro de dados compactados de destino 222). Em outras modalidades, um ou mais desses operandos de dados compactados podem ser armazenados em uma localização de memória ou outra localização de armazenamento. Além disso, em outras modalidades, uma das localizações de armazenamento de dados compactados de fonte pode ser usada novamente como a localização de armazenamento de dados compactados de destino.
[0042] Em algumas modalidades, a instrução de dados compactados mascarada também pode especificar ou de outro modo indicar uma máscara de operação de dados compactados de fonte 212 (por exemplo, um registro de máscara de operação de dados compactados de fonte). Na modalidade ilustrada, a máscara de operação de dados compactados de fonte 212 pode representar um registro que é separado dos registros de dados compactados 208. Em outra modalidade, a máscara de operação de dados compactados de fonte pode ser implantada nos registros de dados compactados 208.
[0043] Novamente em referência à Figura 2, uma unidade de execução 214 é acoplada à unidade de decodificação 216, é acoplada aos registros de dados compactados 208 e é acoplado à máscara de operação de dados compactados de fonte 212. Em algumas modalidades, a unidade de execução pode incluir uma unidade aritmética, uma unidade lógica aritmética, uma unidade funcional, uma unidade para receber instruções decodificadas e realizar operações ou similares. A unidade de execução pode ser operável em resposta a e/ou como resultado da instrução de dados compactados mascarada 204 (por exemplo, em resposta a uma ou mais instruções decodificadas ou de outro modo convertidas ou sinais de controle que representam e/ou são derivadas da instrução de dados compactados mascarada 204) para realizar uma operação de dados compactados mascarada e armazenar dados compactados de resultado no operando de dados compactados de destino ou registro 222. A unidade de execução e/ou o processador pode incluir lógica específica ou particular (por exemplo, conjunto de circuitos integrado ou outro hardware potencialmente combinado com firmware e/ou software) que é responsivo à instrução de dados compactados mascarada para realizar a operação de dados compactados mascarada.
[0044] Em algumas modalidades, o processador também pode receber opcionalmente uma instrução de dados compactados não mascarada 206. a instrução de dados compactados não mascarada pode ser similar à instrução de dados compactados mascarada anteriormente descrita 204, exceto que a mesma não precisa especificar ou de outro modo indicar a máscara de operação de dados compactados e exceto que a mesma não faz com que que o processador use mascaramento. Em vez disso, uma operação de dados compactados não mascarada é realizada em resposta à instrução de dados compactados não mascarada. Conforme descrito anteriormente, em algumas modalidades, o processador pode ter modos diferentes nos quais a máscara é ou não é usada para instruções de dados compactados/operações, embora isso não seja exigido. Por exemplo, a instrução de dados compactados não mascarada 206 pode ser decodificada e executada para realizar uma operação de dados compactados não mascarada sem usar mascaramento ou uma máscara de operação de dados compactados enquanto em um primeiro modo. Em contraste, a instrução de dados compactados mascarada 204 pode ser decodificada e executada para realizar uma operação de dados compactados mascarada da máscara de operação de dados compactados 212 enquanto em um segundo modo. Representativamente, o primeiro e o segundo modos podem ser indicados por um ou mais bits em um registro do processador (por exemplo, um registro de controle, registro de configuração, etc.). Tal uso de modos diferentes pode tender a oferecer vantagens em processadores de RISC, processadores que usam um comprimento de instrução substancialmente fixo (por exemplo, a partir da maior parte ou de quase todas as instruções que têm o mesmo comprimento de instrução como 32 bits), processadores que têm um espaço opcode limitado e similares. Em geral, o número de códigos operacionais disponíveis em tais processadores é insuficiente para suportar tanto versões mascaradas quanto não mascaradas de uma determinada operação de dados compactados. Mediante o fornecimento de um modo diferente para operações de dados compactados mascaradas, instruções adicionais podem ser incluídos para realizar operações de dados compactados mascaradas sem precisar necessariamente aumentar o comprimento do opcode. Outras modalidades não são limitadas ao uso de tais modos.
[0045] A máscara de operação de dados compactados pode representar um operando predicado ou operando de controle condicional ou operando de controle condicional de vetor condicional. A máscara de operação de dados compactados também pode ser chamada no presente documento simplesmente de uma máscara. A máscara pode predicar, controlar condicionalmente ou usar máscara se ou não as operações associadas à instrução de dados compactados mascarada devem ser realizadas nos elementos de dados de fonte e/ou se ou não resultados das operações devem ser armazenados no resultado de dados compactados. A máscara pode, cada uma, incluir múltiplos elementos de máscara, elementos de predicado ou elementos de controle condicional.
[0046] Em algumas modalidades, a máscara pode ser operável para mascarar as operações em granularidade de elemento de dados por resultado. Em um aspecto, os elementos de máscara podem ser incluídos em correspondência um para um com elementos de dados de resultado (por exemplo, podem haver oito elementos de dados de resultado e oito elementos de máscara correspondentes). Cada elemento de máscara diferente pode ser operável para mascarar uma operação de dados compactados correspondente diferente e/ou armazenamento de máscara de um elemento de dados de resultado correspondente diferente, de modo separado e/ou substancialmente de modo independente dos outros. Por exemplo, um elemento de máscara pode ser operável para mascarar se ou não a operação de dados compactados é realizada em um elemento de dados correspondente de dados compactados de fonte (ou em um par de elementos de dados correspondentes de dois dados compactados de fonte) e/ou se ou não o resultado da operação de dados compactados é armazenado em um elemento de dados de resultado correspondente.
[0047] Comumente, cada elemento de máscara pode ser um único bit. O único bit pode permitir especificar ambas as duas possibilidades diferentes. Como exemplo, cada bit pode especificar tanto que a operação pode ser realizada quanto que a mesma não pode ser realizada. Como outro exemplo, cada bit pode armazenar especificamente um resultado do versus de operação que não armazena um resultado da operação. De acordo com uma conversão possível, cada bit de máscara pode ter um primeiro valor (por exemplo, definido como binário 1) para permitir um resultado de uma operação compactada a ser armazenada em um elemento de dados de resultado correspondente ou pode ter um segundo valor (por exemplo, compensado para binário 0) para impedir um resultado de uma operação compactada de ser armazenado em um elemento de dados de resultado correspondente. A convenção oposta também é possível. Em outros casos, cada elemento de máscara pode ter dois ou mais bits (por exemplo, para especificar mais de duas possibilidades diferentes).
[0048] Em algumas modalidades, a operação pode ser opcionalmente realizada independentemente do bit de máscara ou elemento correspondente, mas os resultados correspondentes da operação podem ou não ser armazenados nos dados compactados de resultado dependendo do valor do bit de máscara ou elemento correspondente. De modo alternativo, em outras modalidades, a operação pode ser opcionalmente omitida (isto é, não realizada) se o bit de máscara ou elemento correspondente for mascarado. Em algumas modalidades, exceções e/ou violações pode ser opcionalmente suprimidas para ser, ou não, elevadas por uma operação em um elemento mascarado. Em algumas modalidades, falhas de memória que corresponde a elementos de dados mascarados podem ser opcionalmente suprimidas ou não elevadas.
[0049] Para evitar obscurecer a descrição, um processador relativamente simples 200 foi mostrado e descrito. Em outras modalidades, o aparelho pode incluir opcionalmente outros componentes bem conhecidos revelados em processadores. Exemplos de tais componentes incluem, porém, sem limitação, uma unidade de previsão de ramificação, uma unidade de busca de instrução, caches de instrução e dados, armazenadores temporários à parte de tradução de instrução e dados, armazenadores temporários pré-busca, filas de espera de microinstrução, sequenciadores de microinstrução, uma unidade de renomeação de registro, uma unidade de cronograma de instrução, unidades de interface de barramento, segundos caches ou de nível maior, uma unidade de baixa, outros componentes incluídos em processadores e diversas combinações dos mesmos. Há literalmente diversas combinações e configurações diferentes de componentes em processadores e as modalidades não são limitadas a qualquer combinação ou configuração particular. As modalidades podem ser incluídas em processadores que têm múltiplos núcleos, processadores lógicos ou mecanismos de execução, em que pelo menos um dos mesmos tem lógica de execução operável para executar uma modalidade de uma instrução de dados compactados mascarada revelada no presente documento.
[0050] A Figura 3 é um diagrama de blocos de uma modalidade exemplificativa de uma operação de dados compactados mascarada com mesclagem 326. a operação de dados compactados mascarada pode ser realizada em resposta a, ou como resultado de, uma instrução de dados compactados mascarada (por exemplo, as instruções 104 e/ou 204). A instrução de dados compactados mascarada pode indicar primeiros dados compactados de fonte 318 e segundos dados compactados de fonte 320. Outras instruções de dados compactados mascaradas podem indicar apenas dados compactados de fonte únicos ou mais de dois dados compactados de fonte. Na ilustração, o primeiro e o segundo dados compactados de fonte são do mesmo tamanho, contêm elementos de dados da mesma largura e, desse modo, cada um contém o mesmo número de elementos de dados, embora isso não seja exigido. Na ilustração, cada um dentre o primeiro e o segundo dados compactados de fonte tem oito elementos de dados. Como exemplo, o primeiro e o segundo dados compactados de fonte podem, cada um, ter amplitude de 128 bits e cada um pode incluir oito elementos de dados de 16 bits, embora isso não seja exigido. Os elementos de dados de fonte nas mesmas posições relativas nos dois dados compactados de fonte (por exemplo, nas mesmas posições verticais) representam pares de elementos de dados correspondentes. Cada um dos elementos de dados tem um valor numérico mostrado dentro do bloco que representa o elemento de dados. Por exemplo, os primeiros dados compactados de fonte 318 têm, da posição de ordem mais inferior na direita para a posição de ordem mais superior na esquerda, os valores “3, 7, 66, 55, 12, 11, 90, 89”.
[0051] A instrução também indica uma máscara de operação de dados compactados de fonte 312. No exemplo, a máscara inclui oito elementos de máscara, elementos de predicado ou elementos de controle condicional, que, no exemplo, são, cada um, um único bit. Os bits são incluídos em uma correspondência ordenada um para um com um par correspondente de elementos de dados de fonte no primeiro e no segundo dados compactados de fonte. Por exemplo, o bit de ordem mais inferior de máscara (na direita) corresponde ao par de ordem mais inferior de elementos de dados correspondentes, o bit de máscara de ordem mais superior (na esquerda) corresponde ao par de ordem mais elevada de elementos de dados correspondentes e assim por diante. Cada bit de máscara permite desempenho da operação de dados compactados no par correspondente de elementos de dados de fonte a ser predicado ou condicionalmente controlado de modo separado e de modo independente dos outros.
[0052] A operação de dados compactados mascarada exemplificativa é uma operação de adição de dados compactados mascarados para armazenar condicionalmente somas de pares correspondentes de elementos de dados do primeiro e do segundo dados compactados de fonte em um operando de resultado de dados compactados ou destino 322 de acordo com a máscara de operação de dados compactados. Cada um dos oito bits de máscara da máscara de operação de dados compactados é tanto um conjunto (isto é, tem um valor binário de 1) ou é compensado (isto é, tem um valor binário de 0). De acordo com a convenção ilustrada, cada bit de máscara é ajustado (isto é, 1) ou compensado (isto é, 0), respectivamente, para permitir ou não permitir um resultado da operação de dados compactados (nesse caso, adição), realizado em um par correspondente de elementos de dados compactados de fonte, a ser armazenado em um elemento de dados correspondente do resultado de dados compactados. Os bits definidos (isto é, 1) representam bits ou elementos não mascarados, enquanto que os bits compensados (isto é, 0) representam bits ou elementos mascarados. No exemplo ilustrado, os valores dos oito bits de máscara são, da posição de ordem mais inferior na direita para a posição de ordem mais superior na esquerda, “1, 1, 0, 1, 0, 1, 1, 0”. Para aqueles bits de máscara que são definidos (isto é, 1) uma soma correspondente é armazenada no elemento de dados de resultado correspondente. Na ilustração, as somas são sublinhadas. Em contrapartida, para aqueles bits de máscara que são compensados (isto é, 0), um resultado da operação de dados compactados no par correspondente de elementos de dados de fonte não é armazenado no elemento de dados de resultado correspondente. Em vez disso, no exemplo ilustrado, o valor do elemento de dados correspondente dos segundos dados compactados de fonte 320 é armazenado integrado ao elemento de dados de resultado correspondente. Essa versão de máscara é chamada de mascaramento por mesclagem. Deve ser verificado que uma convenção oposta também é possível em que os bits são compensados (isto é, 0) para permitir os resultados a ser armazenados ou definido (isto é, 1) para não permitir que os resultados sejam armazenados.
[0053] A Figura 4 é um diagrama de blocos de uma modalidade exemplificativa de uma operação de dados compactados mascarada com anulação 426. A operação de dados compactados mascarada pode ser realizada em resposta a, ou como resultado de, uma instrução de dados compactados mascarada (por exemplo, as instruções 104 e/ou 204). A instrução pode indicar primeiros dados compactados de fonte 418, segundos dados compactados de fonte 420, uma máscara de operação de dados compactados de fonte 412 e uma localização de armazenamento de destino 422. A operação de dados compactados mascarada com anulação é similar à operação de dados compactados mascarada mencionada anteriormente com mesclagem. Para evitar obscurecer a descrição, as similaridades não serão repetidas, mas em vez disso, as diferenças serão mencionadas primeiramente.
[0054] Uma diferença notável é que, em vez de valores de mesclagem ou armazenamento de elementos de dados de dados compactados de fonte (por exemplo, os segundos dados compactados de fonte 320 na Figura 3) nos elementos de dados correspondentes de resultado quando os bits de máscara correspondentes são mascarados ou zerados (por exemplo, compensado para binário 0), os elementos de dados correspondentes de resultado são zerados. Por exemplo, todos os bits de um elemento de dados compactados de resultado podem ser dados como um valor de zero. Isso é chamado de mascaramento por anulação. De modo alternativo, outros valores predeterminados além de zero podem ser opcionalmente usados.
[0055] Deve ser verificado que esses são apenas poucos exemplos ilustrativos de operações de dados compactados mascaradas adequadas. Em outras modalidades, em vez de adição, a operação pode ser uma operação de multiplicação, operação de comparação, operação de subtração, operação de ponderação, operação de desvio, operação de rotação, etc. Além disso, em outras modalidades, a operação pode envolver um único operando de dados compactados de fonte, mais de dois operandos de dados compactados de fonte, operandos de dados compactados de fonte de tamanhos diferentes, dados compactados de fonte que têm tamanhos diferentes e/ou números de elementos de dados, operações horizontais em vez de verticais, etc.
[0056] Em algumas modalidades, as operações da Figura 3 e/ou da Figura 4 podem ser realizadas por e/ou dentro do processador da Figura 1 e/ou do processador da Figura 2. De modo alternativo, as operações da Figura 3 e/ou da Figura 4 podem ser realizadas por processadores similares ou diferentes. Além disso, o processador da Figura 1 e/ou o processador da Figura 2 pode realizar a mesma, similar ou operações diferentes daquelas da Figuras 3 e/ou da Figura 4.
[0057] A Figura 5 é um diagrama de fluxo de blocos de uma modalidade de um método 530 para processar uma modalidade de uma instrução de dados compactados mascarada. Em diversas modalidades, o método pode ser realizado por e/ou dentro de um processador ou outro aparelho de processamento de instrução. Em algumas modalidades, o método pode ser realizado pelos processadores da Figura 1 e/ou da Figura 2. De modo alternativo, o método pode ser realizado por um processador similar ou diferente. Além disso, os processadores da Figura 1 e/ou da Figura 2 podem realizar operações e métodos iguais a, similares a ou diferentes daqueles da Figura 5.
[0058] O método inclui receber a instrução de dados compactados mascarada, no bloco 531. Em diversos aspectos, a instrução pode ser recebida em um processador ou uma porção do mesmo (por exemplo, uma unidade de busca, uma unidade de decodificação, uma fila de espera de instrução, etc.). Em diversos aspectos, a instrução pode ser recebida de uma fonte fora da matriz (por exemplo, de uma memória principal, um disco, uma interconexão, etc.) ou de uma fonte na matriz (por exemplo, de um cache de instrução). As instrução de dados compactados mascarada podem especificar ou de outro modo indicar primeiros dados compactados de fonte que têm uma primeira pluralidade de elementos de dados compactados, pode especificar ou de outro modo indicar segundos dados compactados de fonte que têm uma segunda pluralidade de elementos de dados compactados, pode especificar ou de outro modo indicar uma máscara de operação de dados compactados que tem uma pluralidade de elementos de máscara e pode especificar ou de outro modo indicar uma localização de armazenamento de destino.
[0059] Dados compactados de resultado podem ser armazenados na localização de armazenamento de destino indicada em resposta a e/ou como resultado da instrução de dados compactados mascarada, no bloco 532. Os dados compactados de resultado incluem uma pluralidade de elementos de dados de resultado, em que cada um corresponde a uma diferente dos elementos de máscara em uma posição relativa correspondente. Os elementos de dados de resultado que não são mascarados pelo elemento de máscara correspondente incluem um resultado de uma operação de dados compactados realizada em um par correspondente de elementos de dados compactados de fonte do primeiro e do segundo dados compactados de fonte. Os elementos de dados de resultado que são mascarados pelo elemento de máscara correspondente incluem um valor mascarado, como, por exemplo, um valor zerado ou um valor compensado de um dentre o primeiro e o segundo dados compactados de fonte.
[0060] A Figura 6 é uma tabela 636 que ilustra que o número de bits de máscara de operação de dados compactados depende da largura de dados compactados e da largura de elemento de dados compactados. As larguras de dados compactados de 64 bits, 128 bits, 256 bits e 512 bits são mostradas. Em outras modalidades, um subconjunto ou sobreconjunto dessas larguras podem ser usados, ou outras larguras podem ser completamente usadas (por exemplo, 32 bits, 1024 bits, etc.). As larguras de elemento de dados compactados de bytes de 8 bits, palavras de 16 bits, palavras duplas de 32 bits (dwords) ou ponto de flutuação de precisão único (SP) e palavras quádruplas de 64 bits (Qwords) ou ponto de flutuação de precisão único (DP) são considerados, embora outras larguras também sejam possíveis.
[0061] Conforme mostrado, quando a largura de dados compactados é de 64 bits, 8 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 8 bits, 4 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 16 bits e 2 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 32 bits. Conforme mostrado, quando a largura de dados compactados é de 128 bits, 16 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 8 bits, 8 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 16 bits, 4 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 32 bits e 2 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 64 bits. Quando a largura de dados compactados é de 256 bits, 32 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 8 bits, 16 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 16 bits, 8 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 32 bits e 4 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 64 bits. Quando a largura de dados compactados é de 512 bits, 64 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 8 bits, 32 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 16 bits, 16 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 32 bits e 8 bits podem ser usados para mascaramento quando a largura de elemento de dados compactados é de 64 bits. As máscaras de qualquer uma dessas larguras ou qualquer combinação dessas larguras podem ser usadas em algumas modalidades.
[0062] A Figura 7 é um diagrama de blocos de uma modalidade exemplificativa de um conjunto adequado de registros de máscara de operação de dados compactados 712. Cada um dos registros de máscara de operação de dados compactados pode ser usado para armazenar uma máscara de operação de dados compactados. Em algumas modalidades, os registros de máscara de operação de dados compactados podem ser um conjunto separado, dedicado de registros de arquitetura. Na modalidade ilustrada, cada um dos registros de máscara de operação de dados compactados é de amplitude de 64 bits. Em modalidades alternativas, as larguras dos registros de máscara de operação de dados compactados podem ser tanto mais restritas que 64 bits (por exemplo, 8 bits, 16 bits, 20 bits, 32 bits, etc.) ou maiores que 64 bits (por exemplo, 128 bits). Na modalidade ilustrada, o conjunto inclui oito registros de máscara de operação de dados compactados nomeado de M0 a de M7. As modalidades alternativas podem incluir tanto menos que oito (por exemplo, um, dois, três, quatro, cinco, seis, etc.) ou mais de oito (por exemplo, doze, dezesseis, vinte, trinta e dois, etc.) registros de máscara de operação de dados compactados. À título de exemplificação, as instruções de dados compactados mascaradas podem usar três bits (por exemplo, um campo de 3 bits) para codificar ou especificar qualquer um dos oito registros de máscara de operação de dados compactados de M0 a M7. Em modalidades alternativas, tanto poucos ou mais bits podem ser usados quando há poucos ou mais registros de máscara de operação de dados compactados, respectivamente. Os registros de máscara de operação de dados compactados podem ser implantados de maneiras diferentes com o uso de técnicas bem conhecidas e não são limitados a qualquer tipo particular conhecido de circuito. Exemplos de registros adequados incluem, porém, sem limitação, registros físicos dedicados, registros físicos dinamicamente alocados com o uso de renomeação de registro e combinações dos mesmos.
[0063] A Figura 8 é um diagrama que ilustra uma modalidade exemplificativa de um registro de máscara de operação de dados compactados 812 e que mostra que o número de bits que é usado como uma máscara de operação de dados compactados e/ou para mascaramento depende da largura de dados compactados e da largura de elemento de dados. A modalidade ilustrada exemplificativa do registro de máscara de operação de dados compactados é de amplitude de 64 bits, embora tanto registros mais estreitos (por exemplo, 16 bits, 8 bits, etc.) quanto mais amplos possam ser usados em vez disso. Dependendo da combinação da largura de dados compactados e da largura de elemento de dados, tanto todos os 64 bits quanto apenas um subconjunto dos 64 bits, podem ser usados como uma máscara de operação de dados compactados para mascaramento. Em geral, quando um único bit de controle de mascaramento por elemento é usado, o número de bits no registro de máscara de operação de dados compactados que são usados para mascaramento é igual ao operando de largura de dados compactados em bits divididos pela largura de elemento de dados compactados em bits.
[0064] Diversos exemplos ilustrativos são mostrados. A saber, quando a largura de dados compactados é de 128 bits e a largura de elemento de dados compactados é de 16 bits, então, apenas os 8 bits de ordem mais inferior do registro são usados como a máscara de operação de dados compactados. Quando a largura de dados compactados é de 128 bits e a largura de elemento de dados compactados é de 8 bits, então, apenas os 16 bits de ordem mais inferior do registro são usados como a máscara de operação de dados compactados. Quando a largura de dados compactados é de 256 bits e a largura de elemento de dados compactados é de 8 bits, então, apenas os 32 bits de ordem mais inferior do registro são usados como a máscara de operação de dados compactados. Quando a largura de dados compactados é de 512 bits e a largura de elemento de dados compactados é de 8 bits, então, todos os 16 bits de ordem mais inferior do registro são usados como a máscara de operação de dados compactados. De acordo com a modalidade ilustrada, uma instrução de dados compactados mascarada pode utilizar apenas o número de ordem mais inferior ou menos bits significantes do registro usado para a máscara de operação de dados compactados com base naquelas instruções associadas à largura de dados compactados e à largura de elemento de dados. Na modalidade ilustrada, o subconjunto ou porção do registro de ordem inferior é usado para mascaramento, embora isso não seja exigido. Em modalidades alternativas, um subconjunto de ordem mais elevada ou algum outro subconjunto, pode ser opcionalmente usado.
[0065] A Figura 9 é um diagrama de blocos que ilustra uma modalidade na qual um mesmo registro físico pode ser logicamente visto e/ou acessado tanto como um registro de dados compactados 908 quanto como um registro de máscara de operação de dados compactados 912. Em uma primeira exibição 940, o registro pode ser visto e/ou acessado como um registro de dados compactados 908. O registro ilustrado é de amplitude de 64 bits. Na ilustração, como exemplo, quatro elementos de dados de 16 bits A0-A3 são armazenados no registro de dados compactados de 64 bits. Em outras modalidades, tanto registros mais estreitos (por exemplo, 32 bits) quanto mais amplos (por exemplo, 128 bits, 256 bits, etc.) podem ser usados. Além disso, em outras modalidades, tanto elementos de dados mais estritos (por exemplo, bytes de 8 bits) quanto mais amplos (por exemplo, 32 bits ou 64 bits) podem ser armazenados no registro como dados compactados.
[0066] Em uma segunda exibição 941, o mesmo registro pode ser visto e/ou acessado como um registro de máscara de operação de dados compactados 912 que é operável para armazenar uma máscara de operação de dados compactados. Na ilustração, uma máscara de operação de dados compactados M0 de 32 bits é armazenada na ordem mais inferior de 32 bits do registro (isto é, bits [31:0]). Cada um dos 32 bits pode representar um elemento de máscara ou elemento usado para predicação. Todos os bits de máscara são contíguos ou adjacentes uns aos outros. 32 bits mais significantes remanescentes do registro (isto é, bits [63:32]) não são usados para mascaramento. Esses bits podem representar valores sem importância (*), por exemplo, todos zero, todos um, valores que são simplesmente ignorados, qualquer valores possíveis, etc. Em outras modalidades, tanto máscaras mais estreitas (por exemplo, 8 bits, 16 bits, etc.) quanto mais amplas (por exemplo, 64 bits, etc.) podem ser opcionalmente usadas. Tanto todos os bits no registro podem ser usados para mascaramento quanto apenas um subconjunto dos bits pode ser usado para mascaramento. No exemplo ilustrado, a subconjunto de ordem mais inferior dos bits é usada para mascaramento. De modo alternativo, um subconjunto de ordem mais elevada ou outro subconjunto dos bits pode ser usado para mascaramento.
[0067] A Figura 10 é um diagrama de blocos que ilustra uma modalidade na qual um mesmo registro físico pode ser logicamente visto e/ou acessado tanto como um registro de dados compactados 1008 quanto como um registro de máscaras de operação de dados compactados 1012 que armazena múltiplas (isto é, duas ou mais) máscaras de operação de dados compactados. Em uma primeira exibição 1042, o registro pode ser visto e/ou acessado como um registro de dados compactados 1008. O registro ilustrado é de amplitude de 64 bits. Na ilustração, como exemplo, quatro elementos de dados de 16 bits A0-A3 são armazenados no registro de dados compactados de 64 bits. Em outras modalidades, tanto registros mais estreitos (por exemplo, 32 bits) quanto mais amplos (por exemplo, 128 bits, 256 bits, etc.) podem ser usados. Além disso, em outras modalidades, tanto elementos de dados mais estritos (por exemplo, bytes de 8 bits) quanto mais amplos (por exemplo, 32 bits ou 64 bits) podem ser armazenados no registro como dados compactados.
[0068] Em algumas modalidades, também pode haver uma ou mais outras exibições, nas quais o mesmo registro pode ser visto e/ou acessado como um registro de máscaras de operação de dados compactados 1012 que armazena múltiplas (isto é, duas ou mais) máscaras de operação de dados compactados. Na modalidade ilustrada, há uma segunda exibição 1043, uma terceira exibição 1044 e uma quarta exibição 1045. Cada uma dentre a segunda a quarta exibição tem um número diferente de máscaras e tamanho de máscaras. Em outras modalidades, pode haver tão poucas quanto uma única exibição, além da primeira exibição, na qual o mesmo registro pode ser logicamente visto e/ou acessado como um registro de máscaras de operação de dados compactados 1012 que armazena múltiplas máscaras de operação de dados compactados.
[0069] Na segunda exibição 1043, oito máscaras de 8 bits diferentes M0 a M7 são armazenadas no mesmo registro de máscara de operação de dados compactados 1012-1. Por exemplo, uma primeira máscara M0 é armazenada na ordem mais inferior de 8 bits do registro (isto é, bits [7:0]), uma segunda máscara M1 é armazenada próxima à ordem mais inferior de 8 bits do registro (isto é, bits [15:8]) e assim por diante. Na terceira exibição 1044, quatro máscaras de 16 bits diferentes M0 a M3 são armazenadas no mesmo registro de máscara de operação de dados compactados 1012-2. Por exemplo, uma primeira máscara M0 é armazenada na ordem mais inferior de 16 bits do registro (isto é, bits [15:0]), uma segunda máscara M1 é armazenada próxima à ordem mais inferior de 16 bits do registro (isto é, bits [31:16]) e assim por diante. Na quarta exibição 1045, duas máscaras de 32 bits diferentes M0 a M1 são armazenadas no mesmo registro de máscara de operação de dados compactados 1012-3. Por exemplo, uma primeira máscara M0 é armazenada na ordem mais inferior de 32 bits do registro (isto é, bits [31:0]), uma segunda máscara M1 é armazenada próxima à ordem mais inferior de 32 bits do registro (isto é, bits [64:32]). Essas são apenas alguns exemplos de máscaras. Em outras modalidades, tanto máscaras mais estreitas (por exemplo, dois bits, quatro bits, etc.) quanto mais amplas (por exemplo, 64 bits) podem ser usadas.
[0070] Em algumas modalidades, para cada uma da segunda à quarta exibições, cada uma das máscaras pode ser usada para uma operação de dados compactados mascarada separada ou diferente. Por exemplo, uma máscara M0 pode ser indicada por uma primeira instrução de dados compactados mascarada e pode ser usada para mascarar uma operação de dados compactados correspondente, outra máscara M1 pode ser indicada por uma instrução de dados compactados mascarada diferente e pode ser usada para mascarar uma operação de dados compactados correspondente diferente, etc. Cada máscara pode incluir bits de máscara contíguos/adjacentes. Nas operações de dados compactados mascarados, conforme anteriormente descrito, cada bit pode corresponder a um ou mais elementos de dados compactados diferentes (por exemplo, um par de elementos de dados correspondentes compactados).
[0071] Na ilustração, toda a largura do registro (isto é, nesse exemplo, de 64 bits) é usada para armazenar as múltiplas máscaras, embora isso não seja exigido. Em outras modalidades, apenas um subconjunto da largura do registro (por exemplo, um subconjunto de ordem mais elevada, um subconjunto de ordem mais inferior, etc.) pode ser usado para armazenar as múltiplas máscaras. Por exemplo, apenas quatro máscaras de 8 bits podem ser armazenadas na ordem mais inferior de 32 bits de um registro de 64 bits, quatro máscaras de 8 bits podem ser armazenadas na ordem mais inferior de 32 bits de um registro de 128 bits, etc. Os bits não usados para mascaramento podem ter valores sem importância.
[0072] A Figura 11 é um diagrama de blocos que ilustra uma modalidade na qual os bits de uma máscara de operação de dados compactados 1112 são distribuídos dentre os elementos de dados de dados compactados 1108. Esse conceito é ilustrado através de diversos formatos de palavra dupla de 32 bits (dword). Um formato de palavra dupla compactado de 64 bits 1146 é de amplitude de 64 bits e inclui dois elementos de dados de palavra dupla (dword) de 32 bits de dados compactados 1108-1. Os dois elementos de dados de palavra dupla de 32 bits são nomeados na ilustração das posições de bit menos significantes para as mais significantes como de DWORD0 a DWORD1. DWORD0 é armazenada em bits [31:0] e DWORD1 é armazenada em bits [63:32]. Um bit mais significante de cada um dos elementos de dados de palavra dupla representa um bit de máscara de uma máscara de operação de dados compactados 1112-1 que é usado para mascaramento uma operação de dados compactados. Em particular, neste formato, bit [31] e bit [63] são os bits de máscara e esses bits de máscara representa coletivamente uma máscara de operação de dados compactados M0 1112-1.
[0073] Um formato de palavra dupla compactado de 128 bits 1147 é de amplitude de 128 bits e inclui quatro elementos de dados de palavra dupla (dword) de 32 bits de dados compactados 1108-2. Os quatro elementos de dados de palavra dupla de 32 bits são nomeados na ilustração das posições de bit menos significantes para as mais significantes como de DWORD0 a DWORD3. Um bit mais significante de cada um dos elementos de dados de palavra dupla representa um bit de máscara de uma máscara de operação de dados compactados 1112-2 que é usado para mascaramento uma operação de dados compactados. Em particular, neste formato, bit [31], bit [63] e bit [95] são os bits de máscara e esses bits de máscara representa coletivamente uma máscara de operação de dados compactados M0 1112-2.
[0074] Um formato de palavra dupla compactado de 256 bits 1148 é de amplitude de 256 bits e inclui oito elementos de dados de palavra dupla (dword) de 32 bits de dados compactados 1108-3. Os oito elementos de dados de palavra dupla de 32 bits são nomeados na ilustração das posições de bit menos significantes para as mais significantes como de DWORD0 a DWORD7. Um bit mais significante de cada um dos elementos de dados de palavra dupla representa um bit de máscara de uma máscara de operação de dados compactados 1112-3 que é usado para mascaramento de uma operação de dados compactados. Em particular, neste formato, bit [31], bit [63], bit [95], bit [127], bit [159], bit [191], bit [223] e bit [255] são os bits de máscara e esses bits de máscara representa coletivamente uma máscara de operação de dados compactados M0 1112-3.
[0075] Em alguns casos, as máscaras podem ser implantadas em operandos que são do mesmo tamanho que os operandos de dados compactados envolvidos no operando de dados compactados mascarado, embora em muitos casos o número total de bits de máscara pode ser igual ao número total de elementos de dados. Nesses exemplos, o bit mais significante de cada elemento de dados representa o bit de máscara. Em outras modalidades, outro bit dentro de cada elemento de dados pode representar o bit de máscara (por exemplo, o bit menos significante, etc.).
[0076] Deve ser verificado que esses são apenas alguns exemplos de formatos de dados compactados adequados. Os formatos de dados compactados mais estreitos (por exemplo, 32 bits) ou mais amplos (por exemplo, 512 bits) também são adequados. Além disso, para qualquer um desses elementos de dados de formatos de dados compactados tanto mais restrito que 32 bits (por exemplo, bytes de 8 bits, palavras de 16 bits, etc.) ou mais amplo que 32 bits (por exemplo, palavras quádruplas de 64 bits, ponto de flutuação de precisão único de 64 bits, etc.) também são adequados. Os formatos de byte de 8 bits compactados podem ter quatro vezes tantos elementos de dados quanto bits de máscara correspondentes que os formatos de palavra dupla de 32 bits exemplificativos mostrados. Os formatos de palavra de 16 bits compactados podem duas vezes tantos elementos de dados e bits de máscara correspondentes quanto os formatos de palavra dupla de 32 bits exemplificativos mostrados. Os formatos de palavra quádrupla de 64 bits compactados podem metade de tantos elementos de dados e bits de máscara correspondentes quanto os formatos de palavra dupla de 32 bits exemplificativos mostrados. Como exemplo, um formato de byte de 8 bits compactado de 128 bits pode ter dezesseis elementos de dados de byte de 8 bits compactados com o bit mais significante de cada byte que representa um bit de máscara diferente e todos os dezesseis bits coletivamente que representam uma máscara de operação de dados compactados. Em geral, o número de elementos de dados compactados e bits de máscara correspondentes pode ser igual ao tamanho em bits dos dados compactados divididos pelo tamanho em bits dos elementos de dados compactados.
[0077] A Figura 12 é um diagrama de blocos que ilustra uma modalidade na qual um conjunto de registros que tem bits de máscara de operação de dados compactados que são distribuídos dentre os elementos de dados de dados compactados podem ser vistos ou acessados em exibições diferentes enquanto armazenam duas ou mais máscaras menores ou uma única máscara maior. Em uma primeira exibição 1249, o conjunto de dois registros (por exemplo, dois registros físicos de 64 bits) é logicamente visto ou acessado como dois registros de dados compactados de 64 bits nomeados X0-X1. Os registros X0-X1 podem ser registros especificados por instruções de um conjunto de instruções para identificar operandos. Cada um dos dois registros de dados compactados X0-X1 pode ser operável para armazenar um operando de dados compactados de 64 bits. Por exemplo, na modalidade ilustrada, o registro X0 de 64 bits é usado para armazenar um primeiro operando de dados compactados que tem dois elementos de dados de 32 bits A0-A1 e o registro de 64 bits X1 é usado para armazenar um segundo operando de dados compactados que tem dois elementos de dados de 32 bits B0-B1. Nesses operandos de dados compactados, cada um dos elementos de dados compactados pode ter um bit de máscara correspondente. Por exemplo, na modalidade ilustrada, o bit mais significante de cada elemento de dados de 32 bits representa um bit de máscara. Em outras modalidades, tanto tamanhos de elemento de dados mais estreitos quanto mais amplos podem ser usados em vez de e/ou outros bits além do bit mais significante pode ser usado como os bits de máscara (por exemplo, os bits menos significantes dentro de cada elemento de dados ou quaisquer outros bits desejados). Na modalidade ilustrada exemplificativa, para o registro de dados compactados X0, um elemento de dados de ordem mais inferior de 32 bits tem um bit de máscara M0a e um elemento de dados de ordem maior de 32 bits tem um bit de máscara M0b. Os bits de máscara M0a e M0b representam uma máscara de operação de dados compactados M0. De modo similar, para o registro de dados compactados X1, um elemento de dados de ordem mais inferior de 32 bits tem um bit de máscara M1a e um elemento de dados de ordem maior de 32 bits têm um bit de máscara M1b. Os bits de máscara M1a e M1b representam uma máscara de operação de dados compactados M1. Na primeira exibição, os bits de máscara nos dois registros de 64 bits X0-X1 (isto é, M0a, M0b, M1a, e M1b) são logicamente visto como duas máscaras de operação de dados compactados diferentes (por exemplo, podem ser usados por instruções de dados compactados mascaradas diferentes para operações de dados compactados mascaradas diferentes).
[0078] Em uma segunda exibição 1250, o mesmo conjunto de dois registros (por exemplo, dois registros físicos de 64 bits) é logicamente visto ou acessado como um único registro de dados compactados de 128 bits Y0. O registro Y0 pode ser um registro especificado por instruções de um conjunto de instruções para identificar operandos. Na segunda exibição 1250, a ordem mais inferior de 64 bits (isto é, bits 63:0) do registro de 128 bits Y0 mapeia ou corresponde ao registro X0 de 64 bits, enquanto que a ordem maior de 64 bits (isto é, bits 127:64) do registro de 128 bits Y0 mapeia ou corresponde ao registro de 64 bits X1. Múltiplos registros (nesse caso, dois) menores (nesse caso, 64 bits) são logicamente combinados ou agrupados para formar um único registro maior (nesse caso, 128 bits). O registro de dados compactados Y0 pode ser operável para armazenar um operando de dados compactados de 128 bits que tem quatro elementos de dados de 32 bits A0-A3. Cada um dos elementos de dados compactados pode ter um bit de máscara correspondente. Por exemplo, na modalidade ilustrada, o bit mais significante de cada elemento de dados de 32 bits representa um bit de máscara. Em outras modalidades, tanto tamanhos de elemento de dados mais estreitos quanto mais amplos podem ser usados em vez de e/ou outros bits além do bit mais significante podem ser usados como os bits de máscara. Na modalidade ilustrada exemplificativa, o elemento de dados de ordem mais inferior de 32 bits A0 tem um bit de máscara M0a, o elemento de dados de 32 bits A1 tem um bit de máscara M0b, o elemento de dados de 32 bits A2 tem um bit de máscara M0c e o elemento de dados de ordem maior de 32 bits A3 tem um bit de máscara M0d. Os bits de máscara M0a, M0b, M0c e M0d representam uma máscara de operação de dados compactados M0. Nessa segunda exibição, os bits de máscara no registro de 128 bits Y0 (isto é, M0a, M0b, M0c e M0d) podem ser logicamente visto como uma única máscara de operação de dados compactados (por exemplo, podem ser usados pela mesma única instrução de dados compactados mascarada para a mesma única operação de dados compactados mascarada).
[0079] Na modalidade ilustrada há duas exibições diferentes. Em outras modalidades, pode haver três ou mais exibições diferentes. Por exemplo, uma terceira exibição pode mostrar quatro dos registros de 64 bits X0-X3 como um único registro de 256 bits Z0. Em diversas modalidades, os registros físicos atuais usados para implantar as exibições podem ser registros de 32 bits, registros de 64 bits ou registros de 128 bits, embora o escopo da invenção não seja tão limitado. Tanto registros mais amplos quanto mais estreitos que 64-bits e 128-bits podem ser usados. Na modalidade ilustrada registros adjacentes ou sequenciais são usados, embora isso não seja exigido. Em outras modalidades, registros não adjacentes podem ser combinados (por exemplo, registros não adjacentes em bancos diferentes, registros alternativos, etc.).
[0080] Conforme mostrado nas Figuras 9 a 12, em algumas modalidades, um conjunto de registros de dados compactados pode ser usado como registros de máscara. Em algumas modalidades, apenas um subconjunto do número total de registros de dados compactados pode ser usado como registros de máscara. Por exemplo, em uma modalidade particular, apenas oito registros de dados compactados de um conjunto de registros de dados compactados maior pode ser usado para mascaramento com o uso de uma das abordagens mostradas nas Figuras 9 a 12. Vantajosamente, isso pode permitir que um certo dentre os registros sejam especificados como uma fonte de um ou mais máscara de operação de dados compactados com poucos bits necessários para o relatório descritivo (por exemplo, três bits no caso de oito registros). Em algumas modalidades, um certo valor ou valor predeterminado em um conjunto de bits para especificar um registro de máscara (por exemplo, um valor de zero) pode ser usado para habilitar o mascaramento para que a eficácia aumentada possa ser alcançada para evitar predicação desnecessária quando não necessário. Arquiteturas de Núcleo Exemplificativas, Processadores e
Arquiteturas de Computador
[0081] Os núcleos de processador podem ser implantados de maneiras diferentes, para propósitos diferentes e em processadores diferentes. Por exemplo, as implantações de tais núcleos podem incluir: 1) um núcleo em ordem de propósito geral destinado para computação de propósito geral; 2) um núcleo fora de ordem de propósito geral de desempenho elevado destinado para computação de propósito geral; 3) um núcleo de propósito especial destinado primeiramente para gráficos e/ou computação científica (rendimento). As implantações de processadores diferentes podem incluir: 1) um CPU que inclui um ou mais núcleos em ordem de propósito geral destinados para computação de propósito geral e/ou um ou mais núcleos fora de ordem de propósito geral destinados para computação de propósito geral; e 2) um coprocessador que inclui um ou mais núcleos de propósito geral destinados primeiramente para gráficos e/ou científicos (rendimento). Tais processadores diferentes levam a arquiteturas de sistema de computador diferentes, os quais podem incluir: 1) o coprocessador em um chip separado do CPU; 2) o coprocessador em uma matriz separada no mesmo pacote que um CPU; 3) o coprocessador na mesma matriz como um CPU (no caso, tal coprocessador é, algumas vezes, chamado de lógica de propósito geral, como lógica científica e/ou de gráficos (rendimento) integrados ou como núcleos de propósito geral) e 4) um sistema em um chip que pode incluir na mesma matriz o CPU descrito (algumas vezes, chamado de núcleo(s) de aplicativo ou processador (es) de aplicativo), o coprocessador descrito acima e funcionalidade adicional. As arquiteturas de núcleo exemplificativas são descritas a seguir, seguidas por descrições de arquiteturas de computador e processadores exemplificativos. Arquiteturas de Núcleo Exemplificativas Diagrama de blocos de núcleo em ordem e fora de ordem
[0082] A Figura 13A é um diagrama em blocos que ilustra tanto um encadeamento em ordem exemplificativo quanto um renomeação de registro exemplificativo, encadeamento de emissão/execução fora de ordem de acordo com as modalidades da invenção; A Figura 13B é um diagrama em blocos que ilustra tanto uma modalidade exemplificativa de um núcleo de arquitetura em ordem quanto um renomeação de registro exemplificativo, um núcleo de arquitetura de emissão/execução fora de ordem a serem incluídos em um processador de acordo com as modalidades da invenção; As caixas alinhadas sólidas nas Figuras 13A-B ilustram o encadeamento em ordem e núcleo em ordem, enquanto a adição opcional das caixas alinhadas pontilhadas ilustram a renomeação de registro, encadeamento e núcleo de emissão/execução fora de ordem. Devido ao fato de que o aspecto em ordem é um subconjunto do aspecto fora de ordem, o aspecto fora de ordem será descrito.
[0083] Na Figura 13A, um encadeamento de processador 1300 inclui um estágio de busca 1302, um estágio de decodificação de comprimento 1304, um estágio de decodificação 1306, um estágio de alocação 1308, um estágio de renomeação 1310, um estágio de cronograma (também conhecido como uma expedição ou emissão) 1312, um estágio de leitura de memória/leitura de registro 1314, um estágio de execução 1316, um estágio de escrita de memória/escrever novamente 1318, um estágio de administração de exceção 1322 e um estágio de confirmação 1324.
[0084] A Figura 13B mostra núcleo de processador 1390 que inclui uma unidade de extremidade frontal 1330 acoplada a uma unidade de mecanismo de execução 1350 e ambas são acopladas a uma unidade de memória 1370. O núcleo 1390 pode ser um núcleo de computação de conjunto de instruções reduzido (RISC), um núcleo de computação de conjunto de instruções complexo (CISC), um núcleo de palavra de instrução muito longo (VLIW) ou um tipo de núcleo alternativo ou híbrido. Ainda como outra opção, o núcleo 1390 pode ser um núcleo de propósito especial, como, por exemplo, um núcleo de comunicação ou de rede, mecanismo de compressão, núcleo de coprocessador, núcleo de unidade de processamento de gráficos de computação de propósito geral (GPGPU), núcleo de gráficos ou similares.
[0085] A unidade de extremidade frontal 1330 inclui uma unidade de previsão de ramificação 1332 acoplada a um cache de instrução unidade 1334, que é acoplado a um armazenamento temporário de à parte de translação de instrução (TLB) 1336, que é acoplado a uma unidade de busca de instrução 1338, que é acoplada a uma unidade de decodificação 1340. A unidade de decodificação 1340 (ou decodificador) pode decodificar instruções e gerar como uma emissão uma ou mais micro-operações, pontos de entrada de microcódigo, microinstruções, outras instruções ou outros sinais de controle, que são decodificados a partir de, ou que de outro modo refletem ou são derivados das instruções originais. A unidade de decodificação 1340 pode ser implantada com o uso de diversos mecanismos diferentes. Exemplos de mecanismos adequados incluem, porém, sem limitação, tabelas de consulta, implantações de hardware, matrizes de lógica programável (PLAs), memórias de apenas leitura de microcódigo (ROMs), etc. Em uma modalidade, o núcleo 1390 inclui um microcódigo ROM ou outro meio que armazena microcódigo para certas macroinstruções (por exemplo, na unidade de decodificação 1340 ou de outro modo dentro da unidade de extremidade frontal 1330). A unidade de decodificação 1340 é acoplada a uma unidade de renomeação/alocador 1352 na unidade de mecanismo de execução 1350.
[0086] A unidade de mecanismo de execução 1350 inclui a unidade de renomeação/alocador 1352 acoplada a uma unidade de baixa 1354 e um conjunto de uma ou mais unidade(s) de programador 1356. A(s) unidade(s) de programador 1356 representa(m) qualquer número de programadores diferentes, que inclui estações de reservas, janela de instrução central, etc. A(s) unidade(s) de programador 1356 é(são) acopladas à(s) unidade(s) de arquivo(s) de registro físico 1358. Cada uma das unidades de arquivo(s) de registro físico 1358 representa um ou mais arquivos de registro físico, aqueles diferentes que armazenam um ou mais tipos de dados diferentes, como número inteiro em escala, ponto de flutuação em escala, número inteiro compactado, ponto de flutuação compactado, número inteiro de vetor, ponto de flutuação de vetor, status (por exemplo, um ponteiro de instrução que é o endereço da próxima instrução a ser executada), etc. Em uma modalidade, a unidade de arquivo(s) de registro físico 1358 compreende uma unidade de registros de vetor, uma unidade de registros de máscara de escrita e uma unidade de registros em escala. Essas unidades de registro podem fornecer registros de vetor de arquitetura, registros de máscara de vetor e registros de propósito geral. A(s) unidade(s) de arquivo(s) de registro físico 1358 é sobreposta pela unidade de baixa 1354 para ilustrar diversas maneiras nas quais a renomeação de registro e a execução fora de ordem pode ser implantada (por exemplo, com o uso de um armazenamento(s) temporário(s) de reordenamento e um arquivo(s) de registro de baixa; com o uso de um arquivo(s) de futuro, um armazenamento(s) temporário(s) de histórico e um arquivo(s) de registro de baixa; com o uso de a mapas de registro e um agrupamento de registros; etc.). A unidade de baixa 1354 e a(s) unidade(s) de arquivo(s) de registro físico 1358 são acopladas aos aglomerado(s) de execução 1360. Os aglomerado(s) de execução 1360 incluem um conjunto de uma ou mais unidades de execução 1362 e um conjunto de uma ou mais unidades de acesso de memória 1364. As unidades de execução 1362 podem realizar diversas operações (por exemplo, desvios, adição, subtração, multiplicação) e em diversos tipos de dados (por exemplo, ponto de flutuação em escala, número inteiro compactado, ponto de flutuação compactado, número inteiro de vetor, ponto de flutuação de vetor). Embora algumas modalidades possam incluir diversas unidades de execução dedicadas a funções específicas ou conjuntos de funções, outras modalidades podem incluir apenas uma unidade de execução ou múltiplas unidades de execução em que todas realizam todas as funções. A(s) unidade(s) de programador 1356, unidade(s) de arquivo(s) de registro físico 1358 e aglomerado(s) de execução 1360 são mostrados como sendo possivelmente plurais devido ao fato de que certas modalidades criam encadeamentos separados para certos tipos de dados/operações (por exemplo, um encadeamento de número inteiro em escala, um ponto de flutuação em escala/número inteiro compactado/ponto de flutuação compactado/número inteiro de vetor/ponto de flutuação de encadeamento de vetor e/ou um encadeamento de acesso de memória em que cada um tem sua própria unidade programadora, unidade de arquivo(s) de registro físico e/ou aglomerado de execução - e no caso de um encadeamento de acesso de memória separado, certas modalidades são implantadas nas quais apenas o aglomerado de execução desse encadeamento tem a(s) unidade(s) de acesso de memória 1364). Também dever ser entendido que quando encadeamentos separados são usados, um ou mais desses pipelines podem ser emissão/execução fora de ordem e a em ordem restante.
[0087] O conjunto de unidades de acesso de memória 1364 é acoplado à unidade de memória 1370, que inclui uma unidade de TLB de dados 1372 acoplada a uma unidade de cache de dados 1374 acoplada a uma unidade de cache de nível 2 (L2) 1376. Em uma modalidade exemplificativa, as unidades de acesso de memória 1364 podem incluir uma unidade de carga, uma unidade de endereço de armazenamento e uma unidade de dados de armazenamento, em que cada uma é acoplada à unidade de TLB de dados 1372 na unidade de memória 1370. O cache de instrução unidade 1334 é adicionalmente acoplado a uma unidade de cache de nível 2 (L2) 1376 na unidade de memória 1370. A unidade de cache de L2 1376 é acoplada a um ou mais outros níveis de cache e eventualmente a uma memória principal.
[0088] À título de exemplificação, a renomeação de registro exemplificativa, arquitetura de núcleo de emissão/execução fora de ordem pode implantar o encadeamento 1300, como a seguir: 1) a busca de instrução 1338 realiza a busca e estágios de decodificação de comprimento 1302 e 1304; 2) a unidade de decodificação 1340 realiza o estágio de decodificação 1306; 3) a unidade de renomeação/alocador 1352 realiza o estágio de alocação 1308 e estágio de renomeação 1310; 4) a(s) unidade(s) de programador 1356 realiza(m) o estágio de cronograma 1312; 5) a(s) unidade(s) de arquivo(s) de registro físico 1358 e a unidade de memória 1370 realizam o estágio de leitura de memória/leitura de registro 1314; o aglomerado de execução 1360 realiza o estágio de execução 1316; 6) a unidade de memória 1370 e a(s) unidade(s) de arquivo(s) de registro físico 1358 realizam o estágio de escrita de memória/escrever novamente 1318; 7) diversas unidades podem estar envolvidas no estágio de administração de exceção 1322 e 8) a unidade de baixa 1354 e a(s) unidade(s) de arquivo(s) de registro físico 1358 realiza o estágio de confirmação 1324.
[0089] O núcleo 1390 pode suportar um ou mais conjuntos de instruções (por exemplo, o conjunto de instruções x86 (com algumas extensões que foram adicionadas com versões mais recentes); o conjunto de instruções de MIPS de MIPS Technologies de Sunnyvale, CA; o conjunto de instruções de ARM (com extensões adicionais opcionais, como NEON) de ARM Holdings de Sunnyvale, CA), que inclui a(s) instrução(s) descrita(s) no presente documento. Em uma modalidade, o núcleo 1390 inclui lógica para suportar uma extensão de conjunto de instrução de dados compactados (por exemplo, AVX1, AVX2) permitindo, desse modo, as operações usadas por muitos aplicativos de multimídia a serem realizados com o uso de dados compactados.
[0090] Deve ser entendido que o núcleo pode suportar múltiplos encadeamentos (executar dois ou mais conjuntos paralelos de operações ou ramificações) e o pode fazer em uma variedade de maneiras que incluem múltiplos encadeamentos segmentado de tempo, múltiplos encadeamentos simultâneo (em que um único núcleo físico fornece um núcleo lógico para cada uma das ramificações daquele núcleo físico é simultaneamente múltiplos encadeamentos) ou uma combinação dos mesmos (por exemplo, busca segmentada de tempo e decodificar e múltiplos encadeamentos simultâneo depois disso como na tecnologia Intel® Hyperthreading).
[0091] Embora a renomeação de registro seja descrita no contexto de execução fora de ordem, deve ser entendido que a renomeação de registro pode ser usada em uma arquitetura em ordem. Embora as modalidades ilustradas do processador também incluam instrução separada e unidades de cache de dados 1334/1374 e uma unidade de cache compartilhada de L2 1376, modalidades alternativas podem ter um único cache interno tanto para instruções quanto dados, como, por exemplo, um cache interno de Nível 1 (L1) ou múltiplos níveis de cache interno. Em algumas modalidades, o sistema pode incluir uma combinação de um cache interno e um cache externo que é externo ao núcleo e/ou ao processador. De modo alternativo, todos os caches podem ser externos ao núcleo e/ou ao processador. Arquitetura de Núcleo em Ordem Exemplificativa
Específica
[0092] As Figuras 14A a 12B ilustram um diagrama em blocos de uma arquitetura de núcleo em ordem exemplificativa mais específica, cujo núcleo pode ser um dentre vários blocos lógicos (incluindo outros núcleos do mesmo tipo e/ou de tipos diferentes) em um chip; Os blocos de lógica se comunicam através de uma rede de interconexão de largura de banda alta (por exemplo, uma rede em anel) com alguma lógica de função fixa, interfaces de I/O de memória e outra lógica de I/O necessária, dependendo do aplicativo.
[0093] A Figura 14A é um diagrama de blocos de um único núcleo de processador, junto com sua conexão para a rede de interconexão em matriz 1402 e com seu subconjunto local do cache de Nível 2 (L2) 1404, de acordo com as modalidades da invenção. Em uma modalidade, um decodificador de instrução 1400 suporta o conjunto de instruções x86 com uma extensão de conjunto de instrução de dados compactados. Um cache de L1 1406 permite acessos de latência baixa para memória cache nas unidades em escala e de vetor. Embora em uma modalidade (para simplificar o projeto), uma unidade em escala 1408 e uma unidade de vetor 1410 usem conjuntos de registro separados (respectivamente, registro em escala 1412 e registro de vetor 1414) e dados transferidos entre os mesmos são escritos para memorizar e, então, ler novamente em um cache de nível 1 (L1) 1406, modalidades alternativas da invenção podem usar uma abordagem diferente (por exemplo, usar um único conjunto de registro ou incluir uma trajetória de comunicação que permite que os dados sejam transferidos entre os dois arquivos de registro sem ser escritos e lidos novamente).
[0094] O subconjunto local do cache de L2 1404 é parte de um cache de L2 global que é dividido em subconjuntos locais separados, um por núcleo de processador. Cada núcleo de processador tem uma trajetória de acesso direto para seu próprio subconjunto local do cache de L2 1404. Os dados lidos por um núcleo de processador são armazenados em seu subconjunto de cache de L2 1404 e podem ser acessados rapidamente, em paralelo com outros núcleos de processador que acessam seus próprios subconjuntos de cache de L2 locais. Os dados escritos por um núcleo de processador são armazenados em seu próprio subconjunto de cache de L2 1404 e são liberados a partir de outros subconjuntos, se necessário. A rede em anel garante a coerência para dados compartilhados. A rede em anel é bidirecional para permitir que agentes como núcleos de processador, caches de L2 e outros blocos de lógica se comuniquem uns com os outros dentro do chip. Cada trajetória de dados de anel é de amplitude de 1.012 bits por direção.
[0095] A Figura 14B é uma vista expandida de parte do núcleo de processador na Figura 14A de acordo com as modalidades da invenção. A Figura 14B inclui um cache de dados de L1 1406A, parte do cache de L1 1404, bem como mais detalhes em relação à unidade de vetor 1410 e ao registro de vetor 1414. Especificamente, a unidade de vetor 1410 é uma unidade de processamento de vetor de amplitude 16 (VPU) (consulte a amplitude 16 ALU 1428), que executa um ou mais de números inteiros, instruções de flutuação de precisão única e flutuação de precisão dupla. A VPU suporta realização de swizziling, as inserções de registro com unidade swizzle 1420, conversão numérica com unidades de conversão numérica 1422A-B e replicação com unidade de replicação 1424 na inserção de memória. Os registros de máscara de escrita 1426 permitem predicar escritas de vetor resultantes. Processador com controlador de memória integrado e gráficos
[0096] A Figura 15 é um diagrama em blocos de um processador 1500 que pode ter mais de um núcleo, pode ter um controlador de memória integrado, e pode ter gráficos integrados de acordo com modalidades da invenção; As caixas alinhadas sólidas na Figura 15 ilustram um processador 1500 com um único núcleo 1502A, um agente de sistema 1510, um conjunto de uma ou mais unidades de controle de barramento 1516, enquanto a adição opcional das caixas alinhadas pontilhadas ilustra um processador alternativo 1500 com múltiplos núcleos 1502A-N, um conjunto de uma ou mais unidade(s) de controlador de memória integrado 1514 na unidade de agente de sistema 1510 e lógica de propósito geral 1508.
[0097] Desse modo, implantações diferentes do processador 1500 podem incluir: 1) um CPU com a lógica de propósito geral 1508 que é a lógica científica e/ou de gráficos (rendimento) integrados (que podem incluir um ou mais núcleos) e os núcleos 1502A-N que são um ou mais núcleos de propósito geral (por exemplo, núcleos em ordem de propósito geral, núcleos fora de ordem de propósito geral, uma combinação dos dois); 2) um coprocessador com os núcleos 1502A-N que são um número grande de núcleos de propósito geral destinados primeiramente para gráficos e/ou científicos (rendimentos) e 3) um coprocessador com os núcleos 1502A-N que são um número grande de núcleos em ordem de propósito geral. Desse modo, o processador 1500 pode ser um processador de propósito geral, coprocessador ou processador de propósito geral, como, por exemplo, um processador de rede ou de comunicação, mecanismo de compressão, processador de gráficos, GPGPU (unidade de processamento de gráficos de propósito geral), um coprocessador de muito núcleos integrados de rendimento alto (MIC) (que incluem 30 ou mais núcleos), processador incorporado ou similares. O processador pode ser implantado em um ou mais chips. O processador 1500 pode ser uma parte de e/ou pode ser implantado em um ou mais substratos que usam qualquer diversidade de tecnologias de processo, como, por exemplo, BiCMOS, CMOS, ou NMOS.
[0098] A hierarquia de memória inclui um ou mais níveis de cache nos núcleos, um conjunto ou uma ou mais unidades de cache compartilhado 1506 e uma memória externa (não mostrada) acoplada ao conjunto de unidades controladoras de memória integrada 1514. O conjunto de unidades de cache compartilhado 1506 pode incluir um ou mais caches de nível médio, como o nível 2 (L2), o nível 3 (L3), o nível 4 (L4) ou outros níveis de cache, um cache de último nível (LLC) e/ou combinações dos mesmos. Enquanto em uma modalidade um anel com base em unidade de interconexão 1512 se interconecta à lógica de gráficos integrada 1508, o conjunto de unidades de cache compartilhadas 1506 e a unidade de agente de sistema 1510 /unidade(s) de controlador de memória integrado 1514, modalidades alternativas podem usar qualquer número de técnicas bem conhecidas para interconectar tais unidades. Em uma modalidade, a coerência é mantida entre uma ou mais unidades de cache 1506 e núcleos 1502- A-N.
[0099] Em algumas modalidades, um ou mais dos núcleos 1502A-N têm a capacidade de multilinha. O agente de sistema 1510 inclui aqueles componentes que coordenam e operam os núcleos 1502A-N. A unidade de agente de sistema 1510 pode incluir, por exemplo, uma unidade de controle de potência (PCU) e uma unidade exibição. A PCU pode ser ou incluir a lógica e os componentes necessários para regular o estado de potência dos núcleos 1502A-N e a lógica de gráficos integrada 1508. A unidade exibição tem como objetivo acionar um ou mais monitores conectados externamente.
[00100] Os núcleos 1502A-N podem ser homogêneos ou heterogêneos em termos de conjunto de instruções de arquitetura; que é, dois ou mais dos núcleos 1502A-N podem ter capacidade para execução no mesmo conjunto de instruções, enquanto outros podem ter capacidade para executar apenas um subconjunto daquele conjunto de instruções ou um conjunto de instruções diferente. Arquiteturas de Computador Exemplificativas
[00101] As Figuras 16 a 19 são diagramas de blocos de arquiteturas de computador exemplificativas. Outros projetos e configurações de sistema conhecidos nas técnicas para computadores do tipo laptops, computadores do tipo desktops, PCs portáteis, assistentes digitais pessoais, estações de trabalho de engenharia, servidores, dispositivos de rede, cubos de rede, comutadores, processadores inseridos, processadores de sinal digital (DSPs), dispositivos de gráficos, dispositivos de videogame, caixas de topo de conjunto, microcontroladores, telefones celulares, jogadores de mídia portátil, dispositivos portáteis e diversos outros dispositivos eletrônicos, também são adequados. Em geral, uma grande variedade de sistemas ou dispositivos eletrônicos com capacidade para incorporar um processador e/ou outra lógica de execução conforme revelado no presente documento são, em geral, adequados.
[00102] Agora em referência à Figura 16, é mostrado um diagrama em blocos de um sistema de acordo com uma modalidade da presente invenção. O sistema 1600 pode incluir um ou mais processadores 1610, 1615, que são acoplados a um cubo de controlador 1620. Em uma modalidade, o cubo de controlador 1620 inclui um cubo de controlador de memória de gráficos (GMCH) 1690 e um Cubo de Entrada/a(IOH) 1650 (que pode estar em chips separados); o GMCH 1690 inclui controladores de memória e gráficos que devem ser acoplados à memória 1640 e a um coprocessador 1645; o IOH 1650 é acoplado em dispositivos de entrada/saída (I/O) 1660 ao GMCH 1690. De modo alternativo, um ou ambos dentre os controladores de memória e gráficos são integrados dentro do processador (conforme descrito no presente documento), a memória 1640 e o coprocessador 1645 são acoplados diretamente ao processador 1610 e o cubo de controlador 1620 em um único chip com o IOH 1650.
[00103] A natureza opcional de processadores adicionais 1615 é indicado na Figura 16 com linhas tracejadas. Cada processador 1610, 1615 pode incluir um ou mais dos núcleos de processamento descritos no presente documento e pode ser alguma versão do processador 1500.
[00104] A memória 1640 pode ser, por exemplo, memória de acesso aleatório dinâmica (DRAM), memória de alteração de fase (PCM) ou uma combinação das duas. Para pelo menos uma modalidade, o cubo de controlador 1620 se comunica com o processador(s) 1610, 1615 por meio de um barramento de múltiplos depósitos, como um barramento de lado frontal (FSB), interface ponto a ponto como Interconexão de Trajetória Rápida (QPI) ou conexão similar 1695.
[00105] Em uma modalidade, o coprocessador 1645 é um processador de propósito geral, como, por exemplo, um processador de MIC de rendimento alto, um processador de rede ou de comunicação, mecanismo de compressão, processador de gráficos, GPGPU, processador inserido ou similares. Em uma modalidade, o cubo de controlador 1620 pode incluir um acelerador de gráficos integrados.
[00106] Pode haver uma variedade de diferenças entre os recursos físicos 1610, 1615 em termos de um espectro de métricas de mérito que inclui características de consumo de energia, térmico, de microarquitetura, de arquitetura e similares.
[00107] Em uma modalidade, o processador 1610 executa instruções que controlam operações de processamento de dados de um tipo geral. Instruções de coprocessador podem ser inseridas dentro das instruções. O processador 1610 reconhece essas instruções de coprocessador como sendo de um tipo que deve ser executado pelo coprocessador fixo 1645. Em conformidade, o processador 1610 emite essas instruções de coprocessador (ou sinais de controle que representam instruções de coprocessador) em um barramento de coprocessador ou outra interconexão, para o coprocessador 1645. Os coprocessador (es) 1645 aceitam e executam as instruções de coprocessador recebidas.
[00108] Agora, em referência à Figura 17, é mostrado um diagrama de blocos de um primeiro sistema exemplificativo mais específico 1700 de acordo com uma modalidade da presente invenção. Conforme mostrado na Figura 17, o sistema de múltiplos processadores 1700 é um sistema de interconexão ponto a ponto e inclui um primeiro processador 1770 e um segundo processador 1780 acoplados por meio de uma interconexão ponto a ponto 1750. Cada um dos processadores 1770 e 1780 podem ser alguma versão do processador 1500. Em uma modalidade da invenção, os processadores 1770 e 1780 são respectivamente processadores 1610 e 1615, enquanto o coprocessador 1738 é o coprocessador 1645. Em outra modalidade, os processadores 1770 e 1780 são respectivamente o processador 1610 e o coprocessador 1645.
[00109] Os processadores 1770 e 1780 são mostrados incluindo as unidades de controlador de memória integrado (IMC) 1772 e 1782, respectivamente. O processador 1770 também inclui como parte de suas interfaces ponto a ponto (P-P) de unidades de controlador de barramento 1776 e 1778; de modo similar, o segundo processador 1780 inclui interfaces P-P 1786 e 1788. Os processadores 1770, 1780 podem trocar informações por meio de uma interface ponto a ponto (PP) 1750 com o uso de circuitos de interface P-P 1778, 1788. Conforme mostrado na Figura 17, IMCs 1772 e 1782 acoplam os processadores a respectivas memórias, a saber, uma memória 1732 e uma memória 1734, que pode ser porções de memória principal localmente fixadas aos respectivos processadores.
[00110] Os processadores 1770, 1780 podem, cada um, trocar informações com um conjunto de chips 1790 por meio de interfaces individuais P-P 1752, 1754 com o uso de circuitos de interface ponto a ponto 1776, 1794, 1786, 1798. O conjunto de chips 1790 pode opcionalmente trocar informações com o coprocessador 1738 por meio de uma interface de alto desempenho 1739. Em uma modalidade, o coprocessador 1738 é um processador de propósito geral, como, por exemplo, um processador de MIC de rendimento alto, um processador de rede ou de comunicação, mecanismo de compressão, processador de gráficos, GPGPU, processador inserido ou similares.
[00111] Um cache compartilhado (não mostrado) pode ser incluído tanto no processador quanto fora de ambos os processadores, ainda conectado com os processadores por meio de interconexão P-P, para que uma ou ambas as informações de cache local de processadores podem ser armazenadas no cache compartilhado se um processador for colocado em um modo de energia baixo.
[00112] O conjunto de chips 1790 pode ser acoplado a um primeiro barramento 1716 por meio de uma interface 1796. Em uma modalidade, o primeiro barramento 1716 pode ser um barramento de Interconexão de Componente Periférica (PCI) ou um barramento como um barramento de PCI Expresso ou outro barramento de interconexão de I/O de terceira geração, embora o escopo da presente invenção não é tão limitado.****
[00113] Conforme mostrado na Figura 17, diversos dispositivos de I/O 1714 podem ser acoplados ao primeiro barramento 1716, junto com uma ponte de barramento 1718 que acopla o primeiro barramento 1716 a um segundo barramento 1720. Em uma modalidade, um ou mais processador(es) adicional(is) 1715, como coprocessadores, processadores de MIC de alto rendimento, GPGPU’s, aceleradores (como, por exemplo, aceleradores de gráficos ou unidades de processamento de sinal digital (DSP)), matriz de porta programável de campo ou qualquer outro processador, são acoplados ao primeiro barramento 1716. Em uma modalidade, o segundo barramento 1720 pode ser um barramento de contagem de fixação baixa (LPC). Diversos dispositivos podem ser acoplados a um segundo barramento 1720 que inclui, por exemplo, um teclado e/ou mouse 1722, dispositivos de comunicação 1727 e uma unidade de armazenamento 1728, como uma unidade de disco ou outro dispositivo de armazenamento de massa que pode incluir instruções/código e dados 1730, em uma modalidade. Adicionalmente, uma I/O de áudio 1724 pode ser acoplada ao segundo barramento 1720. Verifique que outras arquiteturas são possíveis. Por exemplo, em vez da arquitetura ponto a ponto da Figura 17, um sistema pode implantar um barramento de múltiplos depósitos ou outra tal arquitetura.
[00114] Agora, em referência à Figura 18, é mostrado um diagrama de blocos de um segundo sistema exemplificativo mais específico 1800 de acordo com uma modalidade da presente invenção. Os elementos similares nas Figuras 17 a 18 sustentam numerais de referência similares e certos aspectos da Figura 17 foram omitidos a partir da Figura 18 a fim de evitar obscurecer outros aspectos da Figura 18.
[00115] A Figura 18 ilustra que os processadores 1770, 1780 podem incluir memória integrada e lógica de controle de I/O (“CL”) 1772 e 1782, respectivamente. Desse modo, a CL 1772, 1782 inclui unidades de controlador de memória integrada e inclui lógica de controle de I/O. A Figura 18 ilustra que não apenas são as memórias 1732, 1734 acopladas à CL 1772, 1782, mas também que dispositivos de I/O 1814 também são acoplados à lógica de controle 1772, 1782. Os dispositivos de I/O de legado 1815 são acoplados ao conjunto de chips 1790.
[00116] Agora em referência à Figura 19, é mostrado um diagrama em blocos de um SoC 1900 de acordo com uma modalidade da presente invenção. Os elementos similares na Figura 15 sustentam numerais de referência similares. Além disso, as caixas de linhas pontilhadas são recursos opcionais nos SoCs mais avançados. Na Figura 19, uma unidade de interconexão(s) 1902 é acoplada a: um processador de aplicativo 1910 que inclui um conjunto de um ou mais núcleos 202A-N e unidade(s) de cache compartilhado 1506; uma unidade de agente de sistema 1510; uma unidade(s) de controlador de barramento 1516; uma unidade(s) de controlador de memória integrado 1514; um conjunto ou um ou mais coprocessadores 1920 que podem incluir lógica de gráficos integrada, um processador de imagem, um processador de áudio e um processador de vídeo; uma unidade de memória de acesso aleatório estático (SRAM) 1930; uma unidade de acesso de memória direto (DMA) 1932 e uma unidade de exibição 1940 para se acoplar a um ou mais visores externos. Em uma modalidade, os coprocessador(s) 1920 incluem um processador de propósito geral, como, por exemplo, um processador de rede ou de comunicação, mecanismo de compressão, GPGPU, um processador de MIC de rendimento alto, processador incorporado ou similares.
[00117] As modalidades dos mecanismos revelados no presente documento podem ser implantadas em hardware, software, firmware ou uma combinação de tais abordagens de implantação. As modalidades da invenção podem ser implantadas como execução de programas de computador ou código de programa em sistemas programáveis que compreendem pelo menos um processador, um sistema de armazenamento (que inclui memória volátil e não volátil e/ou elementos de armazenamento), pelo menos um dispositivo de entrada e pelo menos um dispositivo de saída.
[00118] O código de programa, como o código 1730 ilustrado na Figura 17, pode ser aplicado a instruções de entrada para realizar as funções descritas no presente documento e gerar informações de saída. As informações de saída podem ser aplicadas a um ou mais dispositivos de saída, de maneira conhecida. Para propósitos dessa aplicação, um sistema de processamento inclui qualquer sistema que tenha um processador, como, por exemplo; um processador de sinal digital (DSP), um microcontrolador, um circuito integrado de aplicação específica (ASIC) ou um microprocessador.
[00119] O código de programas pode ser implantado em uma linguagem de procedimentos de alto nível ou de programação orientada por objeto para se comunicar com um sistema de processamento. O código de programa também pode ser implantado na montagem ou linguagem de máquina, se desejado. De fato, os mecanismos descritos no presente documento não são limitados no escopo a qualquer linguagem de programação particular. Em qualquer caso, a linguagem pode ser uma linguagem compilada ou interpretada.
[00120] Um ou mais aspectos de pelo menos uma modalidade podem ser implantados por instruções representativas armazenadas em um meio legível por máquina que representa diversas lógicas dentro do processador, que quando lido por uma máquina faz com que a máquina fabrique lógica para realizar as técnicas descritas no presente documento. Tais representações, conhecidas como “núcleos de IP” podem ser armazenadas em um meio legível por máquina, tangível e fornecidas para diversos consumidores ou instalações de fabricação para carregar nas máquinas de fabricação que, de fato, produzem a lógica ou processador.
[00121] Tal meio de armazenamento legível por máquina pode incluir, sem limitação, disposições tangíveis não transitórios de artigos fabricados ou formados por uma máquina ou dispositivo, que inclui meio de armazenamento como disco rígido, qualquer outro tipo de disco que inclui disquetes, discos ópticos, memórias de apenas leitura de disco compacto (CD-ROMs), dispositivos semicondutores, discos ópticos magnéticos e regravável de disco compacto (CD-RWs) como memórias de apenas leitura (ROMs), memórias de acesso aleatório (RAMs) como memórias de acesso aleatório dinâmicas (DRAMs), memórias de acesso aleatório estáticas (SRAMs), memórias de apenas leitura programáveis apagáveis (EPROMs), memórias flash, memórias de apenas leitura programáveis eletricamente apagáveis (EEPROMs), memória de alteração de fase (PCM), cartões magnéticos ou ópticos ou qualquer outro tipo de meio adequado para armazenar instruções eletrônicas.
[00122] Em conformidade, as modalidades da invenção também incluem meio legível por máquina tangível não transitório que contém instruções ou contém dados de projeto, como Linguagem de Descrição de Hardware (HDL), que define estruturas, circuitos, aparelhos, processadores e/ou recursos de sistema descritos no presente documento. Tais modalidades também podem ser chamadas de produtos de programa. Emulação (que inclui tradução binária, transformação de código, etc.)
[00123] Em alguns casos, um conversor de instrução pode ser usado para converter uma instrução de um conjunto de instruções de fonte para um conjunto de instruções de alvo. Por exemplo, o conversor de instrução pode traduzir (por exemplo, com o uso de tradução binária estática, tradução binária dinâmica que inclui compilação dinâmica), transformar, emular ou de outro modo converter uma instrução para uma ou mais outras instruções a serem processadas pelo núcleo. O conversor de instrução pode ser implantado em software, hardware, firmware ou uma combinação dos mesmos. O conversor de instrução pode estar no processador, fora do processador ou parte dentro e parte fora do processador.
[00124] A Figura 20 é um diagrama em blocos que contrasta o uso de um conversor de instrução de software para converter instruções binárias em um conjunto de instruções de fonte para instruções binárias em um conjunto de instrução de alvo de acordo com as modalidades da invenção. Na modalidade ilustrada, o conversor de instrução é um conversor de instrução de software, embora alternativamente o conversor de instrução pode ser implantado em software, firmware, hardware ou diversas combinações dos mesmos. A Figura 20 mostra um programa em uma linguagem de alto nível 2002 que pode ser compilado com o uso de um compilador x86 2004 para gerar código binário x86 2006 que pode ser naturalmente executado por um processador com pelo menos um núcleo de conjunto de instruções x86 2016. O processador com pelo menos um núcleo de conjunto de instruções x86 2016 representa qualquer processador que pode realizar substancialmente as mesmas funções que um processador Intel com pelo menos um núcleo de conjunto de instruções x86 por execução por compatibilidade ou de outro modo processar (1) uma porção substancial do conjunto de instruções do núcleo de conjunto de instruções x86 Intel ou (2) versões de código de objeto de aplicativos ou outro software orientado para ser executado em um processador Intel com pelo menos um núcleo de conjunto de instruções x86, a fim de alcançar substancialmente o mesmo resultado que um processador Intel com pelo menos um núcleo de conjunto de instruções x86. O compilador x86 2004 representa um compilador que é operável para gerar código binário x86 2006 (por exemplo, código de objeto) que pode, com ou sem processamento de ligação adicional, ser executado no processador com pelo menos um núcleo de conjunto de instruções x86 2016. De modo similar, a Figura 20 mostra o programa na linguagem de alto nível 2002 pode ser compilada com o uso de um compilador de conjunto de instruções alternativo 2008 para gerar código binário de conjunto de instruções alternativos 2010 que podem ser naturalmente executados por um processador sem pelo menos um núcleo de conjunto de instruções x86 2014 (por exemplo, um processador com núcleos que executa o conjunto de instruções de MIPS de MIPS Technologies de Sunnyvale CA e/ou que executa o conjunto de instruções de ARM de ARM Holdings de Sunnyvale, CA). O conversor de instrução 2012 é usado para converter o código binário x86 2006 em código que pode ser naturalmente executado pelo processador sem um núcleo de conjunto de instruções x86 2014. Esse código convertido não é provável de ser o mesmo que o código binário de conjunto de instruções alternativos 2010 devido ao fato de que um conversor de instrução que tem capacidade para isso é difícil para tornar; no entanto, o código convertido irá realizar a operação geral e ser compensado de instruções do conjunto de instruções alternativo. Desse modo, o conversor de instrução 2012 representa software, firmware, hardware ou uma combinação dos mesmos que, através de emulação, simulação ou qualquer outro processo, permite que um processador ou outro dispositivo eletrônico que não tem um processador ou núcleo de conjunto de instruções x86 para executar o código binário x86 2006.
[00125] Os componentes, recursos e detalhes descritos para qualquer uma das Figuras 3 a 4 e/ou Figuras 6 a 12 também podem ser opcionalmente usados em qualquer uma das Figuras 1 a 2 e/ou Figura 5. Além disso, componentes, recursos e detalhes descritos no presente documento para qualquer um dos aparelhos também podem ser opcionalmente usados em qualquer um dos métodos descritos no presente documento, no qual as modalidades podem ser realizadas por e/ou com tal aparelho.
[00126] Na descrição e nas reivindicações, os termos “acoplado” e/ou “conectado,” junto com seus derivados, devem ser usados. Deve ser entendido que esses termos não são concebidos como sinônimos entre si. Em vez disso, em particular modalidades, “conectado” pode ser usado para indicar que dois ou mais elementos estão em contato direto físico ou elétrico entre si. “Acoplado” pode significar que dois ou mais elementos estão em contato elétrico ou físico direto. No entanto, “acoplado” também pode significar que dois ou mais elementos não estão em contato direto um com o outro, mas ainda assim cooperam ou interagem entre si. Por exemplo, uma unidade de execução pode ser acoplada a um registro ou uma unidade de decodificação através de um ou mais componentes de intervenção. Nas Figuras, as setas são usadas para mostrar conexões e acoplamentos.
[00127] Na descrição e nas reivindicações, o termo “lógica” pode ter sido usado. Conforme usado no presente documento, a lógica pode incluir hardware, firmware, software ou diversas combinações dos mesmos. Exemplos de lógica incluem conjunto de circuitos integrado, circuitos integrados específicos de aplicativo, circuitos análogos, circuitos digitais, dispositivos de lógica programada, dispositivos de memória que incluem instruções, etc. Em algumas modalidades, lógica de hardware pode incluir transistores e/ou portas potencialmente junto com outros componentes de conjunto de circuitos. Em algumas modalidades, a lógica pode ser incorporada como um componente, unidade ou outro módulo.
[00128] Na descrição acima, detalhes específicos foram apresentados a fim de fornecer um entendimento completo das modalidades. No entanto, outras modalidades podem ser praticadas sem alguns desses detalhes específicos. O escopo da invenção não deve ser determinado pelos exemplos específicos fornecidos acima, mas apenas pelas reivindicações abaixo. Em outros exemplos, circuitos, estruturas, dispositivos e operações bem conhecidos foram mostrados em forma de diagrama de blocos ou sem detalhes a fim de evitar obscurecer o entendimento da descrição. Embora múltiplos componentes tenham sido mostrados e descritos, em alguns casos, esses múltiplos componentes podem ser incorporados em um componente. Embora um único componente tenha sido mostrado e descrito, em alguns casos, esse único componente pode ser separado em dois ou mais componentes.
[00129] Diversas operações e métodos foram descritos. Alguns dos métodos foram descritos em uma forma relativamente básica nos fluxogramas, mas operações podem ser opcionalmente adicionadas a e/ou removidas dos métodos. Além disso, enquanto os fluxogramas mostram uma ordem particular das operações de acordo com modalidades exemplificativas, que a ordem particular é exemplificativa. As modalidades alternativas podem realizar opcionalmente as operações em ordem diferente, combinar certas operações, sobrepor certas operações, etc.
[00130] Certas operações podem ser realizadas por componentes de hardware ou podem ser incorporadas em instruções executáveis por circuito ou executáveis por máquina, que podem ser usadas para ocasionar e/ou resultar em uma máquina, circuito ou componente de hardware (por exemplo, um processador, porção de um processador, circuito, etc.) programado com as instruções que realizam as operações. As operações também podem ser opcionalmente realizadas por uma combinação de hardware e software. Um processador, máquina, circuito ou hardware podem incluir conjunto de circuitos específico ou particular ou outra lógica (por exemplo, hardware potencialmente combinado com firmware e/ou software) é operável para executar e/ou processar a instrução e armazenar um resultado em resposta à instrução.
[00131] Tais modalidades incluem um artigo de fabricação (por exemplo, um produto de programa de computador) que inclui um meio legível por máquina. O meio pode incluir um mecanismo que fornece, por exemplo, armazenamentos, informações em uma forma que é legível pela máquina. O meio legível por máquina pode fornecer, ou ter armazenado na mesma, uma instrução ou sequência de instruções, que se e/ou quando executadas por uma máquina são operáveis para fazer com que a máquina realize e/ou resulte na máquina realizar uma ou mais operações, métodos ou técnicas revelados no presente documento.
[00132] Em algumas modalidades, o meio legível por máquina pode incluir um meio de armazenamento legível por máquina tangível e/ou não transitório. Por exemplo, o meio de armazenamento legível por máquina tangível e/ou não transitório pode incluir um disquete, um meio de armazenamento óptico, um disco óptico, um dispositivo de armazenamento de dados óptico, um CD-ROM, um disco magnético, um discos magnético óptico, uma memória de apenas leitura (ROM), uma ROM programável (PROM), uma ROM programável e apagável (EPROM), uma ROM programável e eletricamente apagável (EEPROM), uma memória de acesso aleatório (RAM), uma RAM estática (SRAM), uma RAM dinâmica (DRAM), uma memória flash, uma memória de alternância de fase, um material de armazenamento de alternância de fase, uma memória não volátil, um dispositivo de armazenamento de dados não volátil, uma memória não transitória, um dispositivo de armazenamento de dados não transitório ou similares. O meio de armazenamento legível por máquina não transitório não consistem em um sinal propagado transitório.
[00133] Exemplos de máquinas adequadas incluem, porém, sem limitação, processadores de propósito geral, processadores de propósito especial, aparelho de processamento de instrução, circuitos de lógica digital, circuitos integrados e similares. Ainda outros exemplos de máquinas adequadas incluem dispositivos de computação e outros dispositivos eletrônicos que incorporam tais processadores, aparelho de processamento de instrução, circuitos de lógica digital ou circuitos integrados. Exemplos de tais dispositivos de computação e dispositivos eletrônicos incluem, porém, sem limitação, computadores do tipo desktop, computadores do tipo laptop, computadores do tipo notebook, computadores do tipo tablet, computadores do tipo netbook, telefones inteligentes, telefones celulares, servidores, dispositivos de rede (por exemplo, roteadores e comutadores.), Dispositivos de Internet Móvel (MIDs), reprodutores de mídia, televisões inteligentes, nettops, caixas de topo de conjunto e controladores de videogame.
[00134] É feit a referência durante todo o relatório descritivo a "uma (1) modalidade", "uma modalidade", “um ou mais modalidades”, “algumas modalidades”, por exemplo, indica que um recurso particular pode ser incluído na prática da invenção, mas não é necessariamente exigido que seja. De modo similar, na descrição, diversos recursos são, algumas vezes, agrupados juntos em uma única modalidade, Figura ou descrição das mesmas com o propósito de simplificar a revelação e auxiliar no entendimento de diversos aspectos inventivos. No entanto, esse método da revelação não deve ser interpretado como reflexão de uma intenção que a invenção reivindicada exige mais recursos que são expressamente citados em cada reivindicação. Pelo contrário, como as reivindicações a seguir refletem, os aspectos inventivos encontram-se em menos características que todas as características de uma única modalidade revelada. Desse modo, as reivindicações a seguir da Descrição Detalhada são, através disso, expressamente incorporadas nessa Descrição Detalhada, com cada reivindicação sustentada por si só como uma modalidade separada da invenção.
MODALIDADES EXEMPLIFICATIVAS
[00135] Os exemplos a seguir pertencem às modalidades adicionais. As especificações nos exemplos podem ser usadas em qualquer lugar em uma ou mais modalidades.
[00136] O Exemplo 1 é um processador que inclui um primeiro modo opcionalmente no qual o processador não deve usar mascaramento de operação de dados compactados e um segundo modo opcionalmente no qual o processador deve usar mascaramento de operação de dados compactados. O processador inclui uma unidade de decodificação para decodificar uma instrução de dados compactados não mascarada para uma determinada operação de dados compactados no primeiro modo e para decodificar uma instrução de dados compactados mascarada para uma versão mascarada da determinada operação de dados compactados no segundo modo. As instruções de dados compactados mascaradas e não mascaradas têm um mesmo comprimento de instrução. A instrução de dados compactados mascarada tem um ou mais bits para especificar uma máscara de operação de dados compactados. Uma ou mais unidades de execução são acopladas à unidade de decodificação. A uma ou mais unidades de execução, em resposta à unidade de decodificação que decodificam a instrução de dados compactados não mascarada no primeiro modo são para realizar a determinada operação de dados compactados. A uma ou mais unidades de execução, em resposta à unidade de decodificação que decodifica a instrução de dados compactados mascarada no segundo modo, são para realizar a versão mascarada da determinada operação de dados compactados com o uso da máscara de operação de dados compactados especificada.
[00137] O Exemplo 2 inclui o processador do Exemplo 1, opcionalmente no qual o comprimento de instrução é de 32 bits.
[00138] O Exemplo 3 inclui o processador do Exemplo 1, opcionalmente no qual o processador inclui um processador de computação de conjunto de instruções reduzidas (RISC).
[00139] O Exemplo 4 inclui o processador do Exemplo 1, que inclui adicionalmente uma pluralidade de registros de dados compactados. Além disso, opcionalmente, no qual o um ou mais bits da instrução de dados compactados mascarada são para especificar um registro de dados compactados da pluralidade como uma fonte da máscara de operação de dados compactados.
[00140] O Exemplo 5 inclui o processador do Exemplo 4, opcionalmente no qual a máscara de operação de dados compactados deve compreender um bit dentre cada um dentre uma pluralidade de elementos de dados do registro de dados compactados.
[00141] O Exemplo 6 inclui o processador do Exemplo 4, opcionalmente no qual o registro de dados compactados é para armazenar a máscara de operação de dados compactados e pelo menos uma outra máscara de operação de dados compactados.
[00142] O Exemplo 7 inclui o processador do Exemplo 6, opcionalmente no qual em uma primeira exibição do registro de dados compactados é para armazenar um número maior de máscaras de operação de dados compactados relativamente menores e em uma segunda exibição é para armazenar um número menor de máscaras de operação de dados compactados relativamente maiores.
[00143] O Exemplo 8 inclui o processador do Exemplo 1, que inclui adicionalmente uma pluralidade de registros de máscara de operação de dados compactados. Além disso, opcionalmente, no qual o um ou mais bits da instrução de dados compactados mascarada são para especificar um registro de máscara de operação de dados compactados da pluralidade como uma fonte da máscara de operação de dados compactados.
[00144] O Exemplo 9 inclui o processador de qualquer um dos Exemplos 1 a 8, opcionalmente no qual o primeiro e o segundo modos devem ser indicados por um ou mais bits em um registro do processador.
[00145] O Exemplo 10 inclui o processador de qualquer um dos Exemplos 1 a 8, opcionalmente no qual a determinada operação de dados compactados e a versão mascarada da determinada operação de dados compactados incluem uma dentre: (1) uma operação de multiplicação compactada e uma operação de multiplicação compactada mascarada; (2) uma operação de adição compactada e uma operação de adição compactada mascarada; (3) uma operação E lógica compactada e uma operação E lógica compactada mascarada; (4) uma operação OU lógica compactada e uma operação OU lógica compactada mascarada e (5) uma operação de comparação compactada e uma operação de comparação compactada mascarada.
[00146] O Exemplo 11 é um método realizado por um processador. O método inclui decodificar uma instrução de dados compactados não mascarada para uma determinada operação de dados compactados em um primeiro modo no qual o processador não deve usar mascaramento de operação de dados compactados; O método inclui realizar a determinada operação de dados compactados em resposta à decodificação da instrução de dados compactados não mascarada no primeiro modo; O método inclui decodificar uma instrução de dados compactados mascarada para uma versão mascarada da determinada operação de dados compactados em um segundo modo no qual o processador deve usar mascaramento de operação de dados compactados. As instruções de dados compactados mascaradas e não mascaradas têm um mesmo comprimento de instrução. A instrução de dados compactados mascarada tem um ou mais bits para especificar uma máscara de operação de dados compactados. O método inclui realizar a versão mascarada da determinada operação de dados compactados com o uso da máscara de operação de dados compactados especificada em resposta à decodificação da instrução de dados compactados mascarada no segundo modo.
[00147] O Exemplo 12 inclui o método do Exemplo 11, opcionalmente no qual decodificar inclui decodificar as instruções de dados compactados mascaradas e não mascaradas em que cada um tem um comprimento de instrução de 32 bits.
[00148] O Exemplo 13 inclui o método do Exemplo 11, que inclui adicionalmente acessar a máscara de operação de dados compactados de um registro de dados compactados especificado pelo um ou mais bits da instrução de dados compactados mascarada.
[00149] O Exemplo 14 inclui o método do Exemplo 13, opcionalmente no qual acessar inclui acessar um bit dentre cada um dentre uma pluralidade de elementos de dados do registro de dados compactados como a máscara de operação de dados compactados.
[00150] O Exemplo 15 inclui o método do Exemplo 13, opcionalmente no qual acessar inclui acessar a máscara de operação de dados compactados do registro de dados compactados que também é para armazenar pelo menos uma outra máscara de operação de dados compactados.
[00151] O Exemplo 16 inclui o método de Exemplo 15, opcionalmente no qual acessar inclui acessar a máscara de operação de dados compactados do registro de dados compactados que em uma primeira exibição é para armazenar um número maior de máscaras de operação de dados compactados relativamente menores e em uma segunda exibição é para armazenar um número menor de máscaras de operação de dados compactados relativamente maiores.
[00152] O Exemplo 17 inclui o método do Exemplo 11, que inclui adicionalmente acessar a máscara de operação de dados compactados de um dentre uma pluralidade de registros de máscara de operação de dados compactados que é especificado pelo um ou mais bits da instrução de dados compactados mascarada.
[00153] O Exemplo 18 inclui o método do Exemplo 11, opcionalmente no qual o método é realizado em um processador de computação de conjunto de instruções reduzidas (RISC).
[00154] O Exemplo 19 inclui o método do Exemplo 11, que inclui adicionalmente alterar um ou mais bits em um registro do processador para fazer com que o processador esteja no segundo modo.
[00155] O Exemplo 20 inclui o método do Exemplo 11, opcionalmente no qual realizar a determinada operação de dados compactados e a versão mascarada da determinada operação de dados compactados inclui uma dentre: (1) realizar uma operação de multiplicação compactada e uma operação de multiplicação compactada mascarada; (2) realizar uma operação de adição compactada e uma operação de adição compactada mascarada; (3) realizar uma operação E lógica compactada e uma operação E lógica compactada mascarada; (4) realizar uma operação OU lógica compactada e uma operação OU lógica compactada mascarada e (5) realizar uma operação de comparação compactada e uma operação de comparação compactada mascarada.
[00156] O Exemplo 21 é um sistema para processar instruções. O sistema inclui uma interconexão, uma memória de acesso aleatório dinâmica (DRAM) acoplada à interconexão e um processador acoplado à interconexão. O processador inclui um primeiro modo no qual o processador não deve usar mascaramento de operação de dados compactados e um segundo modo no qual o processador deve usar mascaramento de operação de dados compactados. O processador inclui uma unidade de decodificação para decodificar uma instrução de dados compactados não mascarada para uma determinada operação de dados compactados no primeiro modo e para decodificar uma instrução de dados compactados mascarada para uma versão mascarada da determinada operação de dados compactados no segundo modo. As instruções de dados compactados mascaradas e não mascaradas têm um mesmo comprimento de instrução. A instrução de dados compactados mascarada tem um ou mais bits para especificar uma máscara de operação de dados compactados. O processador inclui uma ou mais unidades de execução acopladas à unidade de decodificação. A uma ou mais unidades de execução, em resposta à unidade de decodificação que decodificam a instrução de dados compactados não mascarada no primeiro modo são para realizar a determinada operação de dados compactados. A uma ou mais unidades de execução, em resposta à unidade de decodificação que decodifica a instrução de dados compactados mascarada no segundo modo, são para realizar a versão mascarada da determinada operação de dados compactados com o uso da máscara de operação de dados compactados especificada.
[00157] O Exemplo 22 inclui o sistema de acordo com a reivindicação 21, opcionalmente no qual o comprimento de instrução é de 32 bits e, opcionalmente, no qual o processador inclui um processador de computação de conjunto de instruções reduzidas (RISC).
[00158] O Exemplo 23 é um meio de armazenamento legível por máquina que armazena instruções que se executadas por uma máquina devem fazer com que a máquina realize o método de qualquer um dos Exemplos 11 a 20.
[00159] O Exemplo 24 é um processador para realizar o método de qualquer um dos Exemplos 11 a 20.
[00160] O Exemplo 25 é um processador que inclui meios para realizar o método de qualquer um dos Exemplos 11 a 20.
[00161] O Exemplo 26 é um processador que inclui conjunto de circuitos integrado e/ou lógica e/ou unidades e/ou componentes e/ou módulos ou qualquer combinação dos mesmos para realizar os métodos de qualquer um dos Exemplos 11 a 20.
[00162] O Exemplo 27 é um sistema de computador que inclui pelo menos um processador e opcionalmente uma memória de acesso aleatório dinâmica (DRAM), o sistema de computador para realizar o método de qualquer um dos Exemplos 11 a 20.
[00163] O Exemplo 28 é um processador para realizar uma ou mais operações ou um método substancialmente conforme descrito no presente documento.
[00164] O Exemplo 29 é um processador que inclui meios para realizar uma ou mais operações ou um método substancialmente conforme descrito no presente documento.

Claims (11)

1. Processador (200) caracterizado por compreender: uma unidade de decodificação (216) para decodificar uma instrução de dados compactados não mascarada (206) para uma determinada operação de dados compactados em um primeiro modo no qual o processador não deve usar mascaramento de operação de dados compactados e para decodificar uma instrução de dados compactados mascarada (204) para uma versão mascarada da determinada operação de dados compactados no segundo modo no qual o processador deve usar mascaramento de operação de dados compactados, as instruções de dados compactados mascaradas e não mascaradas têm um mesmo comprimento de instrução, a instrução de dados compactados mascarada tem um ou mais bits para especificar uma máscara de operação de dados compactados que deve incluir bits de máscara distribuídos entre os elementos de dados, em que um bit de cada um dos elementos de dados representa um dos bits de máscara; e uma ou mais unidades de execução (214) acopladas à unidade de decodificação, a uma ou mais unidades de execução, em resposta à unidade de decodificação que decodifica a instrução de dados compactados não mascarada no primeiro modo, deve realizar a determinada operação de dados compactados e a uma ou mais unidades de execução, em resposta à unidade de decodificação que decodifica a instrução de dados compactados mascarada no segundo modo deve realizar a versão mascarada da determinada operação de dados compactados com o uso da máscara de operação de dados compactados especificada.
2. Processador, de acordo com a reivindicação 1, caracterizado pelo fato de que o comprimento de instrução é de 32 bits, em que o processador compreende um processador de computação de conjunto de instruções reduzidas (RISC).
3. Processador, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente uma pluralidade de registadores de dados compactados, e em que o um ou mais bits da instrução de dados compactados mascarada são para especificar um registador de dados compactados da pluralidade de registradores como uma fonte da máscara de operação de dados compactados.
4. Processador, de acordo com a reivindicação 3, caracterizado pelo fato de que a máscara de operação de dados compactados é para compreender um bit dentre cada um dentre uma pluralidade de elementos de dados do registador de dados compactados.
5. Processador, de acordo com qualquer uma das reivindicações 1 a 4, caracterizado pelo fato de que os primeiro e segundo modos devem ser indicados por um ou mais bits em um registrador do processador.
6. Método realizado por um processador (200) caracterizado por compreender: decodificar uma instrução de dados compactados não mascarada (206) para uma determinada operação de dados compactados em um primeiro modo no qual o processador não deve usar mascaramento de operação de dados compactados; realizar a determinada operação de dados compactados em resposta a decodificação da instrução de dados compactados não mascarada (204) no primeiro modo; decodificar uma instrução de dados compactados mascarada para uma versão mascarada da determinada operação de dados compactados em um segundo modo no qual o processador deve usar mascaramento de operação de dados compactados, as instruções de dados compactados mascaradas e não mascaradas têm um mesmo comprimento de instrução, em que a instrução de dados compactados mascarada tem um ou mais bits para especificar uma máscara de operação de dados compactados que inclui bits de máscara distribuídos entre os elementos de dados, em que um bit de cada um dos elementos de dados representa um dos bits de máscara; e realizar a versão mascarada da determinada operação de dados compactados com o uso da máscara de operação de dados compactados especificada em resposta à codificação da instrução de dados compactados mascarada no segundo modo.
7. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que decodificar compreende decodificar as instruções de dados compactados mascaradas e não mascaradas, em que cada uma tem um comprimento de instrução de 32 bits.
8. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que compreende adicionalmente acessar a máscara de operação de dados compactados a partir de um registador de dados compactados especificado pelo um ou mais bits da instrução de dados compactados mascarada.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que acessar compreende acessar um bit dentre cada um dentre uma pluralidade de elementos de dados do registador de dados compactados como a máscara de operação de dados compactados.
10. Método, de acordo com a reivindicação 6, caracterizado pelo fato de que compreende adicionalmente alterar um ou mais bits em um registador do processador para fazer com que o processador esteja no segundo modo.
11. Mídia de armazenamento legível por máquina caracterizada por armazenar instruções que, se executadas por um processador conforme definido na reivindicação 1, devem fazer com que o processador realize o método conforme definido nas reivindicações 6 a 10.
BR112015030098-7A 2013-06-26 2014-06-17 Métodos, sistemas e instruções de processadores de predicação de elemento de dados compactados BR112015030098B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/931,739 US9990202B2 (en) 2013-06-28 2013-06-28 Packed data element predication processors, methods, systems, and instructions
US13/931,739 2013-06-28
PCT/US2014/042797 WO2014209687A1 (en) 2013-06-28 2014-06-17 Packed data element predication processors, methods, systems, and instructions

Publications (2)

Publication Number Publication Date
BR112015030098A2 BR112015030098A2 (pt) 2017-07-25
BR112015030098B1 true BR112015030098B1 (pt) 2022-04-26

Family

ID=52116850

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015030098-7A BR112015030098B1 (pt) 2013-06-26 2014-06-17 Métodos, sistemas e instruções de processadores de predicação de elemento de dados compactados

Country Status (8)

Country Link
US (5) US9990202B2 (pt)
EP (1) EP3014418B1 (pt)
KR (2) KR20150141999A (pt)
CN (1) CN105247475B (pt)
BR (1) BR112015030098B1 (pt)
RU (1) RU2612597C1 (pt)
TW (1) TWI536187B (pt)
WO (1) WO2014209687A1 (pt)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9477467B2 (en) * 2013-03-30 2016-10-25 Intel Corporation Processors, methods, and systems to implement partial register accesses with masked full register accesses
US9990202B2 (en) 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions
US10001995B2 (en) * 2015-06-02 2018-06-19 Intel Corporation Packed data alignment plus compute instructions, processors, methods, and systems
US10459723B2 (en) * 2015-07-20 2019-10-29 Qualcomm Incorporated SIMD instructions for multi-stage cube networks
US9785800B2 (en) 2015-12-23 2017-10-10 Intel Corporation Non-tracked control transfers within control transfer enforcement
US20170185400A1 (en) 2015-12-23 2017-06-29 Intel Corporation Mode-specific endbranch for control flow termination
US20170192781A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Strided Loads
US11204764B2 (en) * 2016-03-31 2021-12-21 Intel Corporation Processors, methods, systems, and instructions to Partition a source packed data into lanes
US10891131B2 (en) * 2016-09-22 2021-01-12 Intel Corporation Processors, methods, systems, and instructions to consolidate data elements and generate index updates
MX2019006981A (es) 2016-12-14 2020-09-07 Novetechnologies Llc Sistema de bioseguridad de ganado y metodo de uso.
RU2659492C1 (ru) * 2017-08-18 2018-07-02 Федеральное государственное бюджетное образовательное учреждение высшего образования "Вятский государственный университет" (ВятГУ) Блок унификации с параллельным сопоставлением термов
US10678540B2 (en) * 2018-05-08 2020-06-09 Arm Limited Arithmetic operation with shift
DE102018113475A1 (de) * 2018-06-06 2019-12-12 Infineon Technologies Ag Rechenwerk zum rechnen mit maskierten daten
US11256987B1 (en) 2021-06-02 2022-02-22 SambaNova Systems, Inc. Memory efficient dropout, with reordering of dropout mask elements
US11328209B1 (en) 2021-06-02 2022-05-10 SambaNova Systems, Inc. Dual cycle tensor dropout in a neural network

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4903228A (en) * 1988-11-09 1990-02-20 International Business Machines Corporation Single cycle merge/logic unit
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
US5787303A (en) * 1991-10-31 1998-07-28 Kabushiki Kaisha Toshiba Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture
US5606677A (en) * 1992-11-30 1997-02-25 Texas Instruments Incorporated Packed word pair multiply operation forming output including most significant bits of product and other bits of one input
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
CA2156889C (en) 1994-09-30 1999-11-02 Edward L. Schwartz Method and apparatus for encoding and decoding data
CN103455304B (zh) 1995-08-31 2016-04-27 英特尔公司 用于处理指令集的处理器
US6052769A (en) 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US6629115B1 (en) * 1999-10-01 2003-09-30 Hitachi, Ltd. Method and apparatus for manipulating vectored data
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US7017032B2 (en) 2001-06-11 2006-03-21 Broadcom Corporation Setting execution conditions
US6986023B2 (en) 2002-08-09 2006-01-10 Intel Corporation Conditional execution of coprocessor instruction based on main processor arithmetic flags
US7002595B2 (en) * 2002-10-04 2006-02-21 Broadcom Corporation Processing of color graphics data
US20050149701A1 (en) 2003-12-24 2005-07-07 Inching Chen Method, apparatus and system for pair-wise minimum and minimum mask instructions
US7873812B1 (en) * 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US20070186210A1 (en) * 2006-02-06 2007-08-09 Via Technologies, Inc. Instruction set encoding in a dual-mode computer processing environment
US20080016320A1 (en) * 2006-06-27 2008-01-17 Amitabh Menon Vector Predicates for Sub-Word Parallel Operations
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US8180998B1 (en) * 2007-09-10 2012-05-15 Nvidia Corporation System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations
US9529592B2 (en) * 2007-12-27 2016-12-27 Intel Corporation Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation
US8156391B2 (en) 2008-05-27 2012-04-10 Lsi Corporation Data controlling in the MBIST chain architecture
US8434074B2 (en) * 2010-02-24 2013-04-30 Intel Corporation Register allocation with SIMD architecture using write masks
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
CN104025039B (zh) 2011-12-22 2018-05-08 英特尔公司 打包数据操作掩码串接处理器、方法、系统及指令
JP2013186547A (ja) * 2012-03-06 2013-09-19 Fujitsu Ltd 演算処理装置、携帯端末および演算処理方法
US20130339680A1 (en) * 2012-06-15 2013-12-19 International Business Machines Corporation Nontransactional store instruction
US9256427B2 (en) * 2012-12-11 2016-02-09 International Business Machines Corporation Tracking multiple conditions in a general purpose register and instruction therefor
US9990202B2 (en) * 2013-06-28 2018-06-05 Intel Corporation Packed data element predication processors, methods, systems, and instructions

Also Published As

Publication number Publication date
EP3014418A1 (en) 2016-05-04
BR112015030098A2 (pt) 2017-07-25
TW201508521A (zh) 2015-03-01
EP3014418A4 (en) 2017-03-08
US20150006858A1 (en) 2015-01-01
CN105247475A (zh) 2016-01-13
US10963257B2 (en) 2021-03-30
US20180293074A1 (en) 2018-10-11
TWI536187B (zh) 2016-06-01
KR20180006501A (ko) 2018-01-17
US20230108016A1 (en) 2023-04-06
US9990202B2 (en) 2018-06-05
US10430193B2 (en) 2019-10-01
US20210216325A1 (en) 2021-07-15
CN105247475B (zh) 2019-11-15
RU2612597C1 (ru) 2017-03-09
US20200026518A1 (en) 2020-01-23
EP3014418B1 (en) 2020-11-18
WO2014209687A1 (en) 2014-12-31
KR20150141999A (ko) 2015-12-21
US11442734B2 (en) 2022-09-13

Similar Documents

Publication Publication Date Title
BR112015030098B1 (pt) Métodos, sistemas e instruções de processadores de predicação de elemento de dados compactados
ES2903001T3 (es) Aparatos y métodos de hardware para detección de corrupción de memoria
US9934032B2 (en) Processors, methods, and systems to implement partial register accesses with masked full register accesses
US10503510B2 (en) SM3 hash function message expansion processors, methods, systems, and instructions
CN108845826B (zh) 多寄存器存储器访问指令、处理器、方法和系统
BR102013032654A2 (pt) instruções e lógica para vetorizar laços condicionais
CN109508206B (zh) 向较宽的寄存器进行依赖于模式的部分宽度加载的处理器、方法和系统
BR102014006806A2 (pt) Instruções e lógica para oferecer recursos avançados de paginação para caches de página de enclave seguro
US9921832B2 (en) Instruction to reduce elements in a vector register with strided access pattern
BR102014005800A2 (pt) Instruções de fusíveis e lógica para fornecer o teste-or e/ou o teste-and de funcionalidade usando várias fontes de teste
US10228941B2 (en) Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
EP3644179A2 (en) Apparatus and method for tile gather and tile scatter
CN110659129A (zh) 用于数据表示之间的一致、加速的转换的装置和方法
CN107003957B (zh) 用于存取存储器中在未对准的地址处的数据的方法
BR112015029930B1 (pt) Pares de imposição de ordem de instrução de instruções, processadores, métodos e sistemas
BR102014006118A2 (pt) sistemas, equipamentos e métodos para determinar um bit de mascaramento menos significativo à direita de um registrador writemask
KR20170099855A (ko) 마스크 및 벡터 레지스터들 사이의 가변 확장을 위한 방법 및 장치
KR20170097015A (ko) 마스크를 마스크 값들의 벡터로 확장하기 위한 방법 및 장치
US20160179539A1 (en) Instruction and logic to perform a centrifuge operation
BR102016012096A2 (pt) Hardware apparatus to improve performance of state dependent computers

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B350 Update of information on the portal [chapter 15.35 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: 20 (VINTE) ANOS CONTADOS A PARTIR DE 17/06/2014, OBSERVADAS AS CONDICOES LEGAIS.