BR102014006231A2 - equipamento de processamento de instruções, método dentro de um processador, sistema para processar instruções e artigo de manufatura - Google Patents

equipamento de processamento de instruções, método dentro de um processador, sistema para processar instruções e artigo de manufatura Download PDF

Info

Publication number
BR102014006231A2
BR102014006231A2 BR102014006231A BR102014006231A BR102014006231A2 BR 102014006231 A2 BR102014006231 A2 BR 102014006231A2 BR 102014006231 A BR102014006231 A BR 102014006231A BR 102014006231 A BR102014006231 A BR 102014006231A BR 102014006231 A2 BR102014006231 A2 BR 102014006231A2
Authority
BR
Brazil
Prior art keywords
operation mask
mask
consolidated
instruction
elements
Prior art date
Application number
BR102014006231A
Other languages
English (en)
Inventor
Ashish Jha
Original Assignee
Intel Corp
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 Corp filed Critical Intel Corp
Publication of BR102014006231A2 publication Critical patent/BR102014006231A2/pt

Links

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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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

Abstract

equipamento de processamento de instruções, método dentro de um processador, sistema para processar instruções e artigo de manufatura. a presente ínvenção trata de um equipamento de processamento de instrução, que em um aspecto inclui uma pluralidade de registradores de máscara de operação. o equipamento tambám inclui uma unidade de decodificação para receber uma instrução de consolidação de máscara de operação. a instrução de consolidação de máscara de operação deve indicar um registrador de máscara de operação de fonte, da pluralidade de registradores de máscara de operação, e um local de armazenagem de destino. o registrador de máscara de operação de fonte deve incluir uma máscara de operação de fonte que deve incluir uma pluralidade de elementos mascarados que devem ser dispostos em uma pluralidade de elementos não mascarados. uma unidade de execução é acoplada à unidade de decodificação. a unidade de execução, em resposta à instrução de consolidação de máscara de operação, deve armazenar uma máscara de operação consolidada no local de armazenagem de destino. a máscara de operação consolidada deve incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada junta. outros equipamentos, métodos, sistemas e instruções são também descritos

Description

"EQUIPAMENTO DE PROCESSAMENTO DE INSTRUÇÕES, MÉTODO DENTRO DE UM PROCESSADOR, SISTEMA PARA PROCESSAR INSTRUÇÕES E ARTIGO DE MANUFATURA" HISTÓRICO CAMPO TÉCNICO [0001] As modalidades descritas aqui se referem de modo geral a processadores. Em particular, as modalidades descritas aqui se referem de modo geral a processadores para manipular máscaras de operação em resposta a instruções.
INFORMAÇÕES DE HISTÓRICO [0002] Muitos processadores têm arquiteturas de instrução única, múltiplos dados (SIMD). Em arquiteturas SIMD, em vez de uma instrução escalar que opera somente em um elemento de dados ou par de elementos de dados, uma instrução de dados empacotada, instrução vetorial ou instrução SIMD pode operar em múltiplos elementos de dados, ou múltiplos pares de elementos de dados, simultaneamente e/ou em paralelo. Por exemplo, múltiplos elementos de dados podem ser empacotados em um registrador ou local de memória como dados empacotados ou dados vetoriais. Em dados empacotados, os bits do registrador ou outro local de armazenagem podem ser logicamente divididos em uma sequência de múltiplos elementos de dados genericamente de tamanho fixo. Cada um dos elementos de dados pode representar um pedaço individual de dados que é armazenado juntamente com outros elementos de dados frequentemente tendo o mesmo tamanho. Por exemplo, um registrador de dados empacotados de 256 bits pode ter quatro elementos de dados de 64 bits, oito elementos de dados de 32 bits, dezesseis elementos de dados de 16 bits, ou trinta e dois elementos de dados de 8 bits. Cada um dos elementos de dados empacotados pode representar um pedaço individual, separado, de dados (por exemplo, uma cor de um pixel, um valor de ponto flutuante, etc.) que pode ser operado separadamente ou independentemente dos outros. O processador pode ter hardware de execução paralelo responsivo à instrução empacotada ou SIMD para executar as múltiplas operações simultaneamente ou em paralelo. Tais arquiteturas SIMD auxiliam de modo geral a melhorar significativamente a velocidade de processamento.
BREVE DESCRIÇÃO DOS DESENHOS [0003] A invenção pode ser entendida melhor mediante referência à seguinte descrição e desenhos em anexo que são utilizados para ilustrar as modalidades. Nos desenhos: [0004] A Figura 1 é um diagrama de blocos de uma modalidade de um processador que é operável para processar uma ou mais modalidades de instruções de consolidação de máscara de operação. [0005] A Figura 2A é um diagrama de blocos de uma modalidade exemplar de uma operação de dados empacotados mascarada de fusão. [0006] A Figura 2B é um diagrama de blocos de uma modalidade exemplar de uma operação mascarada de dados empacotados de zerar. [00 07] A Figura 3 é um diagrama de blocos de uma modalidade de um equipamento de processamento de instruções que é operável para executar uma ou mais modalidades de instruções de consolidação de máscara de operação. [0008] A Figura 4A é um diagrama de blocos de uma primeira modalidade exemplar de uma operação de consolidação de máscara de operação que pode ser executada em resposta a, e/ou como um resultado de, uma primeira modalidade exemplar de uma instrução de consolidação de máscara de operação. [0009] A Figura 4B é um diagrama de blocos de uma segunda modalidade exemplar de uma operação de consolidação de máscara de operação que pode ser executada em resposta a, e/ou como resultado de, uma segunda modalidade exemplar de uma instrução de consolidação de máscara de operação. [0010] A Figura 5 é um fluxograma de blocos de uma modalidade de um método de processar uma modalidade de uma instrução de consolidação de máscara de operação. [0011] A Figura 6 é um diagrama de blocos de uma modalidade de formato apropriado para uma instrução de consolidação de máscara de operação. [0012] A Figura 7 é um diagrama de blocos de uma modalidade exemplar de registradores de dados empacotados apropriados. [0013] A Figura 8 é uma tabela que ilustra que um número de elementos de máscara de operação de dados empacotados depende da largura de dados empacotados e largura de elementos de dados empacotados. [0014] A Figura 9 é um diagrama de blocos de uma modalidade exemplar de um conjunto adequado de registradores de máscara de operação de dados empacotados. [0015] A Figura 10 é um diagrama de blocos de uma modalidade exemplar de um registrador de máscara de operação de dados empacotados no qual um número de elementos de máscara de operação depende da largura de dados empacotados e da largura de elementos de dados empacotados. [0016] A Figura 11A ilustra um formato de instrução AVX exemplar que inclui um prefixo VEX, um campo de opcode (código de operação) real, byte R/M Mod, byte SIB, campo de deslocamento e IMM8. [0017] A Figura 11B ilustra quais campos da Figura 11A compõem um campo de código de operação total e um campo de operação base. [0018] A Figura 11C ilustra quais campos da Figura 11A compõem um campo de índice de registrador. [0019] A Figura 12 é um diagrama de blocos de uma arquitetura de registrador de acordo com uma modalidade da invenção. [002 0] A Figura 13 A é um diagrama de blocos que ilustra tanto um pipeline em ordem exemplar como um pipeline de execução/emissão fora de ordem, de renomeação de registrador exemplar de acordo com as modalidades da invenção. [0021] A Figura 13B é um diagrama de blocos que ilustra tanto uma modalidade exemplar de um núcleo de arquitetura em ordem como um núcleo de arquitetura de execução/emissão fora de ordem, de renomeação de registrador exemplar a ser incluído em um processador de acordo com as modalidades da invenção. [0022] A Figura 14A é um diagrama de blocos de um núcleo de processador único, juntamente com sua conexão à rede de interconexão na pastilha e com seu subconjunto local do cache nível 2 (L2), de acordo com modalidades da invenção. [0023] A Figura 14B é uma vista expandida de parte do núcleo de processador na Figura 14A de acordo com modalidades da invenção. [002 4] A Figura 15 é um diagrama de blocos de um processador que pode ter mais de um núcleo, pode ter um controlador de memória integrado, e pode ter gráfico integrado de acordo com modalidades da invenção. [0025] A Figura 16 mostrada é um diagrama de blocos de um sistema de acordo com uma modalidade da presente invenção. [0026] A Figura 17 mostrada é um diagrama de blocos de um primeiro sistema exemplar mais específico de acordo com uma modalidade da presente invenção. [0027] A Figura 18 mostrada é um diagrama de blocos de um segundo sistema exemplar mais específico de acordo com uma modalidade da presente invenção. [0028] A Figura 19 mostrada é um diagrama de blocos de um SoC de acordo com uma modalidade da presente invenção. [002 9] A Figura 2 0 é um diagrama de blocos contrastando 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ções alvo de acordo com modalidades da invenção.
DESCRIÇÃO DETALHADA DE MODALIDADES [0030] São descritas aqui instruções de consolidação de máscara de operação, processadores para executar as instruções, métodos executados pelos processadores ao processar ou executar as instruções, e sistemas eletrônicos que incorporam um ou mais processadores para processar ou executar as instruções. Na seguinte descrição, inúmeros detalhes específicos são expostos (por exemplo, operações de instrução específica, máscaras de operação, formatos de dados, configurações de processador, detalhes microarquiteturais, sequências de operações, etc.), entretanto, as modalidades podem ser postas em prática sem esses detalhes específicos. Em outras instâncias, circuitos, estruturas e técnicas bem conhecidos não foram mostrados em detalhe para evitar obscurecer a compreensão da descrição. [0031] A Figura 1 é um diagrama de blocos de uma modalidade exemplar de um processador 100 para processar uma ou mais instruções de consolidação de máscara de operação 104. Em algumas modalidades, o processador pode ser um processador de propósito geral (por exemplo, do tipo utilizado em computadores desktop, laptop, servidores e similares). Alternativamente, o processador pode ser um processador de propósito especial. Os exemplos de processadores de propósito especial apropriados incluem, porém não são limitados a, processadores de rede, processadores de comunicações, processadores criptográficos, processadores gráficos, coprocessadores, processadores incorporados, processadores de sinais digitais (DSPs), e controladores, citando apenas alguns exemplos. O processador pode ser qualquer de vários processadores de computação de conjunto de instruções complexas (CISC), vários processadores de computação de conjunto de instruções reduzidas (RISC) , vários processadores de palavra de instrução muito longa (VLIW), vários híbridos dos mesmos, ou totalmente outros tipos de processadores. [0032] O processador tem uma arquitetura de conjunto de instruções (ISA) 101. A ISA representa uma parte da arquitetura do processador relacionada à programação e comumente inclui as instruções nativas, registradores arquiteturais, tipos de dados, modos de endereçamento, arquitetura de memória, e similares, do processador. A ISA é distinguida da microarquitetura, que genericamente representa as técnicas de projeto de processador específicas selecionadas para implementar a ISA. [0033] A ISA inclui registradores visíveis de modo arquitetural, (por exemplo, um arquivo de registrador arquitetural) 105. Os registradores arquiteturais também podem ser mencionados aqui simplesmente como registradores. A menos que de outro modo especificado ou evidente, os termos registrador arquitetural, arquivo de registrador, e registrador são utilizadas aqui para se referir a registradores que são visíveis ao software e/ou programador e/ou registradores que são especificados por macroinstruções ou instruções de linguagem assembly para identificar operandos. Esses registradores são contrastados com outros registradores não arquiteturais ou não visíveis de modo arquitetural em uma determinada microarquitetura (por exemplo, registradores temporários utilizados por instruções, buffers de reordenamento, registradores de retirada, etc.). Os registradores representam genericamente locais de armazenagem de processador na pastilha. Os registradores arquiteturais ilustrados incluem registradores de dados empacotados 106. Cada um dos registradores de dados empacotados pode ser operável para armazenar dados empacotados ou vetoriais. Os registradores arquiteturais ilustrados também incluem registradores de máscara de operação de dados empacotados 107. Cada um dos registradores de máscara de operação de dados empacotados pode ser operável para armazenar uma máscara de operação de dados empacotados. [0034] A ISA inclui um conjunto de instruções 102. As instruções do conjunto de instruções representam macroinstruções, instruções de linguagem assembly, ou instruções em nível de máquina fornecidas ao processador para execução, ao contrário de microinstruções, micro-ops, ou aquelas que resultam de macroinstruções de decodificação. O conjunto de instruções inclui opcionalmente uma ou mais instruções de dados empacotados mascarados convencionais 103 . Similarmente às instruções de dados empacotados mencionadas anteriormente, cada uma das instruções de dados empacotados mascarados 103 pode ser operável para causar ou resultar no processador executando uma operação de dados empacotados em elementos de dados de um ou mais operandos de dados empacotados. Os operandos de dados empacotados podem ser armazenados nos registradores de dados empacotados 107. Entretanto, cada uma das instruções de dados empacotados mascarados é diferente em que pode indicar uma ou mais máscaras de operação de dados empacotados (por exemplo, nos registradores de máscara de operação de dados empacotados 107), que mascaram, predicam ou controlam condicionalmente o processamento de dados empacotados. As máscaras de operação de dados empacotados podem representar máscaras de operação, predicar operandos, ou controlar operação condicional de operandos. [0035] O conjunto de instruções também inclui uma ou mais instruções de consolidação de máscara de operação 104. As instruções de consolidação de máscara de operação podem fazer com que o processador gere e armazene máscaras de operação consolidadas. Exemplos específicos de operações/instruções apropriadas serão discutidos adicionalmente abaixo. [0036] O processador também inclui lógica de execução 108. A lógica de execução é operável para executar ou processar uma ou mais instruções de consolidação de máscara de operação 104. Em algumas modalidades, a lógica de execução pode incluir lógica específica (por exemplo, conjunto de circuitos específico ou hardware potencialmente combinado com firmware) para executar essas instruções. [0037] Antes de discutir as instruções de consolidação de máscara de operação 104 adicionalmente, pode ser útil primeiramente discutir alguns exemplos de como as máscaras de operação de dados empacotados podem ser utilizadas. A Figura 2A é um diagrama de blocos de um primeiro exemplo de uma operação de dados empacotados mascarados com fusão 203A. A operação de dados empacotados mascarados pode ser executada em resposta a, ou como resultado de uma instrução de dados empacotados mascarados (por exemplo, a instrução de dados empacotados mascarados 103 da Figura 1). [0038] A instrução de dados empacotados mascarados pode indicar dados empacotados de uma primeira fonte 2 09A e dados empacotados de uma segunda fonte 210A. Outras instruções de dados empacotados mascarados (por exemplo, uma instrução de deslocamento empacotado) podem indicar somete dados empacotados de uma única fonte, ou dados empacotados de mais de duas fontes. Na ilustração, os dados empacotados de primeira e segunda 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 dos dados empacotados de primeira e segunda fonte têm dezesseis elementos de dados. Como exemplo, os dados empacotados de primeira e segunda fonte podem ser individualmente de 512 bits de largura e podem incluir, individualmente, dezesseis elementos de dados de palavra dupla de 3 2 bits, embora isso não seja exigido. Os elementos de dados de fonte nas mesmas posições relativas nos dados empacotados de duas fontes (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 no bloco representando o elemento de dados. Por exemplo, o elemento de dados de ordem mais baixa (à direita) dos dados erapacotados de primeira fonte tem um valor de 3, o elemento de dados da ordem próxima-a-mais-baixa dos dados empacotados de primeira fonte tem um valor de 7 e assim por diante. [0039] A instrução também indica uma máscara de operação de dados empacotados de fonte 211A. A máscara de operação representa um operando de predicado ou operando de controle de operação de vetor condicional para predicar ou controlar condicionalmente uma operação de vetor ou empacotada. A máscara de operação de dados empacotados inclui elementos de máscara, elementos de predicado, ou elementos de controle condicional. As máscaras de operação de dados empacotados podem ser operáveis para mascarar ou condicionalmente controlar o processamento de dados empacotados em granularidade de elemento por dados. Os elementos de máscara podem ser incluídos em uma correspondência um-a-um com um ou mais elementos de dados de fonte correspondentes. Por exemplo, como mostrado na ilustração, pode haver tal elemento de máscara para cada par de elementos de dados de fonte correspondentes. As máscaras de operação podem permitir processamento de dados empacotados de cada elemento de dados, ou par de elementos de dados correspondentes, a serem predicados ou condicionalmente controlados separadamente e independentemente dos outros. Cada elemento de máscara pode ser operável para mascarar ou não mascarar uma operação de dados empacotados em um ou mais elementos de dados empacotados de fonte correspondente. Por exemplo, nesse exemplo, cada elemento de máscara pode mascarar uma operação em um par de elementos de dados empacotados de fonte correspondente. [0040] Como mostrado na ilustração, comumente cada elemento de máscara pode ser um único bit. Um único bit pode permitir especificar qualquer uma de duas possibilidades diferentes (por exemplo, executar a operação versus não executar a operação, armazenar um resultado da operação versus não armazenar um resultado da operação, etc.). Alternativamente, se selecionar entre mais de duas operações diferentes for desejado, então dois ou mais bits podem ser utilizados para cada elemento de máscara. Na ilustração, a máscara de operação de dados empacotados inclui dezesseis bits (isto é, 0011100001101011), e cada um dos dezesseis bits tem uma correspondência ordenada para um dos dezesseis pares de elementos de dados correspondentes dos dados empacotados de primeira e segunda fonte. Por exemplo, o bit de máscara de ordem mais baixa (à direita) corresponde ao par de ordem mais baixa de elementos de dados correspondentes, o bit de máscara de ordem mais elevada (à esquerda) corresponde ao par de ordem mais elevada de elementos de dados correspondentes, e assim por diante. [0041] A operação ilustrada de dados empacotados mascarados é uma operação de adição de dados empacotados mascarados para armazenar condicionalmente somas de pares correspondentes de elementos de dados a partir dos dados empacotados de primeira e segunda fonte em um resultado de dados empacotados 212A de acordo com mascaramento, predicação, ou controle condicional da máscara de operação de dados empacotados de fonte. Cada um dos dezesseis bits de máscara da máscara de operação de dados empacotados 211A é definido (isto é, tem um valor binário de 1) ou é limpo (isto é, tem um valor binário de 0). De acordo com a convenção ilustrada, cada bit de máscara é definido (isto é, 1) ou limpo (isto é, 0), respectivamente, para permitir ou não permitir que um resultado da operação de dados empacotados (nesse caso, adição) , executada em um par correspondente dos elementos de dados empacotados de fonte, seja armazenado em um elemento de dados correspondente do resultado de dados empacotados 212A. Esses bits definidos (isto é, 1) representam bits não mascarados ou elementos não mascarados, ao passo que esses bits limpos (isto é, 0) representam bits mascarados ou elementos mascarados. Por exemplo, o bit de máscara de ordem-próxima-a-mais-baixa é definido (isto é, 1) e a soma (isto é, 8=7 + 1) é armazenada no elemento de dados de ordem-próxima-a-mais-baixa correspondente do resultado de dados empacotados. Na ilustração, as somas são sublinhadas. [0042] Inversamente, quando o bit de máscara determinado é limpo (isto é, 0), então um resultado da operação de dados empacotados no par correspondente de elementos de dados de fonte não é armazenado no elemento de dados de resultado correspondente. Em vez disso, na ilustração, o valor do elemento de dados correspondente a partir dos dados empacotados da segunda fonte é armazenado no elemento de dados de resultado correspondente. Por exemplo, o bit de ordem-mais-elevada (à esquerda) na máscara de operação de dados empacotados é limpo (isto é, 0) e o valor numérico (isto é, 15) do elemento de dados de ordem mais elevada a partir dos dados empacotados da segunda fonte é armazenado no elemento de dados de resultado de ordem mais elevada. Essa versão de mascaramento é mencionada como mascaramento de fusão. Deve ser reconhecido que uma convenção oposta também é possível onde bits são limpos (isto é, 0) para permitir que os resultados sejam armazenados, ou definidos (isto é, 1) para não permitir que os resultados sejam armazenados. [0043] Em algumas modalidades, a operação de dados empacotados pode ser opcionalmente executada em todos os pares correspondentes de elementos de dados dos dados empacotados de primeira e segunda fonte independente de se os bits de máscara correspondentes são definidos ou limpos, porém os resultados da operação de dados empacotados podem ser armazenados ou não no resultado de dados empacotados dependendo dos valores dos bits de máscara. Alternativamente, em outra modalidade, a operação de dados empacotados pode ser opcionalmente omitida (isto é, não executada) se o bit de máscara correspondente especificar que o resultado da operação não deve ser armazenado. Em algumas modalidades, exceções (por exemplo, indicadores de exceção) ou violações podem ser opcionalmente suprimidas ou não criadas por uma operação de dados empacotados em um elemento mascarado. Em algumas modalidades, para instruções de dados empacotados mascarados com um operando de memória, falhas de memória podem ser opcionalmente suprimidas para elementos de dados desmascarados (masked-off). [0044] A Figura 2B é um diagrama de blocos que ilustra uma segunda modalidade exemplar representativa de uma operação de dados empacotados mascarados com ação de zerar 203B. A operação de dados empacotados mascarados com ação de zerar é similar à operação de dados empacotados mascarados acima mencionada com fusão. Para evitar obscurecer a descrição, as similaridades não serão repetidas, porém em vez disso, as diferenças serão principalmente mencionadas. Uma diferença notável é que em vez de fundir ou armazenar valores de elementos de dados de dados empacotados de uma fonte (por exemplo, os dados empacotados de segunda fonte 210A na Figura 2A) nos elementos de dados de resultado correspondentes quando bits de máscara correspondentes são desmascarados (masked off) (por exemplo, limpo para 0) , os elementos de dados de resultado correspondentes são zerados. Por exemplo, todos os 32 bits de um elemento de dados empacotados de resultado de palavra dupla podem ter um valor de zero. Isso é mencionado como mascaramento de zerar. Alternativamente, outros valores predeterminados além de zero podem ser opcionalmente utilizados. [0045] Esses são somente alguns exemplos ilustrativos de operações de dados empacotados mascarados. Deve ser reconhecido que um processador pode suportar uma ampla variedade de tipos diferentes de operações de dados empacotados mascarados. Em outras modalidades, esses podem incluir aqueles que têm somente dados empacotados de uma fonte, dados empacotados de mais de duas fontes, dados empacotados de fonte de tamanhos diferentes, dados empacotados de fonte de números diferentes de elementos de dados, operações executadas em um modo alinhado não verticalmente ou horizontal, etc. [0046] A Figura 3 é um diagrama de blocos de uma modalidade de um equipamento de processamento de instrução 300 tendo uma unidade de execução 308 que é operável para executar uma modalidade de uma instrução de consolidação de máscara de operação 304. Em algumas modalidades, o equipamento de processamento de instrução pode ser um processador e/ou pode ser incluído em um processador. Por exemplo, em algumas modalidades, o equipamento de processamento de instrução pode ser, ou pode ser incluído no processador da Figura 1. Alternativamente, o equipamento de processamento de instrução pode ser incluído em um processador similar ou diferente. Além disso, o processador da Figura 1 pode incluir um equipamento de processamento de instruções similar ou diferente. [0047] O equipamento 300 pode receber a instrução de consolidação de máscara de operação 304. Por exemplo, a instrução pode ser recebida a partir de uma unidade de busca de instrução, uma fila de instruções ou similar. A instrução de consolidação de máscara de operação pode representar uma instrução de código de máquina, instrução de linguagem assembly, macroinstrução ou sinal de controle de uma ISA do equipamento. A instrução de consolidação de máscara de operação 304 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) , uma máscara de operação de fonte 311, e pode especificar ou de outro modo indicar um local de armazenagem de destino 318. Em algumas modalidades, a instrução pode especificar explicitamente tanto a máscara de operação de fonte como o local de armazenagem de destino, embora isso não seja exigido. Por exemplo, uma instrução de consolidação de máscara de operação de uma modalidade pode ter o formato de instrução KConsol Kl, K2 onde KConsol indica o opcode, Kl especifica um registrador de máscara de operação de dados empacotados de destino, K2 especifica um registrador de máscara de operação de dados empacotados de fonte. Em algumas modalidades, a máscara de operação de fonte 311 pode incluir elementos mascarados (por exemplo, bits de máscara limpos para zero) , e elementos não mascarados (por exemplo, bits de máscara definidos em um) , e pelo menos alguns dos elementos mascarados podem ser intercalados ou de outro modo dispostos pelo menos em alguns dos elementos não mascarados. Os exemplos disso incluem, porém certamente não são limitados a, 01010101, 00101000, 11100111, 01100101 e 11000011, citando apenas alguns exemplos ilustrativos. [0048] Em algumas modalidades, a máscara de operação de fonte 311 pode ser armazenada em um registrador de máscara de operação de dados empacotados de fonte 316 que pode ser especificado ou de outro modo indicado pela instrução. O registrador de máscara de operação de dados empacotados 316 pode ser um de um conjunto de registradores de máscara de operação de dados empacotados 307. Similarmente, em algumas modalidades, o local de armazenagem de destino 317 pode estar entre os registradores de máscara de operação de dados empacotados 307. Em algumas modalidades, o local de armazenagem de destino pode ser o mesmo registrador ou um registrador diferente, que a máscara de operação de dados empacotados de fonte 316. Os registradores de máscara de operação de dados empacotados podem ser implementados em modos diferentes em microarquiteturas diferentes utilizando técnicas bem conhecidas e não são limitados a nenhum tipo de circuito específico, conhecido. Os exemplos de tipos de registradores apropriados incluem, porém não são limitados a, registradores físicos dedicados, registradores físicos dinamicamente alocados utilizando renomeação de registrador e combinações dos mesmos. [0049] O equipamento de processamento de instrução ilustrado inclui uma unidade de decodificação ou decodificador 315. O decodificador de instruções pode receber e decodificar macroinstruções, instruções de código de máquina, instruções de linguagem assembly, ou outras instruções de nível relativamente mais elevado, e transmitir uma ou mais microinstruções, micro-operações, pontos de entrada de microcódigo, ou outras instruções de nível relativamente mais baixo ou sinais de controle que refletem, representam e/ou são derivados das instruções de nível mais elevado recebidas. As uma ou mais instruções de nível mais baixo ou sinais de controle podem implementar a instrução de nível mais elevado através de uma ou. mais operações de nível mais baixo (por exemplo, nível de circuito ou nível de hardware). O decodificador pode ser implementado utilizando vários mecanismos diferentes incluindo, porém não limitado a, memórias somente de leitura (ROMs) de microcódigo, tabelas de consulta, implementações de hardware, arranjos de lógica programável (PLAs), e outros mecanismos utilizados para implementar decodificadores conhecidos na técnica. [0050] Em outras modalidades, um emulador de instrução, tradutor, transformador (morpher), intérprete, ou outra lógica de conversão de instrução pode ser utilizado. Vários tipos diferentes de lógica de conversão de instrução são conhecidos na técnica e podem ser implementados em software, hardware, firmware ou uma combinação dos mesmos. A lógica de conversão de instrução pode receber a instrução e emular, traduzir, transformar, interpretar ou de outro modo converter a instrução em uma ou mais instruções derivadas correspondentes ou sinais de controle. Em outras modalidades, tanto a lógica de conversão de instrução como um decodificador pode ser utilizado. Por exemplo, o equipamento pode ter lógica de conversão de instrução para converter uma instrução de código de máquina recebida em uma ou mais instruções intermediárias, e um decodificador para decodificar uma ou mais instruções intermediárias em uma ou mais instruções de nível mais baixo ou sinais de controle executáveis por hardware nativo do equipamento (por exemplo, uma unidade de execução). Parte ou toda a lógica de conversão de instrução pode ser localizada fora do equipamento de processamento de instrução, como, por exemplo, em uma pastilha separada e/ou em uma memória. [0051] Com referência novamente à Figura 3, a unidade de execução 308 é acoplada à unidade de decodificação 315, com a máscara de operação de dados empacotados de fonte 311, e com o local de armazenagem de destino 317. A unidade de execução pode receber 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 consolidação de máscara de operação 304. Como anteriormente mencionado, a máscara de operação de fonte 311 pode incluir elementos mascarados, e elementos não mascarados, e pelo menos alguns dos elementos mascarados podem ser intercalados ou de outro modo dispostos entre pelo menos alguns dos elementos não mascarados. Em algumas modalidades, a unidade de execução pode ser operável em resposta a e/ou como resultado da instrução de consolidação de máscara de operação 304 para armazenar uma máscara de operação consolidada 318 no local de armazenagem de destino 317. Em algumas modalidades, a máscara de operação consolidada pode incluir os elementos não mascarados a partir da máscara de operação de fonte coletados juntos, trazidos juntos, feitos adjacentes entre si, ou de outro modo consolidados juntos. Em algumas modalidades, na máscara de operação consolidada pode não haver elementos mascarados dispostos ou intercalados entre o conjunto consolidado de todos os elementos não mascarados a partir da máscara de operação de fonte. Isto é, os elementos mascarados podem ser movidos para longe ou de outro modo eliminados de estar entre os elementos não mascarados. [0052] Em algumas modalidades, cada um dos elementos mascarados e não mascarados pode ser um bit de máscara única diferente, tal como, por exemplo, cada elemento mascarado pode ser um bit único tendo um valor de zero binário (isto é, ser limpo em 0) ao passo que cada elemento não mascarado pode ser um bit único tendo um valor binário de um (isto é, ser ajustado em 1) . Em algumas modalidades, a unidade de execução pode ser operável para consolidar juntos os elementos não mascarados a partir da máscara de operação de fonte em uma porção menos significativa da máscara de operação consolidada ou registrador. Alternativamente, em algumas modalidades, a unidade de execução pode ser operável para consolidar juntos os elementos não mascarados a partir da máscara de operação de fonte em uma porção mais significativa do registrador ou máscara de operação consolidada. Em algumas modalidades, a instrução de consolidação de máscara de operação pode ser operável para indicar se os elementos não mascarados a partir da máscara de operação de fonte devem ser consolidados em uma porção menos significativa ou mais significativa do registrador ou máscara de operação consolidada. Por exemplo, em algumas modalidades, a instrução de consolidação de máscara de operação pode incluir um ou mais bits que podem ter um primeiro valor (um valor binário de bit único de zero) para indicar que os elementos não mascarados devem ser consolidados juntos na porção significativa, ou um segundo valor (um valor binário de bit único de um) para indicar que os elementos não mascarados devem ser consolidados juntos na porção mais significativa. Por exemplo, uma instrução de consolidação de máscara de operação de uma modalidade pode ter o formato de instrução KConsol Kl, K2, ordem, onde KConsol indica o opcode. Kl especifica um registrador de máscara de operação de dados empacotados de destino, K2 especifica um registrador de máscara de operação de dados empacotados de fonte, e ordem inclui um ou mais bits para indicar se a consolidação é para o bit menos ou mais significativo na máscara de operação. [0053] A unidade de execução e/ou o equipamento de processamento de instruções pode incluir lógica particular ou específica (por exemplo, conjunto de circuitos ou outro hardware potencialmente combinado com firmware e/ou software) que é operável para executar a instrução de consolidação de máscara de operação e armazenar a máscara de operação consolidada em resposta à instrução de consolidação de máscara de operação (por exemplo, em resposta a uma ou mais instruções ou sinais de controle decodificados ou de outro modo derivados da instrução de consolidação de máscara de operação). Como exemplo, a unidade de execução pode incluir uma unidade lógica, uma unidade de lógica aritmética, um circuito digital para executar operações lógicas, uma unidade funcional ou de execução incluindo lógica de consolidação de máscara de operação, ou similar. [0054] Para evitar obscurecer a descrição, um equipamento de processamento de instrução relativamente simples 300 foi mostrado e descrito. Em outras modalidades, o equipamento pode incluir opcionalmente outros componentes bem conhecidos encontrados em processadores. Os exemplos de tais componentes incluem, porém não são limitados a, uma unidade de predição de ramo, uma unidade de busca de instrução, caches de dados e instrução, buffers de tradução lookaside de dados e instrução, buffers de busca prévia, filas de microinstruções, sequenciadores de microinstrução, uma unidade de renomeação de registrador, uma unidade de programação de instrução, unidades de interface de barramento, caches de segundo nível ou nível mais elevado, uma unidade de retirada, outros componentes incluídos em processadores, e várias combinações dos mesmos. Há literalmente inúmeras combinações e configurações diferentes de componentes em processadores, e modalidades não são limitadas a nenhuma combinação ou configuração específica. 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 quais tem lógica de execução operável para executar uma modalidade de uma instrução aqui descrita. [0055] A Figura 4A é um diagrama de blocos de uma modalidade exemplar de uma consolidação de máscara de operação para operação de posição menos significativa 404a que pode ser realizada em resposta a e/ou como resultado de uma modalidade exemplar de uma consolidação de máscara de operação para instrução de posição menos significativa. A instrução pode especificar explicitamente ou indicar de outro modo (por exemplo, indicar implicitamente) uma máscara de operação de fonte 411A e um destino (por exemplo, local de armazenagem de destino). Na modalidade ilustrada, a máscara de operação de fonte tem 8 bits de largura. Em outras modalidades, a máscara de operação de fonte pode ser mais estreita (por exemplo, 4 bits) ou mais larga (por exemplo, 16 bits, 32 bits, 65 bits, ou ainda mais larga). Em alguns aspectos, a largura da máscara de operação pode depender de uma largura de dados empacotados correspondente e largura de elemento de dados (vide, por exemplo, a discussão das Figuras 8 e 10) . Em algumas modalidades, a máscara de operação de fonte pode ser incluída em um registrador de máscara de operação, e pode representar um subconjunto dos bits do registrador (por exemplo, um subconjunto de ordem mais baixa) que são ativos, significativos e/ou utilizados para predicação. Por outro lado, outro subconjunto dos bits no registrador (por exemplo, uma porção restante de ordem mais elevada) pode ser não ativo, não significativo e/ou não utilizado para predicação. Em algumas modalidades, a máscara de operação de fonte pode incluir uma pluralidade de elementos mascarados dispostos em uma pluralidade de elementos não mascarados. Por exemplo, na ilustração, a máscara de operação de fonte inclui do bit de ordem mais baixa-0 (à direita) até o bit de ordem mais elevada-7 (à esquerda), os valores de bit 0, 0, 1, 1, 0, 0, 1, 1. Esses dados são somente um exemplo, e a instrução/operação funciona independente do arranjo dos elementos mascarados e não mascarados na máscara de operação de fonte. Virtualmente qualquer outro dos inúmeros arranjos possíveis também funcionará. De acordo com a convenção ilustrada, os valores de bit "1" ou definidos representam bits não mascarados, ao passo que os valores de bit "0" ou limpos representam bits mascarados. Em uma modalidade alternativa, a convenção oposta pode ser utilizada em vez disso. Além disso, em outras modalidades, elementos de máscara de múltiplos bits podem ser opcionalmente utilizados (por exemplo, tendo dois bits, ou uma largura de elementos de dados empacotados correspondentes). [0056] Uma modalidade de uma máscara de operação consolidada 418A pode ser armazenada no destino em resposta a e/ou como resultado da instrução. Em algumas modalidades, a máscara de operação consolidada pode incluir os elementos não mascarados (por exemplo, os bits definidos ou valores de bit "1" de acordo com a convenção ilustrada) a partir da máscara de operação fonte 411A coletados ou de outro modo consolidados juntos no destino. Por exemplo, nessa versão de posição menos significativa da instrução/operação, todos os elementos não mascarados (por exemplo, os valores de bit "1" ou definidos de acordo com a convenção ilustrada), nesse caso todos os quatro, são armazenados nos bits de ordem mais baixa da máscara de operação consolidada e/ou destino, nesse caso os 4 bits de ordem mais baixa. Em particular, a máscara de operação consolidada inclui do bit-0 de ordem mais baixa (à direita) ao bit-7 de ordem mais elevada (à esquerda), os valores de bit 1, 1, 1, 1, 0, 0, 0, 0. Vários modos são considerados para obter isso incluindo através de roteamento, cópia, seleção ou alguma combinação dos mesmos, ou de outro modo mover ou rearranjar esses elementos não mascarados. Em algumas modalidades, os elementos mascarados (por exemplo, os bits limpos ou valores de bit "0" de acordo com a convenção ilustrada) a partir da máscara de operação de fonte podem ser meramente descartados ou deletados e podem não necessitar ser transferidos para o destino. Bits mais significativos do que o número total de bits não mascarados na máscara de operação de fonte podem meramente ser zerados no destino. Isto é, quaisquer elementos mascarados descartados (por exemplo, os bits limpos ou valores de bit "0") podem ser preenchidos com elementos mascarados substituídos (por exemplo, bits limpos ou valores de bit "0") . Alternativamente, em outras modalidades, os elementos mascarados da máscara de operação de fonte podem ser movidos ou rearranjados para as posições de ordem mais elevada do que os elementos não mascarados. [0057] A Figura 4B é um diagrama de blocos de uma modalidade exemplar de uma consolidação de máscara de operação para operação de posição mais significativa 404b que pode ser realizada em resposta a e/ou como resultado de uma modalidade exemplar de uma consolidação de máscara de operação para instrução de posição mais significativa. Muitas das características e aspectos são similares a ou iguais àqueles anteriormente descritos para a Figura 4A. Para evitar obscurecer a descrição, a discussão enfatizará principalmente os aspectos e características diferentes ou adicionais. Como anteriormente, a instrução pode especificar explicitamente ou indicar de outro modo (por exemplo, indicar implicitamente) uma máscara de operação de fonte 411B e um destino (Por exemplo, um local de armazenagem de destino) . Como anteriormente, uma modalidade de uma máscara de operação consolidada 418B pode ser armazenada no destino em resposta a e/ou como resultado da instrução. Similar a anteriormente, em algumas modalidades, a máscara de operação consolidada pode incluir os elementos não mascarados (por exemplo, os bits definidos ou valores de bit "1" de acordo com a convenção ilustrada) a partir da máscara de operação de fonte 411B consolidada junta no destino. Entretanto, nessa versão de posição mais significativa da instrução/operação, todos os quatro elementos não mascarados (por exemplo, os valores de bit "1" ou definidos de acordo com a convenção ilustrada) são armazenados na ordem mais elevada ou 4 bits mais significativos da máscara de operação consolidada. Em particular, a máscara de operação consolidada inclui do bit-0 de ordem mais baixa (à direita) até o bit-7 de ordem mais elevada (à esquerda), os valores de bit 0, 0, 0, 0, 1, 1, 1, 1. [0058] Há apenas alguns exemplos ilustrativos de operações de consolidação de máscara de operação apropriadas. Outros exemplos de máscaras de operação de 8 bits de início adequado (à esquerda), e máscaras de operação consolidada resultantes (à direita), do bit-0 de ordem mais baixa (à direita) até o bit-7 de ordem mais elevada (à esquerda), incluem, porém não são limitados a: 10000001 ->-00000011 (versão menos significativa) 01010100 -> 00000111 (versão menos significativa) 00101111 -> 00011111 (versão menos significativa) 10000001 -> 11000000 (versão mais significativa) 01010100 -> 11100000 (versão mais significativa) 00101111 -> 11111000 (versão mais significativa) [0059] Outras modalidades se referem a instruções/operações de consolidação de máscara de operação que operam em máscaras de operação de 16 bits. Por exemplo, outros exemplos de máscaras de operação de 16 bits de início apropriadas (à esquerda) e máscaras de operação de 16 bits consolidadas resultantes (à direita), do bit-0 de ordem mais baixa (à direita) até o bit-7 de ordem mais elevada (à esquerda), incluem, porém não são limitados a: 1000000001100001 -> 0000000000001111 (versão menos significativa) 1000000000000001 ->0000000000000011 (versão menos significativa) 0001010011001110 -» 1111111000000000 (versão mais significativa) 0100111110111100 -> 1111111111000000 (versão mais significativa) [0060] Ainda outras modalidades se referem a instruções/operações de consolidação de máscara de operação que operam em máscaras de operação de 64 bits, ou aquelas tendo outros números de bits. Além disso, se desejado, a consolidação em uma posição intermediária (por exemplo, centro ou central) pode ser opcionalmente utilizada em vez de iniciar no bit menos ou mais significativo. [0061] A Figura 5 é um fluxograma de blocos de uma modalidade de um método 530 de processar uma modalidade de uma instrução de consolidação de máscara de operação. Em várias modalidades, o método pode ser executado por um processador de propósito geral, propósito especial ou outro equipamento de processamento de instruções ou dispositivo de lógica digital. Em algumas modalidades, as operações e/ou método da Figura 5 podem ser realizadas por, e/ou no, processador da Figura 1 e/ou equipamento da Figura 3. Os componentes, aspectos e detalhes opcionais específicos descritos aqui para o processador da Figura 1 e equipamento da Figura 3 também se aplicam opcionalmente às operações e/ou método da Figura 5. Alternativamente, as operações e/ou método da Figura 5 podem ser realizadas por, e/ou em, um equipamento ou processador similar ou totalmente diferente. Além disso, o processador da Figura 1 e/ou equipamento da Figura 3 pode executar operações e/ou métodos iguais a, similares a, ou diferentes daqueles da Figura 5. [0062] O método inclui receber a instrução de consolidação de máscara de operação, no bloco 531. Em vários aspectos, a instrução pode ser recebida em um processador, um equipamento de processamento de instrução, ou uma porção do mesmo (por exemplo, uma unidade de busca de instrução, um decodificador, um conversor de instrução, etc.). Em vários aspectos, a instrução pode ser recebida de uma fonte fora de pastilha (por exemplo, a partir de uma memória principal, um disco, ou uma interconexão) , ou de uma fonte na pastilha (por exemplo, de uma unidade de busca de instrução ou um cache de instrução) . A instrução de consolidação de máscara de operação pode especificar ou de outro modo indicar uma máscara de operação de fonte e um local de armazenagem de destino. Em algumas modalidades, a máscara de operação de fonte pode incluir uma pluralidade de elementos mascarados (por exemplo, bits de máscara limpos para zero binário) dispostos em uma pluralidade de elementos não mascarados (por exemplo, bits de máscara definidos em binário de um). [0063] Uma máscara de operação consolidada pode ser armazenada no local de armazenagem de destino em resposta a, e/ou como resultado da, instrução de consolidação de máscara de operação, no bloco 532. Representativamente, uma unidade de execução, equipamento de processamento de instrução, ou processador pode executar a operação especificada pela instrução e armazenar o resultado. Em algumas modalidades, a máscara de operação consolidada pode incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada junta. [0064] Em algumas modalidades, na máscara de operação consolidada pode não haver elementos mascarados dispostos entre os elementos não mascarados. Em algumas modalidades, os elementos não mascarados podem ser consolidados em uma porção menos significativa da máscara de operação consolidada ou registrador. Alternativamente, os elementos não mascarados podem ser consolidados em uma porção mais significativa da máscara de operação consolidada ou registrador. Em algumas modalidades, a instrução de consolidação de máscara de operação pode ser operável para indicar se a porção menos ou mais significativa deve ser utilizada (por exemplo, através de um ou mais bits ou um campo). [0065] O método ilustrado envolve operações visíveis de modo arquitetural (por exemplo, aqueles visíveis de uma perspectiva de software). Em outras modalidades, o método pode incluir opcionalmente uma ou mais operações microarquiteturais. Como exemplo, a instrução pode ser buscada, decodificada, programada (sheduled) fora de ordem, operandos de fonte podem ser acessados, uma unidade de execução ou lógica pode ser habilitada para executar e pode executar operações microarquiteturais para implementar a instrução, resultados podem ser colocados de volta na ordem do programa e efetivados, etc. Modos microarquiteturais diferentes de executar a operação são considerados. [006 6] A Figura 6 é um diagrama de blocos de uma modalidade de um formato de instrução apropriado 634 para uma instrução de consolidação de máscara de operação. 0 formato de instrução inclui um código de operação ou opcode 635. O opcode pode representar uma pluralidade de bits ou um ou mais campos que são operáveis para identificar a instrução e/ou a operação a ser realizada. O formato de instrução também inclui um campo 636 para especificar uma máscara de operação de fonte, e um campo 637 para especificar um local de armazenagem de destino. Como exemplo, cada um desses especificadores pode incluir bits ou um ou mais campos para especificar um endereço de um registrador, local de memória, ou outro local de armazenagem. Em algumas modalidades, cada um desses pode indicar um registrador de máscara de operação de dados empacotados potencialmente iguais ou potencialmente diferentes. Em uma modalidade específica, cada um desses podem incluir 3 bits para selecionar um dos oito registradores de máscara de operação de dados empacotados. Em outras modalidades, um campo único pode ser utilizado para indicar uma fonte única que é também utilizada como um destino. Ainda em outras modalidades, uma fonte implícita e/ou destino implícito pode ser opcionalmente utilizado. Em algumas modalidades, o formato pode incluir também opcionalmente um ou mais bits ou um campo 63 8 para indicar uma seleção de ordem mais baixa ou ordem mais elevada. Isso pode indicar se elementos não mascarados são consolidados em uma porção de ordem mais elevada ou mais baixa da máscara. Modalidades alternativas podem incluir um subconjunto dos especificadores, podem adicionar campos adicionais, podem sobrepor certos campos, etc. A ordem/arranjo ilustrado dos campos não é exigida, porém em vez disso os campos podem ser rearranjados. Campos não necessitam incluir sequências contíguas de bits, porém em vez disso podem ser compostos de bits não contíguos ou separados. [0067] As instruções de consolidação de máscara de operação aqui descritas são instruções de propósito geral e têm utilidade geral. Por exemplo, essas operações/instruções de manipulação de máscara de operação podem ser utilizadas, individualmente ou em combinação com outras instruções, para consolidar ou de outro modo manipular máscaras de operação em vários modos diferentes que são úteis e desejáveis para a aplicação especifica, algoritmo ou código. [0068] Em algumas modalidades, as operações/instruções de consolidação de máscara de operação podem ser utilizadas para ajudar a vetorizar o código. Por exemplo, um compilador pode utilizar as operações/instruções de consolidação de máscara de operação para ajudar a autovetorizar o código onde as operações de código subjacentes somente nos valores não mascarados na máscara de operação. Em algumas modalidades, as operações/instruções de consolidação de máscara de operação podem ser utilizadas para facilitar a autovetorização de código de incremento de loop condicional (por exemplo, acelerar autoincremento condicional de valores de contador para múltiplas iterações de um loop) . Operações de incremento de loop condicional tendem a ser desafiadoras para um compilador autovetorizar. Como exemplo, uma contagem incrementai pode ser incluída em um primeiro registrador, tal como, por exemplo, os valores 1, 2, 3, 4, 5, 6, 7, 8. Uma máscara consolidada pode ser incluída em um segundo registrador, incluindo, por exemplo, os valores 0, 0, 0, 0, 1, 1, 1, 1. Cada um dos valores na máscara consolidada pode representar uma iteração diferente do loop. A presença de quatro bits de máscara definidos pode ser utilizada para selecionar eficientemente o valor 4 a partir do primeiro registrador que pode ser utilizado para incrementar um contador ou variável em um loop eficientemente sem ter de passar através de cada incremento. Tais condições ocorrem comumente em aplicações de computação de desempenho elevado bem como mais genericamente. Tal vetorização aperfeiçoada pode ajudar a aumentar a utilização de larguras de vetor largo, aumentar o desempenho e reduzir consumo de energia. Também pode ajudar a aumentar o desempenho por thread. [0069] Alternativamente, as instruções/operações podem ser utilizadas para outros propósitos além de promover vetorização aumentada. Em algumas modalidades, as operações/instruções de consolidação de máscara de operação podem ser utilizadas para rearranjar os elementos não mascarados de modo que sejam mais fáceis ou mais rápidas de contar ou de outro modo processar (por exemplo, contar ou identificar o número total de elementos não mascarados). Ainda em outras modalidades, as operações/instruções de consolidação de máscara de operação podem ser utilizadas para manipular as máscaras de operação para uso ou consumo por outras instruções (por exemplo, outras instruções de manipulação de máscara de operação, instruções de dados empacotados mascarados, etc.). Entretanto, o escopo da invenção não é limitado apenas a esses usos específicos. Outros usos serão evidentes para aqueles versados na técnica com base na presente invenção. [0070] A Figura 7 é um diagrama de blocos de uma modalidade exemplar de um conjunto apropriado de registradores de dados empacotados 706. Os registradores de dados empacotados ilustrados incluem trinta e dois registradores vetoriais ou dados empacotados com 512 bits de largura. Esses trinta e dois registradores com 512 bits de largura são rotulados ZMMO até ZMM31. Na modalidade ilustrada, os 256 bits de ordem mais baixa dos dezesseis registradores inferiores desses registradores, a saber, ZMM0-ZMM15, são aliased ou sobrepostos em registradores de vetor ou dados empacotados com 256 bits de largura respectivos rotulados YMM0-YMM15, embora isso não seja exigido. De modo semelhante, na modalidade ilustrada, os 128 bits de ordem mais baixa de YMM0-YMM15 são aliased ou sobrepostos em registradores vetoriais ou dados empacotados de 128 bits respectivos rotulados XMM0-XMM1, embora isso também não seja exigido. Os registradores de 512 bits de largura ZMMO até ZMM31 são operáveis para conter dados empacotados de 512 bits, dados empacotados de 2 56 bits ou dados empacotados de 12 8 bits. Os registradores de 256 bits de largura YMM0-YMM15 são operáveis para conter dados empacotados de 256 bits, ou dados empacotados de 128 bits. Os registradores com 128 bits de largura XMM0-XMM1 são operáveis para conter dados empacotados de 128 bits. Cada um dos registradores pode ser utilizado para armazenar dados de ponto flutuante empacotados ou dados inteiros empacotados. Tamanhos de elemento de dados diferentes são suportados incluindo pelo menos dados de byte de 8 bits, dados de palavra de 16 bits, palavra dupla de 32 bits ou dados de ponto flutuante de precisão única, e palavra quádrupla de 64 bits ou dados de ponto flutuante de precisão dupla. Modalidades alternativas de registradores de dados empacotados podem incluir números diferentes de registradores, tamanhos diferentes de registradores, e podem ou não alias registradores maiores ou registradores menores. [0071] Um exemplo de um formato de dados empacotados apropriado é um formato de palavra empacotada de 256 bits que tem 256 bits de largura e inclui dezesseis elementos de dados de palavra de 16 bits. Outro exemplo é um formato de palavra dupla empacotada de 256 bits que tem 256 bits de largura e inclui oito elementos de dados de palavra dupla (dword) de 32 bits. Ainda outro exemplo é um formato de palavra quádrupla (quadword) empacotado de 256 bits que tem 256 bits de largura e inclui quatro elementos de dados de quadword de 64 bits. Outros formatos de dados empacotados são também apropriados. Por exemplo, outros formatos de dados empacotados de 256 bits apropriados incluem formato de byte de 8 bits empacotado de 256 bits, formato de ponto flutuante de precisão única de 32 bits empacotados de 256 bits, e formato de ponto flutuante de precisão dupla de 645 bits empacotado de 256 bits. Além disso, formatos de dados empacotados maiores e/ou menores do que 256 bits são também apropriados. Por exemplo, formatos de dados empacotados de 512 bits (ou maiores) e/ou formatos de dados empacotados de 128 bits (ou menores) dos tipos de dados acima mencionados são também apropriados. Em geral, os formatos de dados empacotados de 512 bits podem ter duas vezes tantos elementos de dados quanto os formatos de dados empacotados de 256 bits para o mesmo tipo de dados, enquanto os formatos de dados empacotados de 128 bits podem ter metade do número dos elementos de dados como os formatos de dados empacotados de 256 bits para o mesmo tipo de dados. Genericamente, o número de elementos de dados empacotados é igual ao tamanho em bits dos dados empacotados divididos pelo tamanho em bits dos elementos de dados empacotados. [0072] A Figura 8 é uma tabela que ilustra que o número de bits de máscara de operação de dados empacotados 840 depende da largura de dados empacotados e a largura de elemento de dados empacotados. Larguras de dados empacotados de 128 bits, 256 bits e 512 bits são mostradas, embora outras larguras sejam também possíveis. Larguras de elementos de dados empacotados de bytes de 8 bits, palavras de 16 bits, palavras duplas de 32 bits (dwords) ou ponto flutuante de precisão única, e quadwords de 64 bits (Qwords) ou ponto flutuante de precisão dupla são considerados, embora outras larguras sejam também possíveis. [0073] Como mostrado quando a largura de dados empacotados for de 128 bits, 16 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 8 bits, 8 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 16 bits, 4 bits podem ser utilizados para mascarar quando a largura do elemento de dados empacotados for de 32 bits, e 2 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 64 bits. Quando a largura de dados empacotados for de 2 56 bits, 32 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 8 bits, 16 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 16 bits, 8 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 32 bits, e 4 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 64 bits. Quando a largura de dados empacotados for de 512 bits, 64 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 8 bits, 32 bits podem ser utilizados para mascarar quando a largura do elemento de dados empacotados for de 16 bits, 16 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 32 bits, e 8 bits podem ser utilizados para mascarar quando a largura de elemento de dados empacotados for de 64 bits. [0074] A Figura 9 é um diagrama de blocos de uma modalidade exemplar de um conjunto apropriado de registradores de máscara de operação de dados empacotados 907. Cada um dos registradores de máscara de operação de dados empacotados pode ser utilizado para armazenar uma máscara de operação de dados empacotados. Na modalidade ilustrada, o conjunto inclui oito registradores de máscara de operação de dados empacotados rotulados kO até k7. Modalidades alternativas podem incluir menos do que oito {por exemplo, dois, quatro, seis, etc.) ou mais do que oito (por exemplo, dezesseis, vinte, trinta e dois, etc.) registradores de máscara de operação de dados empacotados. Na modalidade ilustrada, cada um dos registradores de máscara de operação de dados empacotados tem 64 bits de largura. Em modalidades alternativas, as larguras dos registradores de máscara de operação de dados empacotados podem ser mais largas do que 64 bits (por exemplo, 80 bits, 128 bits, etc.) ou mais estreitas do que 64 bits (por exemplo, 8 bits, 16 bits, 32 bits, etc.). Os registradores de máscara de operação de dados empacotados podem ser implementados em modos diferentes utilizando técnicas bem conhecidas e não são limitados a nenhum tipo específico conhecido de circuito. Os exemplos de registradores apropriados incluem, porém não são limitados a, registradores físicos dedicados, registradores físicos dinamicamente alocados utilizando renomeação de registrador, e combinações dos mesmos.
[0075] Em algumas modalidades, os registradores de máscara de operação de dados empacotados 1008 podem ser um conjunto separado, dedicado de registradores arquiteturais. Como exemplo, as instruções de dados empacotados mascarados podem utilizar três bits (por exemplo, um campo de 3 bits) para codificar ou especificar qualquer um dos oito registradores de máscara de operação de dados empacotados kO até k7. Em modalidades alternativas, um número menor ou maior de bits pode ser utilizado quando há menos ou mais registradores de máscara de operação de dados empacotados, respectivamente. Em uma implementação específica, somente registradores de máscara de operação de dados empacotados kl até k7 (porém não kO) podem ser endereçados como um operando de predicado para predicar uma operação de dados empacotados mascarados. O registrador kO pode ser utilizado como uma fonte ou destino regular, porém não pode ser codificado como um operando de predicado (por exemplo, se kO for especificado como tendo uma codificação de todos uns ou "não mascarados"). Em outras modalidades, todos ou somente alguns dos registradores podem ser codificados como um operando de predicado. [0076] A Figura 10 é um diagrama que ilustra uma modalidade exemplar de um registrador de máscara de operação de dados empacotados 1007 e mostra que o número de bits que são utilizados como uma máscara de operação de dados empacotados e/ou para mascaramento depende da largura de dados empacotados e largura de elemento de dados. A modalidade exemplar ilustrada do registrador de máscara de operação de dados empacotados tem 64 bits de largura, embora isso não seja exigido. Dependendo da combinação da largura de dados empacotados e largura de elemento de dados, todos os 64 bits, ou somente um subconjunto dos 64 bits, pode ser utilizado como uma máscara de operação de dados empacotados para mascaramento. Genericamente, quando um único bit de controle de mascaramento por elemento for utilizado, o número de bits no registrador de máscara de operação de dados empacotados que são utilizados para mascaramento é igual à largura de dados empacotados em bits dividido pela largura de elemento de dados empacotados em bits. [0077] vários exemplos ilustrativos são mostrados. A saber, quando a largura de dados empacotados for de 512 bits e a largura de elemento de dados empacotados for de 64 bits, então somente os 8 bits de ordem mais baixa do registrador são utilizados como a máscara de operação de dados empacotados. Quando a largura de dados empacotados for de 512 bits e a largura de elemento de dados empacotados for de 32 bits, então somente os 16 bits de ordem mais baixa do registrador são utilizados como a máscara de operação, de dados empacotados. Quando a largura de dados empacotados for de 512 bits e a largura de elemento de dados empacotados for de 16 bits, então somente os 32 bits de ordem mais baixa do registrador são utilizados como a máscara de operação de dados empacotados. Quando a largura de dados empacotados for de 512 bits e a largura do elemento de dados empacotados for de 8 bits, então todos os 64 bits do registrador são utilizados como a máscara de operação de dados empacotados. De acordo com a modalidade ilustrada, uma instrução de dados empacotados mascarados pode acessar e/ou utilizar somente o número de ordem mais baixa ou bits menos significativos do registrador utilizado para a máscara de operação de dados empacotados com base naquela instrução associada à largura de dados empacotados e largura de elemento de dados. [0078] Na modalidade ilustrada, o subconjunto de ordem mais baixa ou porção do registrador é utilizada para mascarar, embora isso não seja exigido. Em modalidades alternativas um subconjunto de ordem mais elevada, ou algum outro subconjunto, pode ser opcionalmente utilizado. Além disso, na modalidade ilustrada, somente uma largura de dados empacotados de 512 bits é considerada, entretanto um princípio análogo se aplica para outras larguras de dados empacotados, tal como por exemplo, larguras de 256 bits e 128 bits. Como anteriormente mencionado, o uso de um registrador de máscara de operação de dados empacotados de 64 bits não é exigido. [0079] Um conjunto de instruções inclui um ou mais formatos de instrução. Um dado formato de instrução define vários campos (número de bits, local de bits) para especificar, entre outras coisas, a operação a ser realizada (opcode) e o(s) operando(s) no(s) qual(is) aquela operação deve ser executada. Alguns formatos de instrução são adicionalmente divididos {broken down) através da definição de gabaritos de instrução (ou subformatos). Por exemplo, os gabaritos de instrução de um dado formato de instrução podem ser definidos para ter diferentes subconjuntos dos campos de formato de instrução (os campos incluídos são tipicamente da mesma ordem, porém pelo menos alguns têm posições de bit diferentes porque há menos campos incluídos) e/ou definidos para ter um dado campo interpretado de forma diferente. Desse modo, cada instrução de uma ISA é expressa utilizando um determinado formato de instrução (e, se definido, em um determinado gabarito dos gabaritos de instrução daquele formato de instrução) e inclui campos para especificar a operação e os operandos. Por exemplo, uma instrução ADD exemplar tem um opcode específico e um formato de instrução que inclui um campo de opcode para especificar aquele opcode e campos de operando para selecionar operandos (sourcel/destino e source2); e uma ocorrência dessa instrução ADD em um fluxo de instruções terá conteúdo específico nos campos de operando que selecionam operandos específicos. Um conjunto de extensões SIMD encaminhado para Advanced Vector Extensions (AVX) (AVXl e AVX2) e utilizando o esquema de codificação de extensões vetoriais (VEX), foi liberado e/ou publicado (por exemplo, vide Intel® 64 e IA-32 Architectures Software Developers Manual, Outubro 1911; e vide Intel® Advanced Vector Extensions Programming Reference, Junho 1911).
Formatos de instrução exemplares [0080] As modalidades da(s) instrução(ões) descritas aqui podem ser incorporadas em formatos diferentes. Adicionalmente, sistemas, arquiteturas e pipelines exemplares são detalhados abaixo. Modalidades da(s) instrução(ões) podem ser executadas em tais sistemas, arquiteturas e pipelines, porém não são limitados aqueles detalhados.
Formato de instrução VEX [0081] A codificação VEX permite que instruções tenham mais de dois operandos, e permite que os registradores vetoriais SIMD sejam mais longos do que 118 bits. O uso de um prefixo VEX provê sintaxe de três operandos (ou mais) . Por exemplo, instruções de dois operandos anteriores executaram operações tais como A = A + B, que sobrescreve um operando de fonte. O uso de um prefixo VEX permite que operandos executem operações não destrutivas tais como A = B + C. [0082] A Figura 11A ilustra um formato de instrução AVX exemplar incluindo um prefixo VEX 1102, campo de opcode real 1130, byte Mod R/M 1140, byte SIB 1150, campo de deslocamento 1162, e IMM8 1172. A Figura 11B ilustra quais campos da Figura 11A compõem um campo opcode total 1174 e um campo de operação de base 1142. A Figura 11C ilustra quais campos da Figura 11A compõem um campo de índice de registrador 1144. [0083] O prefixo VEX (Bytes 0-2) 1102 é codificado em uma forma de três bytes. O primeiro byte é o campo de formato 1140 (Byte VEX 0, bits [7:0]), que contém um valor de byte C4 explícito (o valor exclusivo utilizado para distinguir o formato de instrução C4) . Os segundo-terceiro bytes (VEX Bytes 1-2) incluem um número de campos de bits que fornece capacidade específica. Especificamente, o campo REX 1105 (VEX Byte 1, bits [7-5]) consiste em um campo de bit VEX.R (VEX Byte 1, bit [7]-R), campo de bit VEX.X (VEX byte 1, bit [6]-X), e campo VEX.B bit (VEX byte 1, bit[5]-B) . Outros campos das instruções codificam os três bits inferiores dos índices de registrador como conhecido na técnica (rrr, xxx e bbb) , de modo que Rrrr, Xxxx e Bbbb possam ser formados pela adição VEX.R, VEX.X e VEX.B. O campo de mapa de opcode 1114 (VEX byte 1, bits [4:0] - mmmmm) inclui conteúdo para codificar um byte de opcode principal implícito. Campo W 1164 (VEX byte 2, bit [7]-W) é representado pela notação VEX.W, e provê funções diferentes dependendo da instrução. O papel de VEX.ww 1119 (VEX Byte 2, bits [6:3]-ww) pode incluir o seguinte: 1) VEX.vwv codifica o primeiro operando de registrador de fonte, especificado em forma invertida (complemento de ls) e é válido para instruções com 2 ou mais operandos de fonte; 2) VEX.vvvv codifica o operando de registrador de destino, especificado em forma de complemento de Is para certos deslocamentos vetoriais; ou 3) VEX.vvvv não codifica nenhum operando, o campo é reservado e deve conter 1111b. Se o campo de tamanho de VEX.L 1168 (VEX byte 2, bit [2]-L) = 0, indica vetor de 118 bits; se VEX.L = 1, indica vetor de 256 bits. O campo de codificação de prefixo 1125 (VEX byte 2, bits [l:0]-pp) provê bits adicionais para o campo de operação de base. [0084] O campo de opcode real 113 0 (Byte 3) também é conhecido como o byte de opcode. Parte do código de operação é especificada nesse campo.
[0085] O campo MOD R/M 114 0 (byte 4) inclui campo MOD 1142 (bits [7-6]), campo Reg 1144 (bits [5-3]), e campo R/M 1146 (bits [2-0]). O papel do campo Reg 1144 pode incluir o seguinte: codificar o operando de registrador de destino ou um operando de registrador de fonte (o rrr ou Rrrr) , ou ser tratado como uma extensão de opcode e não utilizado para codificar qualquer operando de instrução. O papel do campo R/M 1146 pode incluir o seguinte: codificar o operando de instrução que referencia um endereço de memória, ou codificar o operando de registrador de destino ou um operando de registrador de fonte. [0086] Escala, índice, Base (SIB) - o conteúdo do campo de Escala 1150 (byte 5) inclui SS1152 (bits [7-6]), que é utilizado para geração de endereço de memória. Os conteúdos de SIB.xxx 1154 (bits [5-3]) e SlB.bbb 1156 (bits [2-0]) foram anteriormente mencionados com relação aos índices de registrador Xxxx e Bbbb. [0087] O campo de deslocamento 1162 e o campo imediato (IMM8) 1172 contêm dados de endereço.
Arquitetura de registrador exemplar [0088] A Figura 12 é um diagrama de blocos de uma arquitetura de registrador 1200 de acordo com uma modalidade da invenção. Na modalidade ilustrada, há 32 registradores vetoriais 1210 que têm 511 bits de largura; esses registradores são referenciados como zmmO até zmm31. Os 256 bits de ordem inferior dos 15 registradores zrnm inferiores são sobrepostos em registradores ymmO-15. Os 118 bits de ordem inferior dos 15 registradores zrnm inferiores (os 118 bits de ordem inferior dos registradores ymm) são sobrepostos em registradores xmmO-14. [0089] Registradores de writemask 1214 - na modalidade ilustrada, há 8 registradores de writemask (kO até k7) , cada um com 64 bits de tamanho. Em uma modalidade alternativa, os registradores de writemask 1214 têm 15 bits de tamanho. Como anteriormente descrito, em uma modalidade da invenção, o registrador de máscara vetorial kO não pode ser utilizado como um writemask,-quando a codificação que normalmente indicaria kO é utilizada para uma writemask, seleciona uma writemask com ligação física (hardwired) de OxFFFF, desabilitando efetivamente mascaramento de gravação para aquela instrução. [0090] Registradores de propósito geral 1225 - na modalidade ilustrada, há dezesseis registradores de propósito geral de 64 bits que são utilizados juntamente com os modos de endereçamento x86 existentes para endereçar operandos de memória. Esses registradores são referenciados pelos nomes RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP e R8 até RI4. [0091] O arquivo de registrador de pilha de ponto flutuante escalar {pilha x87) 1245, no qual é aliased o arquivo de registrador plano de número inteiro empacotado MMX 1250 - na modalidade ilustrada, a pilha x87 é uma pilha de oito elementos utilizada para executar operações de ponto flutuante escalar em dados de ponto flutuante de 32/64/80 bits utilizando a extensão de conjunto de instruções x87, enquanto os registradores MMX são utilizados para executar operações em dados de número inteiro empacotados de 64 bits, bem como manter operandos para algumas operações executadas entre os registradores MMX e XMM. [0092] Modalidades alternativas da invenção podem utilizar registradores mais largos ou mais estreitos. Adicionalmente, modalidades alternativas da invenção podem utilizar mais, menos ou diferentes arquivos de registrador e registradores.
Arquiteturas de Núcleo, Processadores e Arquiteturas de Computador, Exemplares [0093] Núcleos de processador podem ser implementados em maneiras diferentes, para diferentes finalidades, e em diferentes processadores. Por exemplo, as implementações de tais núcleos podem incluir: 1) um núcleo de uso geral em ordem destinado para computação de uso geral, 2) um núcleo de uso geral de alto desempenho fora de ordem destinado para computação de uso geral, 3) um núcleo de uso especial destinado principalmente para computação gráfica e/ou científica (rendimento). Implementações de diferentes processadores podem incluir: 1) a CPU, incluindo um ou mais de núcleos de uso geral em ordem destinados à computação de uso geral e/ou um ou mais núcleos fora de ordem de uso geral, destinados para computação de uso geral, e 2) um coprocessador, incluindo um ou mais núcleos de uso específico destinados principalmente para computação gráfica e/ou científica (rendimento). Tais processadores diferentes conduzem a diferentes arquiteturas de sistema de computador, as quais podem incluir: 1) o coprocessador em um chip separado a partir da CPU, 2) o coprocessador em uma pastilha separada na mesma embalagem que uma CPU, 3), o coprocessador na mesma pastilha que uma CPU (em cujo caso, tal coprocessador é muitas vezes referido como lógica de uso especial; tal como lógica científica e/ou gráfica integrada (rendimento), ou núcleos de uso específico), e 4) um sistema em um chip que pode incluir na mesma pastilha a CPU descrita (por vezes referida como o(s) núcleo(s) de aplicativo ou processador(es) de aplicativo), o coprocessador acima descrito e uma funcionalidade adicional. Arquiteturas de núcleo exemplares são descritas a seguir, seguidas de descrições de processadores exemplares e arquiteturas de computador.
Arquiteturas de Núcleo Exemplares Diagrama de blocos de núcleo em ordem e fora de ordem [0094] A Figura 13 A é um diagrama de blocos que ilustra tanto um pipeline em ordem exemplar como um registrador de renomeação exemplar, pipeline de emissão/execução fora de ordem de acordo com modalidades da invenção. A Figura 13B é um diagrama de blocos que ilustra tanto uma modalidade exemplar de um núcleo de arquitetura fora de ordem como um registrador de renomeação exemplar, núcleo de arquitetura de emissão/execução fora de ordem a ser incluído em um processador de acordo com as modalidades da invenção. As caixas de linhas cheias nas Figuras 13A-B ilustram o pipeline em ordem e núcleo em ordem, enquanto a adição opcional de caixas de linhas tracejadas ilustra a renomeação de registrador, pipeline de emissão/execução fora de ordem e núcleo. Tendo em conta que o aspecto em ordem é um subconjunto do aspecto fora de ordem, o aspecto fora de ordem será descrito. [0095] Na Figura 13A, um pipeline 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, uma estágio de renomeação 1310, um estágio de programação (também conhecido como expedição ou emissão) 1311, um estágio de leitura de registrador/leitura de memória 1313, um estágio de execução 1315, um estágio de writeback/gravar memória 1317, um estágio de gerenciamento de exceção 1322 e um estágio de efetivação 1324 . [0096] A Figura 13B mostra um núcleo de processador 1390 incluindo uma unidade front end 1330 acoplada a uma unidade de mecanismo de execução 1350, e ambos são acoplados a uma unidade de memória 1370. O núcleo 1390 pode ser um núcleo de computação de conjunto reduzido de instruções (RISC), um núcleo de computação de conjunto complexo de instruções (CISC), núcleo de palavra de instrução muito longa (VLIW) , ou um tipo de núcleo híbrido ou alternativo. Como outra opção, o núcleo 1390 pode ser um núcleo para propósitos especiais, tais como, por exemplo, um núcleo de rede ou de comunicação, mecanismo de compactação, núcleo de coprocessador, núcleo de unidade de processamento gráfico de computação de uso geral (GPGPU), núcleo gráfico, ou semelhante. [0097] A unidade front end 1330 inclui uma unidade de predição de ramo 13 32 acoplada a uma unidade cache de instruções 1334, que está acoplada a uma instrução de translation lookaside buffer (TLB) 1336, a qual está acoplada 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) poderá decodificar instruções, e gerar como saída 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 outra forma reflitam, ou são obtidas de, as instruções originais. A unidade de decodificação 1340 pode ser implementada utilizando vários mecanismos diferentes. Exemplos de mecanismos adequados incluem, mas não estão limitados a, tabelas de consulta, implementações de hardware, redes lógicas programáveis (PLAs), memórias apenas de leitura (ROM) de microcódigo, etc. Em uma modalidade, o núcleo 1390 inclui uma ROM de microcódigo ou outra mídia que armazena microcódigo para determinadas macroinstruções (por exemplo, na unidade de decodificação 1340 ou de outro modo dentro da unidade de front end 1330) . A unidade de decodif icação 1340 é acoplada a uma unidade renomeadora/alocadora 1352 na unidade de mecanismo de execução 1350. [0098] A unidade de mecanismo de execução 1350 inclui a unidade renomeadora/alocadora 1352 acoplada a uma unidade de retirada 13 54 e um conjunto de uma ou mais unidade(s) programadora(s) 1356. A(s) unidade(s) programadora(s) 1356 representa(m) qualquer número de diferentes programadores, incluindo estações de reserva, janela de instrução central, etc. A(s) unidade(s) programadora(s) 1356 é(são) acoplada(s) à unidade(s) de arquivo de registrador físico 1358. Cada unidade arquivo(s) de registrador físico 1358 representa um ou mais arquivos de registrador físico, dos quais os diferentes armazenam um ou mais tipos de dados diferentes, tal como inteiro escalar, ponto flutuante escalar, inteiro compactado, ponto flutuante compactado, inteiro vetorial, ponto flutuante vetorial, 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 registrador físico 1358 compreende uma unidade de registradores vetoriais, uma unidade de registradores de writemask e uma unidade de registradores escalares. As unidades de registrador podem fornecer registradores arquitetônicos vetoriais, registradores de máscara vetorial e registradores de uso geral. A(s) unidade(s) de registrador fisico 1358 são sobrepostas pela unidade de retirada 1354 para ilustrar várias maneiras em que a renomeação de registrador e execução fora de ordem podem ser implementadas (por exemplo, usando buffer(s) de reordenamento e arquivo(s) de registrador de retirada, usando arquivo(s) futuro, buffer(s) de histórico e arquivo(s) de registrador da retirada, usando mapas de registrador e um conjunto de registradores; etc.). A unidade de retirada 1354 e a(s) unidade(s) de arquivo(s) de registrador físico 1358 são acopladas aos clusters de execução 1360. Os clusters de execução 1360 incluem um conjunto de uma ou mais unidades de execução 13 62 e um conjunto de uma ou mais unidades de acesso à memória 1364. As unidades de execução 1362 podem executar várias operações (por exemplo, deslocamentos, adição, subtração, multiplicação) e em vários tipos de dados (por exemplo, ponto flutuante escalar, inteiro compactado, ponto flutuante compactado, inteiro vetorial, ponto flutuante vetorial). Embora algumas modalidades possam incluir diversas unidades de execução dedicadas funções ou conjuntos de funções específicas, outras modalidades podem incluir apenas uma única unidade de execução ou múltiplas unidades de execução em que todos realizam todas as funções. A(s) unidade(s) programadoras 1356, unidade(s) de arquivo(s) de registrador físico 1358 e clusters de execução 1360 são mostrados como sendo possivelmente plurais devido ao fato de certas modalidades criarem pipelines separados para certos tipos de dados/operações (por exemplo, um pipeline de inteiro escalar, um pipeline de ponto flutuante escalar/inteiro compactado/ponto flutuante compactado/inteiro vetorial/ponto flutuante vetorial, e/ou um pipeline de acesso à memória, em cada um tem sua própria unidade programadora, unidade de arquivo(s) de registrador físico, e/ou cluster de execução - e, no caso de um pipeline de acesso à memória separado, certas modalidades são implementadas nas quais apenas o cluster de execução deste pipeline tem a(s) unidade(s) de acesso à memória 1364). Também deve ser entendido qu.e quando são utilizados pipelines separados, um ou mais desses pipelines podem ser emissão/execução fora de ordem e o restante em ordem. [0099] O conjunto de unidades de acesso à memória 1364 é acoplado à unidade de memória 1370, a qual inclui -uma unidade de dados TLB 13 72 acoplada a uma unidade de cache de dados 13 7 4 acoplada a uma unidade de cache de nível 2 (L2) 1376. Em uma modalidade exemplar, as unidades de acesso à memória 1364 podem incluir uma unidade de carregamento, uma unidade de armazenamento de endereço, e uma unidade de armazenamento de dados, cada uma das quais está acoplada à unidade de dados de TLB 1372 na unidade de memória 1370. A unidade de cache de instruções 1334 está ainda acoplada a uma unidade de cache de nível 2 (L2) 1376 na unidade de memória 1370. A unidade de cache L2 137 6 é acoplada a um ou mais outros níveis de cache e, eventualmente, a uma memória principal. [00100] A título de exemplo, a renomeação de registrador exemplar, arquitetura de núcleo de emissão/execução fora de ordem pode implementar o pipeline 1300 da seguinte forma: 1) a busca de instrução 1338 executa os estágios de busca e 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 renomeadora/alocadora 1352 realiza o estágio de alocação 1308 e estágio de renomeação 1310, 4) unidade(s) de programação 1356 realiza(m) o estágio de programação 1311, 5) unidade(s) de arquivo(s) de registrador físico 1358 e a unidade de memória 1370 realizam o estágio de leitura de registrador/leitura de memória 1313,- o cluster de execução 1360 realiza o estágio de execução 1315; 6) a unidade de memória 1370 e unidade(s) de arquivo(s) de registrador físico 1358 executam o estágio de writeback/gravação de memória 1317; 7) várias unidades podem estar envolvidas no estágio de gerenciamento de exceção 1322 e 8) a unidade de retirada 13 54 e unidade (s) de arquivo (s) de registrador físico 1358 realizam o estágio de efetivação 1324 . [00101] 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 as versões mais recentes), o conjunto de instruções MIPS da MIPS Technologies de Sunnyvale, CA; o conjunto de instruções ARM (com extensões adicionais opcionais, tais como NEON) da ARM Holdings de Sunnyvale, CA), incluindo a(s) instrução(ões) aqui descrita(s). Em uma modalidade, o núcleo 1390 inclui a lógica para suportar uma extensão de conjunto de instruções de dados compactados (por exemplo, AVXl, AVX2), permitindo assim que as operações usadas em muitos aplicativos de multimídia sejam realizadas usando dados empacotados. [00102] Deve ser entendido que o núcleo pode suportar múltiplas threads (execução de dois ou mais conjuntos de operações ou threads paralelos), e pode fazê-lo em uma variedade de formas, incluindo múltiplas threads divididas no tempo (time sliced multithreading) , múltiplas threads simultâneas (em que um único núcleo físico proporciona um núcleo lógico para cada uma das threads que o núcleo físico está simultaneamente em múltiplas threads), ou uma combinação dos mesmos (por exemplo, busca e decodificação dividida no tempo e múltiplas threads simultâneas posteriormente, tal como na tecnologia Intel® Hyperthreading). [00103] Embora a renomeação de registrador seja descrita no contexto de execução fora de ordem, deve ser entendido que a renomeação de registrador pode ser utilizada em uma arquitetura em ordem. Embora a modalidade ilustrada do processador também inclua unidades de cache de instrução e de dados 1334/1374 separadas e uma unidade de cache L2 1376 compartilhada, modalidades alternativas podem ter um único cache interno para ambos instruções e dados, tal como, por exemplo, um cache interno de Nível 1 (Ll) , 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 é exterior ao núcleo e/ou ao processador. Alternativamente, todos os caches podem ser externos ao núcleo e/ou processador.
Arquitetura de Núcleo em Ordem Especifica Exemplar [00104] As Figuras 14A-B ilustram um diagrama de blocos de uma arquitetura de núcleo em ordem exemplar mais específica, o que seria um núcleo de vários blocos lógicos (incluindo outros núcleos do mesmo tipo e/ou tipos diferentes) de um chip. Os blocos lógicos se comunicam através de uma rede de interconexão de alta largura de banda (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 1/0 necessária, dependendo do aplicativo. [00105] A Figura 14A é um diagrama de blocos de um núcleo com único processador, juntamente com a sua conexão à rede de interconexão no chip 14 02 e com o subconjunto local do cache de Nível 2 (L2) 1404, de acordo com 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ções de dados compactados. Um cache Ll 1406 permite acessos de baixa latência ao cache de memória nas unidades escalares e vetoriais. Enquanto em uma modalidade (para simplificar o projeto), uma unidade escalar 1408 e uma unidade vetorial 1410 utilizam conjuntos de registrador separados (respectivamente, registradores escalares 1411 e registradores vetoriais 1413) e os dados transferidos entre eles estão gravados na memória e, em seguida, lidos novamente a partir do cache de nível 1 (Ll) 1406, modalidades alternativas da invenção podem usar uma abordagem diferente (por exemplo, usar um único conjunto de registradores ou incluir um percurso de comunicação que permita que dados sejam transferidos entre os dois arquivos de registrador sem serem gravados e lidos novamente). [00106] O subconjunto local do cache L2 1404 faz parte de um cache L2 global que é dividido em subconjuntos locais separados, um por núcleo de processador. Cada núcleo de processador tem um percurso de acesso direto ao seu próprio subconjunto local do cache L2 1404. Os dados lidos por um núcleo de processador é armazenado em seu subconjunto cache L2 1404 e podem ser acessados rapidamente, em paralelo com outros núcleos de processador acessando seus próprios subconjuntos de cache L2 locais. Os dados gravados por um núcleo de processador são armazenados em seu próprio subconjunto de cache L2 1404 e são liberados (flushed) a partir de outros subgrupos, se necessário. A rede em anel garante a coerência dos dados compartilhados. A rede em anel é bidirecional para permitir que agentes, tais como núcleos de processador, caches L2 e outros blocos lógicos se comuniquem entre si dentro do chip. Cada percurso dos dados em anel é de largura 1011 bits por direção. [00107] A Figura 14b é uma vista expandida da parte do núcleo de processador na Figura 14A de acordo com as modalidades da invenção. A Figura 14B inclui uma parte de cache de dados Ll 1406A do cache Ll 1404, bem como mais detalhes sobre a unidade vetorial 1410 e os registradores vetoriais 1413. Especificamente, a unidade vetorial 1410 é uma unidade de processamento vetorial (VPU) (vide ALU de largura 15 142 8) com largura 15, que executa uma ou mais das instruções de flutuação de precisão simples ou dupla de inteiro. A VPU suporta mistura (swizzling) das entradas de registrador com a unidade de mistura 1419, conversão numérica com unidades de conversão numérica 1422A-B, e replicação com a unidade replicadora 1424 na entrada de memória. Registradores writemask 1426 permitem previsão de gravação vetorial resultante.
Processador com controlador de memória integrada e de gráficos [00108] A Figura 15 é um diagrama de blocos de um processador 1500 que pode ter mais do que um núcleo, pode ter um controlador de memória integrada e pode ter gráficos integrados de acordo com modalidades da invenção. As caixas de linhas cheias 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 controlador de barramento 1515, enquanto que a adição opcional de caixas de linhas tracejadas ilustram um processador alternativo 1500 com múltiplos núcleos 1502A-N, um conjunto de uma ou mais unidades de controlador de memória integrada 1513 na unidade de agente de sistema 1510 e lógica de uso específico 1508. [00109] Assim, diferentes implementações do processador 1500 podem incluir: 1) uma CPU com a lógica finalidade especial 1508 sendo lógica gráfica e/ou científica (rendimento) (que pode incluir um ou mais núcleos), e os núcleos 1502A-N sendo um ou mais núcleos de uso geral (por exemplo, núcleos em ordem de uso geral, núcleos fora de ordem de uso geral, uma combinação dos dois), 2) um coprocessador com os núcleos 1502A-N sendo um número grande de núcleos de uso especial destinados principalmente para gráficos e/ou científico (rendimento), e 3) um coprocessador com os núcleos 1502A-N sendo um grande número de núcleos em ordem de uso geral. Assim, o processador 1500 pode ser um processador de uso geral, coprocessador ou processador de uso especial, tal como, por exemplo, um processador de rede ou de comunicações, mecanismo de compactação, processador gráfico, GPGPU (unidade de processamento gráfico de uso geral), um coprocessador com muitos núcleos integrados (MIC) de alto rendimento (incluindo 30 ou mais núcleos), processador incorporado, ou semelhante. O processador pode ser implementado em um ou mais chips. O processador 1500 pode ser uma parte de, e/ou pode ser implementado em um ou mais substratos usando qualquer de diversas tecnologias de processo, tais como, por exemplo, BiCMOS, CMOS, ou NMOS. [00110] A hierarquia de memória inclui um ou mais níveis de cache dentro dos núcleos, um conjunto ou uma ou mais unidades de cache compartilhado 1506, e memória externa (não mostrada) acoplada ao conjunto de unidades de controlador de memória integrada 1513 . O conjunto de unidades de cache compartilhado 1506 pode incluir um ou mais caches de nível médio, tal como de nível 2 (L2) , nível 3 (L3), o nível 4 (L4), ou outros níveis de cache, um cache de último nível (LLC), e/ou suas combinações. Embora em uma modalidade uma unidade de interconexão baseada em anel 1511 interconecte a lógica gráfica integrada 1508, o conjunto de unidades de cache compartilhado 1506, e a unidade de agente de sistema 1510/unidade(s) controladora(s) de memória integrada 1513, modalidades alternativas podem usar qualquer número de técnicas bem conhecidas para a interconexão de tais unidades. Em uma modalidade, a coerência é mantida entre uma ou mais unidades de cache 1506 e núcleos 1502A-N. [00111] Em algumas modalidades, um ou mais dos núcleos 1502A-N são capazes de múltiplas threads. O agente de sistema 1510 inclui aqueles núcleos de coordenação e operação de componentes 1502A-N. A unidade de agente de sistema 1510 pode incluir, por exemplo, uma unidade de controle de potência (PCU) e uma unidade de exibição. A PCU pode ser ou incluir lógica e os componentes necessários para regular o estado de energia dos núcleos 1502Ά-Ν e a lógica gráfica integrada 1508. A unidade de exibição serve para acionar as uma ou mais telas conectadas externamente. [00112] Os núcleos 1502A-N podem ser homogêneos ou heterogêneos em termos de arquitetura do conjunto de instruções, ou seja, dois ou mais núcleos de 1502A-N podem ser capazes de execução do mesmo conjunto de instruções, enquanto outros podem ser capazes de executar apenas um subconjunto daquele conjunto de instruções ou um conjunto de instruções diferentes.
Arquiteturas de Computador Exemplares [00113] As Figuras 16-19 são diagramas de blocos de arquiteturas de computador exemplares. Outros projetos de sistemas e configurações conhecidos na técnica para laptops, desktops, computadores portáteis, assistentes pessoais digitais, estações de trabalho de engenharia, servidores, dispositivos de rede, hubs de rede, comutadores, processadores embatidos, processadores de sinais digitais (DSPs), dispositivos gráficos, dispositivos de videogame, set-top boxes, microcontroladores, telefones celulares, reprodutores de mídia portáteis, dispositivos portáteis e outros dispositivos eletrônicos, também são adequados. Em geral, uma grande variedade de sistemas ou dispositivos eletrônicos capazes de incorporar um processador e/ou outra lógica de execução, tal como aqui descrita são de modo geral adequados. [00114] Com referência agora à Figura 16, é mostrado um diagrama de blocos de um sistema 1600 de acordo com uma modalidade da presente invenção. O sistema 1600 pode incluir um ou mais processadores 1610, 1614, os quais são acoplados a um hub controlador 1619. Em uma modalidade, o hub controlador 1619 inclui um hub controlador de memória gráfica (GMCH) 1690 e um hub de entrada/saída (IOH) 165 0 (que pode ser em chips separados), o GMCH 1690 inclui controladores de memória e gráficos aos quais estão acoplados a memória 1640 e o coprocessador 1645, o IOH 1650 acopla os dispositivos de entrada/saída (I/O) 1660 ao GMCH 1690. Alternativamente, um ou ambos os controladores de memória e de gráficos são integrados dentro do processador (tal como aqui descrito) , a memória 1640 e o coprocessador 1645 são acoplados diretamente ao processador 1610, e ao hub controlador 1619, em um único chip com o IOH 1650. [00115] A natureza opcional de processadores adicionais 1614 é indicada na Figura 16, com linhas tracejadas. Cada processador 1610, 1614 pode incluir um ou mais núcleos de processamento aqui descritos e pode ser uma versão do processador 1500. [00116] A memória 1640 pode ser, por exemplo, memória de acesso aleatório dinâmica (DRAM), memória de mudança de fase (PCM), ou uma combinação das duas. Para ao menos uma modalidade, o hub controlador 1619 se comunica com o(s) processador(es) 1610, 1614 através de um barramento de transmissão múltipla (multi-drop), tal como um barramento frontal (FSB), a interface ponto a ponto, tal como QuickPath Interconnect (QPI), ou conexão semelhante 1695 . [00117] Em uma modalidade, o coprocessador 1645 é um processador de uso especial, tal como, por exemplo, um processador MIC de alto rendimento, um processador de rede ou de comunicação, mecanismo de compactação, processador gráfico, GPGPU, processador incorporado, ou semelhante. Em uma modalidade, o hub controlador 1619 pode incluir um acelerador gráfico integrado. [00118] Pode haver uma grande variedade de diferenças entre os recursos físicos 1610, 1614 em termos de um espectro de métricas de mérito incluindo arquitetura, microarquitetura, térmica, características de consumo de energia e outros semelhantes. [00119] Em uma modalidade, o processador 1610 executa as instruções que controlam as operações de processamento de dados de um tipo geral. Instruções de coprocessador podem ser incorporadas dentro das instruções. O processador 1610 reconhece estas instruções de coprocessador como sendo de um tipo que deve ser executada pelo coprocessador anexado 1645. Assim, o processador 1610 emite as instruções de coprocessador (ou sinais de controle que representam as instruções do coprocessador) em um barramento de coprocessador ou outra interconexão, para o coprocessador 1645. O(s) coprocessador(es) 1645 aceita(m) e executa(m) as instruções de coprocessador recebidas. [00120] Com referência agora à Figura 17, é mostrado um diagrama de blocos de um primeiro sistema 1700 exemplificativo mais específico de acordo com uma modalidade da presente invenção. Como mostrado na Figura 17, o sistema de multiprocessador 17 00 é um sistema de interconexão ponto a ponto, e inclui um primeiro processador 1770 e um segundo processador 1780 acoplado através de uma interconexão ponto a ponto 1750. Cada um dos processadores 177 0 e 17 80 pode ser alguma versão do processador 1500. Em uma modalidade da invenção, os processadores 1770 e 1780 são, respectivamente, os 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 . [00121] Os processadores 1770 e 1780 são apresentados incluindo unidades de controlador de memória integrada (IMC) 1772 e 1782, respectivamente. O processador 1770 também inclui como parte de suas interfaces ponto a ponto (PP) de unidades de controlador de barramento 1776 e 1778; da mesma forma, o segundo processador 1780 inclui interfaces PP 1786 e 1788. Os processadores 1770, 1780 podem trocar informações através de uma interface ponto a ponto (PP) 1750 usando circuitos de interface PP 1778, 1788. Como mostrado na Figura 17, IMCs 1772 e 1782 acoplam os processadores às respectivas memórias, a saber, uma memória 17 3 2 e uma memória 1734, que podem ser porções da memória principal anexadas localmente aos respectivos processadores. [00122] Os processadores 1770, 1780 podem trocar informações com um chipset 1790 através de interfaces PP individuais 1752, 1754 usando circuitos de interface ponto a ponto 1776, 1794, 1786 e 1798. O chipset 1790 pode, opcionalmente, trocar informações com o coprocessador 1738 através de uma interface de alto desempenho 1739. Em uma modalidade, o coprocessador 1738 é um processador de uso especial, tal como, por exemplo, um processador MIC de alto rendimento, um processador de rede ou de comunicação, mecanismo de compactação, processador de gráficos, GPGPU, processador incorporado, ou semelhante. [00123] Um cache compartilhado (não mostrado) pode ser incluído em qualquer um processador ou fora dos dois processadores, ainda conectado com os processadores através de interconexão PP, de tal modo que as informações de cache local de qualquer um ou de ambos os processadores possam ser armazenadas no cache partilhado se um processador for colocado em um modo de baixa energia. [00124] O chipset 17 90 pode ser acoplado a um primeiro barramento 1715 através de uma interface 1796. Em uma modalidade, o primeiro barramento 1715 pode ser um barramento Peripheral Component Interconnect (PCI), ou um barramento tal como um barramento PCI Express ou outro barramento de interconexão de I/O de terceira geração, embora o escopo da presente invenção não seja assim limitado. [00125] Conforme mostrado na Figura 17, vários dispositivos de I/O 1713 podem ser acoplados ao primeiro barramento 1715, juntamente com uma ponte de barramento 1717 que acopla o primeiro barramento 1715 a um segundo barramento 1719. Em uma modalidade, um ou mais processador(es) adicional(is) 1714, tal como coprocessadores, processadores MIC de alto rendimento, GPGPUs, aceleradores (tais como, por exemplo, aceleradores gráficos ou unidades de processamento de sinais digitais (DSP)), campo portas lógicas programáveis, ou qualquer outro processador, são acoplados ao primeiro barramento 1715. Em uma modalidade, o segundo barramento 1719 pode ser um barramento de baixa contagem de pinos (LPC). Vários dispositivos podem ser acoplados a um segundo barramento 1719, incluindo, por exemplo, um teclado e/ou mouse 1722, dispositivos de comunicação 1727 e uma unidade de armazenamento 1728, tal como uma unidade de disco ou outro dispositivo de armazenamento em massa, que podem incluir as instruções/código e dados 1730, em uma modalidade. Além disso, um 1/0 de áudio 1724 pode ser acoplado ao segundo barramento 1719. Observar que outras arquiteturas são possíveis. Por exemplo, em vez da arquitetura ponto a ponto da Figura 17, um sistema pode implementar um barramento de múltiplas transmissões (multi-drop) ou outra tal arquitetura. [00126] Com referência agora à Figura 18, é mostrado um diagrama de blocos de um segundo sistema 1800 exemplar mais específico de acordo com uma modalidade da presente invenção. Elementos semelhantes nas Figuras 17 e 18 apresentam números de referência semelhantes, e determinados aspectos da Figura 17 foram omitidos da Figura 18, a fim de evitar obscurecer outros aspectos da Figura 18. [00127] A Figura 18 ilustra que os processadores 1770, 1780 podem incluir memória integrada e lógica de controle ("CL") de I/O 1772 e 1782, respectivamente. Assim, a CL 1772, 1782 inclui unidades controladoras de memória integrada e inclui lógica de controle de I/O. A Figura 18 ilustra que não apenas as memórias 1732, 1734 são acopladas ao CL 177 2, 17 82, mas também que os dispositivos de I/O 1813 também são acoplados à lógica de controle 1772, 1782. Dispositivos legados de I/O 1815 são acoplados ao chipset 1790. [00128] Com referência agora à Figura 19, é mostrado um diagrama de blocos de um SoC 1900, de acordo com uma modalidade da presente invenção. Os elementos semelhantes na Figura 15 apresentam os mesmos números de referência. Além disso, caixas de linhas tracejadas são características opcionais em SoCs mais avançados. Na Figura 19, unidade(s) de interconexão 1902 é(são) acoplada(s) a: um processador de aplicativo 1910, que inclui um conjunto de um ou mais núcleos 192A-N e unidade(s) de cache compartilhado 1506, uma unidade de agente de sistema 1510, unidade(s) de controlador de barramento 1515, unidade(s) de controlador de memória integrada 1113, um conjunto ou um ou mais coprocessadores 1919, que podem incluir lógica gráfica integrada, um processador de imagem, um processador de áudio e um processador de vídeo, uma unidade de memória estática de acesso aleatório (SRAM) 1930, uma unidade de acesso direto à memória (DMA) 1932, e uma unidade de exibição 1940 para o acoplamento de uma ou mais telas externas. Em uma modalidade, o coprocessador(s) 1919 inclui(em) um processador de uso especial, tal como, por exemplo, um processador de rede ou de comunicações, mecanismo de compactação, GPGPU, um processador MIC de alto rendimento, processador incorporado, ou semelhante. [00129] As modalidades dos mecanismos aqui descritos podem ser implementadas em hardware, software, firmware, ou uma combinação de tais abordagens de implementação. Modalidades da invenção podem ser implementadas como programas de computador ou de um código de programa executando no sistema programável compreendendo pelo menos um processador, um sistema de armazenamento (incluindo a 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. [00130] Código de programa, tal como o código 1730 ilustrado na Figura 17, pode ser aplicado para introduzir instruções para realizar as funções aqui descritas e gerar informação de saída. A informação de saída pode ser aplicada a um ou mais dispositivos de saída, de uma forma conhecida, Para os fins deste aplicativo, um sistema de processamento inclui qualquer sistema que possui um processador, tal como, por exemplo, um processador de sinais digitais (DSP), -um microcontrolador, circuitos integrados de aplicação específica (ASIC), ou um microprocessador. [00131] O código do programa pode ser implementado em linguagem de programação procedural de alto nível ou orientada a objetos, para se comunicar com um sistema de processamento. O código do programa também pode ser implementado em assembly ou em linguagem de máquina, se desejado. Na verdade, os mecanismos aqui descritos não são limitados em escopo a qualquer linguagem de programação particular. Em qualquer caso, a linguagem pode ser uma linguagem compilada ou interpretada. [00132] Um ou mais aspectos de uma modalidade, pelo menos, podem ser implementados por instruções representativas armazenadas em uma mídia legível por máquina, que representa várias lógicas dentro do processador, que, quando lidas por uma máquina fazem com que a máquina fabrique a lógica para realizar as técnicas aqui descritas. Tais representações, conhecidas como "núcleos IP" podem ser armazenadas em uma mídia legível por máquina tangível e fornecida a vários clientes ou instalações de fabricação para carregar em máquinas de fabricação que realmente fazem a lógica ou processador. [00133] Tais mídias de armazenamento de leitura por máquina podem incluir, sem limitação, arranjos de artigos não transitórios, tangíveis fabricados ou formados por uma máquina ou dispositivo, incluindo a mídia de armazenamento, tal como discos rígidos, qualquer outro tipo de disco, incluindo disquetes, discos ópticos, memórias apenas de leitura de disco compacto (CD-ROM), disco compacto regravável (CD-RWs) e discos magneto-ópticos, dispositivos semicondutores, tais como memórias apenas de leitura (ROM), memórias de acesso aleatório (RAM), tais como memórias dinâmicas de acesso aleatório (DRAM), memórias de acesso aleatório estáticas (SRAM), memórias programáveis apagáveis de leitura (EPROMs), memórias flash, memórias apenas de leitura programáveis eletricamente apagáveis (EEPROM), memória de mudança de fase (PCM), cartões magnéticos ou ópticos, ou qualquer outro tipo de mídia adequada para armazenar instruções eletrônicas. [00134] Assim, modalidades da invenção também incluem mídias não transitórios, tangíveis legíveis por máquina contendo instruções ou contendo os dados do projeto, tal como a linguagem de descrição de hardware (HDL), que define estruturas, circuitos, equipamentos, processadores e/ou recursos do sistema aqui descrito. Tais modalidades também podem ser referidas como produtos de programa.
Emulação (incluindo a tradução binária, código de transformação(morph), etc.) [00135] Em alguns casos, um conversor de instruções pode ser utilizado para converter uma instrução de um conjunto de fonte de instruções para definir um conjunto de instruções alvo. Por exemplo, o conversor de instrução pode traduzir (por exemplo, usando a tradução binária estática, dinâmica de tradução binária incluindo compilação dinâmica) , transformar, emular, ou de qualquer modo converter uma instrução para uma ou mais instruções a serem processadas pelo núcleo. O conversor de instruções pode ser implementado em software, hardware, firmware, ou uma combinação dos mesmos. O conversor de instruções pode estar no processador, fora do processador, ou parte dentro e parte fora do processador. [00136] A Figura 20 é um diagrama de blocos contrastante da utilização de um conversor de instruções de software para converter instruções binárias em um conjunto de instruções fonte para instruções binárias em um conjunto de instruções 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 possa ser implementado em software, firmware, hardware, ou várias combinações destes. A Figura 20 mostra um programa em uma linguagem de alto nível 2002 que pode ser compilado usando um compilador x86 2004 para gerar o código binário x86 2 006 que pode ser executado de forma nativa por um processador com pelo menos um núcleo de conjunto de instruções x86 2015. O processador com pelo menos um núcleo de conjunto de instruções x86 2015 representa qualquer processador que possa executar substancialmente as mesmas funções que um processador Intel com pelo menos um núcleo de conjunto de instruções x86 por compatibilidade executando ou de outra forma processando (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 objetos de aplicativos ou outros softwares direcionados para serem executados 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 objetos) que pode, com ou sem processamento de ligação (linkage) adicional, ser executado no processador com pelo menos um núcleo de conjunto de instruções x86 2015. Da mesma forma, a Figura 2 0 mostra o programa na linguagem de alto nível 2 002 que pode ser compilado usando um compilador de conjunto de instruções alternativo 2008 para gerar o código binário de conjunto de instruções alternativas 2 010 que pode ser nativamente executado por um processador sem pelo menos um núcleo de conjunto de instruções x86 2013 (por exemplo, um processador com núcleos que executam o conjunto de instruções MIPS de MIPS Technologies de Sunnyvale, CA e/ou que executam o conjunto de instruções ARM da ARM Holdings de Sunnyvale, CA). O conversor de instruções 2011 é usado para converter o código binário x86 2006 em um código que possa ser nativamente executado pelo processador sem um núcleo de conjunto de instruções x86 2013. Não é provável que este código convertido seja o mesmo que o código binário do conjunto de instruções alternativas 2010 porque um conversor de instruções capaz disto é difícil de fazer; no entanto, o código convertido realizará a operação geral e será constituído de instruções a partir do conjunto de instruções alternativas. Assim, o conversor de instruções 2011 representa software, firmware, hardware, ou uma combinação destes 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. [00137] Em algumas modalidades, as larguras de máscara de operação de 8 bits, 16 bits, 32 bits e 64 bits, ou alguma combinação dos mesmos, podem ser opcionalmente suportadas. Em algumas modalidades, um conjunto de instruções pode incluir uma instrução de consolidação de máscara de operação diferente para cada largura de máscara de operação diferente suportada. Um opcode da instrução de consolidação de máscara de operação pode indicar implicitamente a largura da máscara de operação. Alternativamente, uma instrução de consolidação de máscara de operação pode ser utilizada para múltiplas larguras de máscara de operação diferentes suportadas. Por exemplo, a instrução de consolidação de máscara de operação pode ter um ou mais bits ou um campo para indicar a largura de máscara de operação a utilizar. [00138] Em algumas modalidades, um opcode da instrução de consolidação de máscara de operação pode indicar que uma operação de consolidação de máscara de operação deve ser executada sem operações de rearranjo de dados específicos que necessitam ser explicitamente especificadas {por exemplo, através de permuta de dados de controle) e sem um conjunto único ou limitado específico de operações de rearranjo de dados sendo exigido. Em resposta a um opcode da instrução, uma máscara de operação consolidada pode ser armazenada independente de algum arranjo específico de elementos mascarados e não mascarados na máscara de operação de fonte. Em algumas modalidades, a instrução não especifica explicitamente como os elementos mascarados e não mascarados devem ser movidos, rearranjados ou permutados para gerar a máscara de operação consolidada. Em algumas modalidades, a instrução de consolidação de máscara de operação moverá os elementos diferentemente dependendo do arranjo dos elementos mascarados e não mascarados, sem especificar explicitamente como os elementos serão movidos ou rearranjados, para gerar a máscara de operação. [00139] Componentes, características e detalhes descritos para quaisquer das Figuras 4A, 4B, 6 e 7-10 também podem ser opcionalmente utilizados em quaisquer das Figuras 1, 3 e 5. Além disso, componentes, características e detalhes descritos aqui para quaisquer dos equipamentos também podem ser opcionalmente utilizados em quaisquer das operações e métodos descritos aqui, que nas modalidades podem ser realizadas por e/ou com tal equipamento. As características e detalhes opcionais das máscaras de operação descritas para as Figuras 2A/2B também podem aplicar-se às máscaras de operação de quaisquer das Figuras 1, 3, 4A, 4B e 5.
MODALIDADES EXEMPLARES [00140] Os seguintes exemplos se referem a modalidades adicionais. Detalhes nos exemplos podem ser utilizados em qualquer lugar em uma ou mais modalidades. [00141] O Exemplo 1 é um equipamento de processamento de instrução. O equipamento de processamento de instrução inclui uma pluralidade de registradores de máscara de operação. O equipamento de processamento de instrução também inclui uma unidade decodificadora para receber uma instrução de consolidação de máscara de operação. A instrução de consolidação de máscara de operação é para indicar um registrador de máscara de operação de fonte, da pluralidade de registradores de máscara de operação, e um local de armazenagem de destino. O registrador de máscara de operação de fonte é para incluir uma máscara de operação de fonte que deve incluir uma pluralidade de elementos mascarados que devem ser dispostos em uma pluralidade de elementos não mascarados. O equipamento de processamento de instrução também inclui uma unidade de execução acoplada à unidade de decodificação. A unidade de execução, em resposta à instrução de consolidação de máscara de operação, deve armazenar uma máscara de operação consolidada no local de armazenagem de destino. A máscara de operação consolidada deve incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada junta. [00142] O Exemplo 2 inclui a matéria do Exemplo 1 e opcionalmente no qual a unidade de execução, em resposta à instrução de consolidação de máscara de operação, deve consolidar juntos os elementos não mascarados de modo que os elementos mascarados não sejam dispostos nos elementos não mascarados consolidados. [00143] O Exemplo 3 inclui a matéria do Exemplo 1 e opcionalmente no qual a unidade de execução, em resposta à instrução de consolidação de máscara de operação, deve consolidar juntos os elementos não mascarados a partir da máscara de operação de fonte em uma porção menos significativa da máscara de operação consolidada. [00144] O Exemplo 4 inclui a matéria do Exemplo 1 e opcionalmente no qual a unidade de execução, em resposta à instrução de consolidação de máscara de operação, deve consolidar juntos os elementos não mascarados a partir da máscara de operação de fonte em uma porção mais significativa da máscara de operação consolidada. [00145] O Exemplo 5 inclui a matéria do Exemplo 1 e opcionalmente no qual a unidade de decodificação deve receber a instrução de consolidação de máscara de operação. A instrução de consolidação de máscara de operação deve incluir um ou mais bits que são operáveis para ter um primeiro valor para indicar que os elementos não mascarados a partir da máscara de operação de fonte devem ser consolidados juntos em uma porção menos significativa da máscara de operação consolidada. A instrução de consolidação de máscara de operação deve ter um segundo valor para indicar que os elementos não mascarados a partir da máscara de operação de fonte devem ser consolidados juntos em uma porção mais significativa da máscara de operação consolidada. [00146] O Exemplo 6 inclui a matéria do Exemplo 1 e opcionalmente no qual o registrador de máscara de operação de fonte deve ter a máscara de operação de fonte na qual cada um dos elementos mascarados e não mascarados apresenta um bit único diferente. [00147] O Exemplo 7 inclui a matéria do Exemplo 6 e opcionalmente no qual cada elemento mascarado deve ter um valor zero binário e cada elemento não mascarado ter um valor de um binário. [00148] O Exemplo 8 inclui a matéria do Exemplo 1 e opcionalmente no qual a pluralidade de registradores de máscara de operação compreende um conjunto de oito registradores de máscara de operação, no qual cada um dos oito registradores de máscara de operação deve armazenar uma máscara de operação que deve ter até pelo menos 64 bits, e no qual a unidade de decodificação deve receber a instrução de consolidação de máscara de operação que deve ter um campo de 3 bits para especificar o registrador de máscara de operação de fonte como um dos oito registradores de máscara de operação. [00149] O Exemplo 9 inclui a matéria do Exemplo 1 no qual a unidade de decodificação deve receber a instrução de consolidação de máscara de operação que deve especificar explicitamente o registrador de máscara de operação de fonte e que deve especificar explicitamente um registrador de máscara de operação de destino como o local de armazenagem de destino. [00150] O Exemplo 10 inclui a matéria de qualquer um dos Exemplos 1-9 no qual a unidade de decodificação deve receber a instrução de consolidação de máscara de operação que deve ter um opcode que é para indicar que a máscara de operação consolidada deve ser armazenada independente de qualquer arranjo especifico dos elementos mascarados e não mascarados na máscara de operação de fonte. [00151] O Exemplo 11 inclui a matéria de qualquer dos Exemplos 1-9 na qual os regis tradores de máscara de operação devem armazenar máscaras de operação que devem ser utilizadas para predicar operações em dados empacotados. [00152] O Exemplo 12 é um método em um processador. O método inclui receber uma instrução de consolidação de máscara de operação. A instrução de consolidação de máscara de operação indica uma máscara de operação de fonte e um local de armazenagem de destino. A máscara de operação de fonte inclui uma pluralidade de elementos mascarados dispostos em uma pluralidade de elementos não mascarados. O método também inclui armazenar uma máscara de operação consolidada no local de armazenagem de destino em resposta à instrução * de consolidação de máscara de operação. A máscara de operação consolidada inclui os elementos não mascarados a partir da máscara de operação de fonte consolidada junta. [00153] O Exemplo 13 inclui a matéria do Exemplo 12 na qual os elementos não mascarados da máscara de operação de fonte são consolidados juntos em uma porção menos significativa da máscara de operação consolidada. [00154] O Exemplo 14 inclui a matéria do Exemplo 12 na qual os elementos não mascarados a partir da máscara de operação de fonte são consolidados juntos em uma porção mais significativa da máscara de operação consolidada. [00155] O Exemplo 15 inclui a matéria do Exemplo 12 na qual a instrução de consolidação de máscara de operação inclui um ou mais bits que devem ter um primeiro valor para indicar que os elementos não mascarados da máscara de operação de fonte devem ser consolidados juntos em uma porção menos significativa da máscara de operação consolidada. Um ou mais bits devem ter um segundo valor para indicar que os elementos não mascarados da máscara de operação de fonte devem ser consolidados juntos em uma porção mais significativa da máscara de operação consolidada. [00156] O Exemplo 16 inclui a matéria do Exemplo 12 na qual o recebimento compreende receber a instrução indicando a máscara de operação de fonte na qual cada um dos elementos mascarados e não mascarados é um único bit diferente, e na qual cada elemento mascarado tem um valor zero binário e cada elemento não mascarado tem um valor binário de um. [00157] O Exemplo 17 inclui a matéria do Exemplo 12 na qual o recebimento compreende receber a instrução de consolidação de máscara de operação tendo um opcode que indica que a máscara de operação consolidada deve ser armazenada independente de qualquer arranjo específico dos elementos mascarados e não mascarados na máscara de operação de fonte. [00158] O Exemplo 18 inclui a matéria do Exemplo 12 na qual cada um dos elementos mascarados e não mascarados corresponde a um elemento de dados empacotados diferente e é utilizado para predicar uma operação no elemento de dados empacotados correspondente. [00159] O Exemplo 19 inclui a matéria do Exemplo 12 compreendendo ainda um compilador utilizando a máscara de operação consolidada para vetorizar código. [00160] O Exemplo 20 é um sistema para processar instruções. O sistema inclui uma interconexão. O sistema também inclui um processador acoplado à interconexão e uma memória de acesso aleatória dinâmica (DRAM) acoplada à interconexão. A DRAM armazena uma instrução de consolidação de máscara de operação. A instrução de consolidação de máscara de operação deve indicar uma máscara de operação de fonte e um local de armazenagem de destino. A máscara de operação de fonte deve incluir uma pluralidade de elementos mascarados que devem ser dispostos em uma pluralidade de elementos não mascarados. A instrução de consolidação de máscara de operação, se executada pelo processador, é operável para fazer com que o processador execute operações incluindo armazenar uma máscara de operação consolidada no local de armazenagem de destino. A máscara de operação consolidada deve incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada junta. [00161] O Exemplo 21 inclui a matéria do Exemplo 20 na qual a máscara de operação de fonte deve ser utilizada para predicar operações em dados empacotados. [00162] O Exemplo 22 inclui a matéria de quaisquer dos Exemplos 20-21, na qual a instrução de consolidação de máscara de operação deve ter um opcode que deve indicar que a máscara de operação consolidada deve ser armazenada para qualquer valor da máscara de operação de fonte. [00163] O Exemplo 23 é um artigo de manufatura. O artigo de manufatura inclui uma mídia de armazenagem legível por máquina não transitório que armazena uma instrução de consolidação de máscara de operação. A instrução de consolidação de máscara de operação deve indicar uma máscara de operação de fonte e um destino. A máscara de operação de fonte deve incluir uma pluralidade de elementos mascarados dispostos em uma pluralidade de elementos não mascarados. A instrução de consolidação de máscara de operação, se executada por uma máquina operável deve fazer com que a máquina execute operações incluindo armazenar uma máscara de operação consolidada no destino em resposta à instrução de consolidação de máscara de operação. A máscara de operação consolidada deve incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada junta sem elementos mascarados dispostos entre os mesmos. [00164] O Exemplo 24 inclui a matéria do Exemplo 23 na qual o recebimento compreende receber a instrução de consolidação de máscara de operação tendo um opcode que indica que a máscara de operação consolidada deve ser armazenada para muitos arranjos diferentes dos elementos mascarados e não mascarados na máscara de operação de fonte. [00165] O Exemplo 25 inclui a matéria de quaisquer dos Exemplos 23-24 na qual a instrução de consolidação de máscara de operação se executada pela máquina é operável para fazer com que a máquina consolide juntos os elementos não mascarados da máscara de operação de fonte em uma porção menos significativa da máscara de operação consolidada, e na qual a máscara de operação de fonte deve ser utilizada para predicação. [00166] O Exemplo 26 inclui uma mídia de armazenagem legível por máquina que armazena instruções que, se executadas por uma máquina devem fazer com que a máquina execute o método de acordo com qualquer uma das reivindicações 12-19. [00167] O Exemplo 27 inclui um equipamento para executar o método de acordo com qualquer uma das reivindicações 12-19. [00168] O Exemplo 28 inclui um equipamento compreendendo mídia para executar o método de acordo com qualquer uma das reivindicações 12-19. [00169] O Exemplo 29 inclui um equipamento para executar um método substancialmente como descrito aqui. [00170] O Exemplo 30 inclui um equipamento compreendendo mídia para executar um método substancialmente como descrito aqui. [00171] O Exemplo 31 inclui um equipamento para executar uma instrução substancialmente como descrito aqui . [00172] O Exemplo 32 inclui um equipamento compreendendo mídia para executar as operações de uma instrução substancialmente como descrito aqui. [00173] Na descrição e reivindicações, os termos: "acoplado" e/ou "conectado", juntamente com os seus derivados, foram usados. Deve ser entendido que estes termos não são destinados a serem sinônimos um do outro. Em vez disso, em modalidades específicas, "conectado" pode ser utilizado para indicar que dois ou mais elementos estão em contato físico direto ou elétrico entre si. "Acoplados" pode significar que dois ou mais elementos estão em contato físico ou elétrico 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 mutuamente. Por exemplo, uma unidade de execução pode ser acoplada a um registrador ou um decodificador através de um ou mais componentes intermediários. Nas figuras, as setas são usadas para mostrar as conexões e acoplamentos. [00174] Na descrição e reivindicações, o termo: "lógica" pode ter sido usado. Tal como aqui utilizado, lógica pode incluir um módulo, tal como hardware, firmware, software, ou várias combinações dos mesmos. Exemplos de lógica incluem conjuntos de circuitos integrados, circuitos integrados de aplicação específica, circuitos analógicos, circuitos digitais, dispositivos de lógica programada, dispositivos de memória, incluindo instruções, etc. Em algumas modalidades, lógica de hardware pode incluir transistores e/ou portas, potencialmente, juntamente com outros componentes de circuito. [00175] Na descrição acima, numerosos detalhes específicos foram estabelecidos de modo a proporcionar um entendimento completo das modalidades. Entretanto, outras modalidades podem ser praticadas sem alguns destes detalhes específicos. O escopo da invenção não deve ser determinado pelos exemplos específicos providos acima, mas apenas pelas reivindicações abaixo. Em outros casos, circuitos, estruturas, dispositivos, e operações, bem conhecidos, foram mostrados na forma de diagrama de blocos ou sem detalhe, a fim de evitar obscurecer a compreensão da descrição. Onde múltiplos componentes foram mostrados e descritos, em alguns casos estes múltiplos componentes podem ser incorporador em um componente. Onde um único componentes foi mostrado e descrito, em alguns casos este único componentes pode ser separado em dois ou mais componentes. [00176] Várias operações e métodos foram descritos. Alguns dos métodos foram descritos de uma forma relativamente básica nos fluxogramas, mas as operações podem, opcionalmente, ser adicionadas e/ou removidas a partir dos métodos. Além disso, embora os fluxogramas mostrem uma determinada ordem específica das operações de acordo com modalidades exemplares, a ordem específica é exemplar. Modalidades alternativas podem, opcionalmente, realizar as operações de forma diferente, combinar algumas operações, sobrepor determinadas operações, etc. [00177] Certas operações podem ser executadas por componentes de hardware, ou podem ser incorporadas em instruções executáveis por máquina ou executáveis por circuito, que podem ser utilizadas para fazer com que 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 executando as operações. As operações também podem ser opcionalmente executadas por uma combinação de hardware e software. Um processador, máquina, circuito ou hardware pode 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. [00178] Algumas modalidades incluem um produto industrial (por exemplo, um produto de programa de computador), que inclui uma mídia legível por máquina. A mídia pode incluir um mecanismo que fornece, por exemplo, armazenar informação em uma forma que possa ser lida pela máquina. A mídia de leitura óptica pode fornecer, ou ter armazenado nela, 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 execute e/ou resultam na máquina realizando uma ou mais operações, métodos, ou técnicas aqui descritas. A mídia legível por máquina pode prover, por exemplo, armazenar, uma ou mais modalidades das instruções aqui descritas. [00179] Em algumas modalidades, a mídia legível por computador poderá incluir uma mídia de armazenamento legível por máquina tangível e/ou não transitória. Por exemplo, a mídia de armazenamento legível por máquina tangível e/ou não transitória pode incluir um disquete, uma mídia de armazenamento óptica, um disco óptico, um dispositivo de armazenamento óptico de dados, um CD-ROM, um disco magnético, um disco magneto-óptico, uma memória apenas de leitura (ROM), uma ROM programável (PROM), uma ROM apagável e programável (EPROM) , uma ROM eletricamente apagável e programável (EEPROM), uma memória de acesso aleatório (RAM), uma RAM estática (SRAM), uma RAM dinâmica (DRAM), memória flash, uma memória de mudança de fase, um material de armazenamento de dados de mudança 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órios, ou semelhantes. A mídia de armazenamento legível por máquina não transitório não consiste em um sinal propagado transitório. Em outra modalidade, a mídia legível por máquina pode incluir uma mídia de comunicação de leitura por máquina de transição, por exemplo, as formas elétricas, ópticas, acústicas ou outros sinais propagados, tais como ondas portadoras, sinais infravermelhos, sinais digitais, ou semelhantes. [00180] Exemplos de máquinas adequadas incluem, mas não estão limitadas a, processadores de uso geral, processadores de uso especial, um equipamento de processamento de instruções, circuitos de lógica digital, circuitos integrados, e semelhantes. Ainda outros exemplos de máquinas adequadas incluem dispositivos de computação e outros dispositivos eletrônicos que incorporam esses processadores, equipamento de processamento de instruções, circuitos lógicos digitais, ou circuitos integrados. Exemplos de tais dispositivos de computação e dispositivos eletrônicos incluem, mas não estão limitados a, computadores desktop, computadores laptop, notebooks, tablets, netbooks, smartphones, telefones celulares, servidores, dispositivos de rede (por exemplo, roteadores e comutadores), dispositivos móveis de Internet (MIDs), reprodutores de mídia, televisores inteligentes, nettops, set-top boxes e controladores de videogame. [00181] Referência ao longo deste Relatório a "certa modalidade", "uma modalidade", "uma ou mais modalidades", por exemplo, indica que uma característica particular pode ser incluída na prática da invenção, mas não ser necessariamente requerida. Da mesma forma, na descrição várias características são muitas vezes agrupadas em conjunto em uma única modalidade, figura, ou a descrição das mesmas com o objetivo de simplificar a descrição e ajudar na compreensão dos vários aspectos da invenção. Este método de descrição, no entanto, não deve ser interpretado como refletindo uma intenção de que a invenção requeira mais características do que estão expressamente citadas em cada reivindicação. Em vez disso, como as seguintes reivindicações refletem, aspectos inventivos encontram-se em menos do que todas as características de uma única modalidade descrita. Assim, as reivindicações após a Descrição Detalhada são aqui expressamente incorporadas nessa Descrição Detalhada, com cada reivindicação independente como uma modalidade separada da invenção.

Claims (24)

1. Equipamento de processamento de instruções caracterizado por compreender: uma pluralidade de registradores de máscara de operação; uma unidade de decodificação para receber uma instrução de consolidação de máscara de operação, a instrução de consolidação de máscara de operação para indicar um registrador de máscara de operação de fonte, da pluralidade de registradores de máscara de operação, e um local de armazenagem de destino, o registrador de máscara de operação de fonte para incluir uma máscara de operação de fonte que deve incluir uma pluralidade de elementos mascarados que devem ser dispostos em uma pluralidade de elementos não mascarados; e uma unidade de execução acoplada à unidade de decodificação, a unidade de execução, em resposta à instrução de consolidação de máscara de operação, a armazenar uma máscara de operação consolidada no local de armazenagem de destino, a máscara de operação consolidada a incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada juntos.
2. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de execução, em resposta à instrução de consolidação de máscara de operação, é para consolidar juntos os elementos não mascarados de modo que os elementos mascarados não sejam dispostos nos elementos não mascarados consolidados.
3. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de execução, em resposta à instrução de consolidação de máscara de operação, é para consolidar juntos os elementos não mascarados a partir da máscara de operação de fonte em uma porção menos significativa da máscara de operação consolidada.
4. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de execução, em resposta à instrução de consolidação de máscara de operação, é para consolidar juntos os elementos não mascarados a partir da máscara de operação de fonte em uma porção mais significativa da máscara de operação consolidada.
5. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de decodificação é para receber a instrução de consolidação de máscara de operação que é para incluir um ou mais bits que são operáveis para ter: um primeiro valor para indicar que os elementos não mascarados a partir da máscara de operação de fonte devem ser consolidados juntos em uma porção menos significativa da máscara de operação consolidada,-e um segundo valor para indicar que os elementos não mascarados a partir da máscara de operação de fonte devem ser consolidados juntos em uma porção mais significativa da máscara de operação consolidada.
6. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que o registrador de máscara de operação de fonte deve ter a máscara de operação de fonte na qual cada um dos elementos mascarados e não mascarados é um único bit diferente.
7. Equipamento, de acordo com a reivindicação 6, caracterizado pelo fato de que cada elemento mascarado deve ter um valor zero binário e cada elemento não mascarado tem um valor binário de um.
8. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a pluralidade de registradores de máscara de operação compreende um conjunto de oito registradores de máscara de operação, em que cada um dos oito registradores de máscara de operação deve armazenar uma máscara de operação que deve ter até pelo menos 64 bits, e em que a unidade de decodificação deve receber a instrução de consolidação de máscara de operação que deve ter um campo de 3 bits para especificar o registrador de máscara de operação de fonte como um dos oito registradores de máscara de operação.
9. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de decodificação deve receber a instrução de consolidação de máscara de operação que deve especificar explicitamente o registrador de máscara de operação de fonte e que deve especificar explicitamente um registrador de máscara de operação de destino como o local de armazenagem de destino.
10. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a unidade de decodificação deve receber a instrução de consolidação de máscara de operação que deve ter um código de operação que é para indicar que a máscara de operação consolidada deve ser armazenada independente de qualquer arranjo específico dos elementos mascarados e não mascarados na máscara de operação de fonte.
11. Equipamento, de acordo com a reivindicação 1, caracterizado pelo fato de que os registradores de máscara de operação devem armazenar máscaras de operação que devem ser utilizadas para predicar operações em dados empacotados.
12. Método dentro de um processador, caracterizado por compreender: receber uma instrução de consolidação de máscara de operação, a instrução de consolidação de máscara de operação indicando uma máscara de operação de fonte e um local de armazenagem de destino, a máscara de operação de fonte incluindo uma pluralidade de elementos mascarados dispostos em uma pluralidade de elementos não mascarados; e armazenar uma máscara de operação consolidada no local de armazenagem de destino em resposta à instrução de consolidação de máscara de operação, a máscara de operação consolidada inclui os elementos não mascarados a partir da máscara de operação de fonte consolidada junta.
13. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que os elementos não mascarados da máscara de operação de fonte são consolidados juntos em uma porção menos significativa da máscara de operação consolidada.
14. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que os elementos não mascarados a partir da máscara de operação de fonte são consolidados juntos em uma porção mais significativa da máscara de operação consolidada.
15. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que a instrução de consolidação de máscara de operação compreende um ou mais bits que devem ter: um primeiro valor para indicar que os elementos não mascarados da máscara de operação de fonte devem ser consolidados juntos em uma porção menos significativa da máscara de operação consolidada; e um segundo valor para indicar que os elementos não mascarados da máscara de operação de fonte devem ser consolidados juntos em uma porção mais significativa da máscara de operação consolidada.
16. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que o recebimento compreende receber a instrução indicando a máscara de operação de fonte na qual cada um dos elementos mascarados e não mascarados é um único bit diferente, e em que cada elemento mascarado apresenta um valor zero binário e cada elemento não mascarado apresenta um valor binário de um.
17. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que o recebimento compreende receber a instrução de consolidação de máscara de operação tendo um código de operação que indica que a máscara de operação consolidada deve ser armazenada independente de qualquer arranjo específico dos elementos mascarados e não mascarados na máscara de operação de fonte.
18. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que cada um dos elementos mascarados e não mascarados corresponde a um elemento de dados empacotados diferente e é utilizado para predicar uma operação no elemento de dados empacotados correspondente.
19. Método, de acordo com a reivindicação 12, caracterizado pelo fato de que compreende adicionalmente usar a máscara de operação consolidade para vetorizar o código.
20. Sistema para processar instruções caracterizado por compreender: uma interconexão,- um processador acoplado à interconexão; e uma memória de acesso aleatório dinâmica (DRAM) acoplada à interconexão, a DRAM armazenando uma instrução de consolidação de máscara de operação, a instrução de consolidação de máscara de operação deve indicar uma máscara de operação de fonte e um local de armazenagem de destino, a máscara de operação de fonte deve incluir uma pluralidade de elementos mascarados que devem ser dispostos em uma pluralidade de elementos não mascarados, a instrução de consolidação de máscara de operação, se executada pelo processador, é operável para fazer com que o processador execute operações compreendendo: armazenar uma máscara de operação consolidada no local de armazenagem de destino, a máscara de operação consolidada deve incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada juntos.
21. Sistema, de acordo com a reivindicação 20, caracterizado pelo fato de que a máscara de operação de fonte deve ser utilizada para predicar operações em dados empacotados.
22. Sistema, de acordo com a reivindicação 20, caracterizado pelo fato de que a instrução de consolidação de máscara de operação deve ter um código de operação que deve indicar que a máscara de operação consolidada deve ser armazenada para qualquer valor da máscara de operação de fonte.
23. Artigo de manufatura caracterizado por compreender: uma mídia de armazenagem legível em máquina não transitório que armazena uma instrução de consolidação de máscara de operação, a instrução de consolidação de máscara de operação deve indicar uma máscara de operação de fonte e um destino, a máscara de operação de fonte deve incluir uma pluralidade de elementos mascarados dispostos em uma pluralidade de elementos não mascarados, e a instrução de consolidação de máscara de operação se executada por uma máquina operável para fazer com que a máquina execute operações compreendendo: armazenar uma máscara de operação consolidada no destino em resposta à instrução de consolidação de máscara de operação, a máscara de operação consolidada deve incluir os elementos não mascarados a partir da máscara de operação de fonte consolidada juntos, sem elementos mascarados dispostos entre os mesmos.
24. Artigo, de acordo com a reivindicação 23, caracterizado pelo fato de que o recebimento compreende receber a instrução de consolidação de máscara de operação tendo um código de operação que indica que a máscara de operação consolidada deve ser armazenada para muitos arranjos diferentes dos elementos mascarados e não mascarados na máscara de operação de fonte.
BR102014006231A 2013-03-15 2014-03-17 equipamento de processamento de instruções, método dentro de um processador, sistema para processar instruções e artigo de manufatura BR102014006231A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/842,730 US9411593B2 (en) 2013-03-15 2013-03-15 Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks

Publications (1)

Publication Number Publication Date
BR102014006231A2 true BR102014006231A2 (pt) 2015-11-03

Family

ID=50634868

Family Applications (1)

Application Number Title Priority Date Filing Date
BR102014006231A BR102014006231A2 (pt) 2013-03-15 2014-03-17 equipamento de processamento de instruções, método dentro de um processador, sistema para processar instruções e artigo de manufatura

Country Status (7)

Country Link
US (1) US9411593B2 (pt)
JP (1) JP5918287B2 (pt)
KR (1) KR101679111B1 (pt)
CN (1) CN104049953B (pt)
BR (1) BR102014006231A2 (pt)
DE (1) DE102014003661A1 (pt)
GB (2) GB2515147B (pt)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9354877B2 (en) * 2011-12-23 2016-05-31 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
US9606961B2 (en) 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US10133570B2 (en) 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated
EP3001307B1 (en) * 2014-09-25 2019-11-13 Intel Corporation Bit shuffle processors, methods, systems, and instructions
EP3001306A1 (en) * 2014-09-25 2016-03-30 Intel Corporation Bit group interleave processors, methods, systems, and instructions
US9772850B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Morton coordinate adjustment processors, methods, systems, and instructions
US9772849B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Four-dimensional morton coordinate conversion processors, methods, systems, and instructions
US20160188333A1 (en) * 2014-12-27 2016-06-30 Intel Coporation Method and apparatus for compressing a mask value
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US9977677B2 (en) 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port
JP6790646B2 (ja) * 2016-09-21 2020-11-25 日本電気株式会社 コンパイル装置、コンパイル方法、および、コンパイルプログラム
US10891131B2 (en) * 2016-09-22 2021-01-12 Intel Corporation Processors, methods, systems, and instructions to consolidate data elements and generate index updates
CN106951962B (zh) * 2017-03-22 2020-09-01 南京地平线机器人技术有限公司 用于神经网络的复合运算单元、方法和电子设备
EP3428792B1 (en) * 2017-07-10 2022-05-04 Arm Ltd Testing bit values inside vector elements
US10901745B2 (en) 2018-07-10 2021-01-26 International Business Machines Corporation Method and apparatus for processing storage instructions
US11789734B2 (en) * 2018-08-30 2023-10-17 Advanced Micro Devices, Inc. Padded vectorization with compile time known masks
CN112380806B (zh) * 2020-12-05 2022-06-17 浙江大学 一种高效多比特寄存器聚类合并方法
KR102370851B1 (ko) * 2021-08-18 2022-03-07 주식회사 로그프레소 벡터 연산 명령어를 통해 문자열을 고속으로 추출하는 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59165147A (ja) 1983-03-11 1984-09-18 Fujitsu Ltd コンパイラにおける条件文のベクトル命令化方式
JPS6072071A (ja) 1983-09-28 1985-04-24 Nec Corp ベクトル処理装置
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US6697427B1 (en) * 1998-11-03 2004-02-24 Pts Corporation Methods and apparatus for improved motion estimation for video encoding
TW482980B (en) 1999-05-31 2002-04-11 Ibm Hardware device for executing base programmable instructions based upon micro-instructions
US6735690B1 (en) * 1999-06-21 2004-05-11 Pts Corporation Specifying different type generalized event and action pair in a processor
US20030105945A1 (en) 2001-11-01 2003-06-05 Bops, Inc. Methods and apparatus for a bit rake instruction
US7003450B2 (en) * 2000-10-20 2006-02-21 Pts Corporation Methods and apparatus for efficient vocoder implementations
GB2411978B (en) 2004-03-10 2007-04-04 Advanced Risc Mach Ltd Inserting bits within a data word
JP2009086870A (ja) 2007-09-28 2009-04-23 Nec Computertechno Ltd ベクトル処理装置
US8209525B2 (en) 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
US8996845B2 (en) * 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US20120254588A1 (en) 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask
US9354877B2 (en) 2011-12-23 2016-05-31 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression

Also Published As

Publication number Publication date
GB201404692D0 (en) 2014-04-30
GB201512362D0 (en) 2015-08-19
US20140281396A1 (en) 2014-09-18
GB2515147B (en) 2015-09-23
US9411593B2 (en) 2016-08-09
JP5918287B2 (ja) 2016-05-18
GB2527944A (en) 2016-01-06
KR101679111B1 (ko) 2016-11-23
KR20140113580A (ko) 2014-09-24
CN104049953B (zh) 2017-11-03
GB2515147A (en) 2014-12-17
DE102014003661A1 (de) 2014-09-18
CN104049953A (zh) 2014-09-17
GB2527944B (en) 2016-06-08
JP2014182802A (ja) 2014-09-29

Similar Documents

Publication Publication Date Title
BR102014006231A2 (pt) equipamento de processamento de instruções, método dentro de um processador, sistema para processar instruções e artigo de manufatura
US10372449B2 (en) Packed data operation mask concatenation processors, methods, systems, and instructions
EP3588281B1 (en) Apparatus and method for a tensor permutation engine
TWI512531B (zh) 用以處理blake安全雜湊演算法的方法、設備、系統及製品
US20200183688A1 (en) Packed data operation mask shift processors, methods, systems, and instructions
CN107918546B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
EP2798458B1 (en) Packed data operation mask comparison processors, methods, systems, and instructions
WO2018034681A1 (en) Apparatuses, methods, and systems for access synchronization in a shared memory
US9760371B2 (en) Packed data operation mask register arithmetic combination processors, methods, systems, and instructions
US20130326192A1 (en) Broadcast operation on mask register
WO2014209687A1 (en) Packed data element predication processors, methods, systems, and instructions
WO2014051733A2 (en) Vector move instruction controlled by read and write masks
KR101729424B1 (ko) 128-비트 프로세서에서의 skein256 sha3 알고리즘에 대한 명령어 세트
WO2013095613A2 (en) Apparatus and method of mask permute instructions
JP6664105B2 (ja) メモリにおけるデータにアクセスするための方法、システム、およびコンピュータ・プログラム
BR102014006118A2 (pt) sistemas, equipamentos e métodos para determinar um bit de mascaramento menos significativo à direita de um registrador writemask
EP3394725B1 (en) Adjoining data element pairwise swap processors, methods, systems, and instructions
WO2013095605A1 (en) Apparatus and method for sliding window data gather
US20200401412A1 (en) Hardware support for dual-memory atomic operations
US20200210186A1 (en) Apparatus and method for non-spatial store and scatter instructions

Legal Events

Date Code Title Description
B03A Publication of an application: publication of a patent application or of a certificate of addition of invention
B08F Application fees: dismissal - article 86 of industrial property law
B08K Lapse as no evidence of payment of the annual fee has been furnished to inpi (acc. art. 87)