BRPI1005259A2 - vetores simd sincronizadores - Google Patents

vetores simd sincronizadores Download PDF

Info

Publication number
BRPI1005259A2
BRPI1005259A2 BRPI1005259-3A BRPI1005259A BRPI1005259A2 BR PI1005259 A2 BRPI1005259 A2 BR PI1005259A2 BR PI1005259 A BRPI1005259 A BR PI1005259A BR PI1005259 A2 BRPI1005259 A2 BR PI1005259A2
Authority
BR
Brazil
Prior art keywords
data elements
storage location
data
elements
mask
Prior art date
Application number
BRPI1005259-3A
Other languages
English (en)
Inventor
Ravi Rajwar
Andrew T Forsyth
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 BRPI1005259A2 publication Critical patent/BRPI1005259A2/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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

VETORES SIMD SINCRONIZADORES. A presente invenção refere-se a uma operação de comparar trocar de vetor por meio da: decodificação por um decodificador em um dispositivo de processamento de uma única instrução que especifica uma operação de comparar-trocar de vetor para uma pluralidade de elementos de dados entre uma primeira localização de armazenamento, uma segunda localização de armazenamento, e uma terceira localização de armazenamento; emissão da única instrução para execução por uma unidade de execução no dispositivo de processamento; e, responsiva à execução da única instrução, comparando elementos de dados da primeira localização de armazenamento com os elementos de. dados correspondentes na segunda localização de armazenamento; e, responsiva à determinação de que existe uma associação, substituindo elementos de dados da primeira localização de armazenamento pelos elementos de dados correspondentes da terceira localização de armazenamento.

Description

Relatório Descritivo da Patente de Invenção para "VETORES SIMD SINCRONIZADORES".
A presente invenção refere-se a microprocessadores e a outros dispositivos de processamento e, mais particularmente, à sincronização de vetores SIMD.
Múltiplos "threads" e/ou unidades de processamento (adiante re- feridas como agentes), por exemplo, em sistemas que incorporam processa- dores "multi-thread", múltiplos dispositivos de processamento, e/ou proces- sadores de múltiplos núcleos, podem muitas vezes precisar compartilhar recursos e dados armazenados dentro do sistema. Deve-se ter cuidado para assegurar que um agente acesse os dados mais recentes e atualizados e também para assegurar que um agente não acesse e modifique os dados correntemente associados com outro agente. Além de complicar este com- partilhamento de dados e recursos, os dispositivos de processamento mais modernos incluem uma ou mais memórias "cache" dedicadas. Dentro de sistemas de múltiplos processadores e de múltiplos núcleos, os múltiplos caches em chip irão freqüentemente e, na prática, geralmente conter múlti- plas cópias de um item de dados. Consequentemente, quando um agente acessar uma cópia de um item de dados, será assegurado que um valor de dados atualizado ou válido será lido.
Desse modo, a "coerência de cache" é mantida nestes sistemas. A coerência de cache refere-se à sincronização de dados gravados e lidos na memória cache, de tal modo que qualquer item de dados armazenado em um cache que seja acessado por um thread ou processador seja a cópia mais recente desse item de dados. Além disso, qualquer valor de dados gra- vado do cache novamente na memória principal devem ser os dados mais correntes.
Um método de manter a coerência de cache e de assegurar que, quando um agente precisar de um item de dados, o valor mais atualizado para que o item de dados seja acessado é para implementar um semáforo (por exemplo, uma bandeira ou um bloqueio). Um bloqueio, por exemplo, compreende um processo que é executado em resposta a uma solicitação para um item de dados específico da memória por um agente (por exemplo, em uma operação de carga) para assegurar a sincronização entre os pro- cessadores e/ou os threads. De modo geral, um bloqueio está associado com um conjunto de instruções, incluindo a instrução de ler/carregar, uma instrução para modificar o item de dados, e uma instrução de gra- var/armazenar. O bloqueio, também referido aqui como "seqüência de blo- queios" ou "operação de bloqueio", pode, por exemplo, incluir a aquisição de propriedade de uma localização de memória que armazena dados, a execu- ção de uma operação atômica nos dados enquanto impede que outros pro- cessos operem nesses dados, e a liberação de propriedade da localização de memória depois que a operação atômica é executada. Uma operação atômica é aquela que é executada seqüencialmente e de maneira ininterrup- ta e, além disso, que é garantida para ser completada ou não completada absolutamente (isto é, a operação é indivisível). DESCRIÇÃO DOS DESENHOS
A figura 1 mostra um diagrama de bloco de um sistema de com- putação.
A figura 2 é um diagrama esquemático de um dispositivo de pro- cessamento, conforme mostrado na figura 1. A figura 3 mostra um esquema de codificação de uma instrução
de comparação e troca de vetor de única instrução múltipla de dados (SIMD).
A figura 4 é um diagrama de bloco de um primeiro sistema de computador exemplificativo para implementar o formato de instrução mos- trado na figura 3.
A figura 5 é um diagrama de bloco de um segundo sistema de computador exemplificativo para implementar o formato de instrução mos- trado na figura 3.
A figura 6 é um diagrama de bloco de um terceiro sistema de computador exemplificativo para implementar o formato de instrução mos- trado na figura 3.
A figura 7 é um diagrama de bloco de um quarto sistema de computador exemplificativo para implementar o formato de instrução mos- trado na figura 3.
Outras características e vantagens se tornarão evidentes a partir da descrição e dos desenhos, e a partir das reivindicações.
DESCRIÇÃO DETALHADA
Na seguinte descrição, inúmeros detalhes específicos são expli- cados, tais como instruções específicas, formatos de instrução, dispositivos, tais como registros e memória, etc., a fim de prover um completo entendi- mento dos exemplos providos na mesma. No entanto, será apreciado por aquele versado na técnica que a presente invenção pode ser praticada sem estes detalhes específicos.
Uma maneira de determinar se um semáforo está bloqueado (e/ou para assim fazê-lo) é através do uso de uma seqüência (ou operação) de ler-modificar-gravar. Contudo, uma preocupação com uma implementa- ção de ler-modificar-gravar é a aquisição e a liberação do próprio mecanis- mo de semáforo. Isto é, quando um processo tentar ter controle do espaço de memória compartilhado, ele primeiro irá ler o valor de bloqueio, verificar e modificar (caso permitido) o valor e gravar o valor de modificação novamente no bloqueio. Em geral, é desejável executar a operação de ler-modificar- gravar como uma operação atômica (isto é, completada sem interrupção, uma vez que a execução tenha começado) para impedir que outros proces- sos modifiquem o valor de bloqueio. Com o uso de uma operação atômica, um processo pode adquirir (ler) o semáforo, modificar o valor (caso permiti- do) e liberar o semáforo iniciando uma gravação para completar a operação antes que outro processo tente adquirir o bloqueio.
Com referência agora à figura 1, o sistema de computador 10 é mostrado apresentando uma pluralidade de unidades de processamento 11 (por exemplo, processadores, núcleos, unidades de execução, etc.) acopla- das a uma memória 12 (por exemplo, registros, cache, RAM. etc.) por uma barra 13. Uma ou mais das unidades de processamento 11 são associadas com uma ou mais threads. Consequentemente, o sistema de computador 10 inclui qualquer número adequado de unidades de processamento 11, cada qual apresentando qualquer número adequado de threads. Unidades de pro- cessamento 11 podem, cada qual, fazer parte de um dispositivo de circuito integrado separado ou, alternativamente, todas as unidades de processa- mento 11 (ou uma porção das mesmas) podem ser formadas em uma única matriz. Neste sistema de computador específico, quatro unidades de proces- samento 11 (indicadas como P1, P2, P3 e P4) são mostradas como parte do sistema 10. Todas as quatro unidades de processamento 11 são acopladas à memória 12 e especificamente a um espaço de memória compartilhado 15 dentro da memória 12. É apreciado que a memória 12 pode ser configurada em uma va-
riedade de maneiras. Embora ilustrada como uma memória única, a memó- ria 12 pode compreender múltiplas memórias internas e/ou externas. No e- xemplo específico, todas as quatro unidades de processamento 11 acessam a memória 12, e uma porção da memória 12, indicada como espaço compar- tilhado 15, é acessada por mais de uma unidade de processamento 11. É pos- sível que possa haver outras áreas compartilhadas dentro da memória 12, nas quais duas ou mais unidades de processamento 11 podem acessar tais áreas compartilhadas. As áreas não compartilhadas da memória 12 são geralmente relegadas ao acesso por uma unidade de processamento 11 apenas. O sistema de computador 10, ilustrado na figura 1, se destina a
ser um sistema de computador exemplificativo e pode incluir muitos compo- nentes adicionais, que foram omitidos para fins de clareza. Por meio de e- xemplo, o sistema de computador 10 pode incluir um controlador DMA (a- cesso de memória direto), uma interface de rede (por exemplo, um cartão de rede), um conjunto de circuitos integrados associado com uma ou mais uni- dades de processamento 11, bem como linhas e barras de sinal adicionais. Também deve ser entendido que o sistema de computador 10 pode incluir todos os componentes mostrados na figura 1.
Na figura 1, os semáforos empregados são bloqueios (ou variá- veis de bloqueios) 16 que são atribuídos para controlar os acessos a um ou mais respectivos espaços compartilhados 15 (conforme mostrado pela linha pontilhada 14). O bloqueio 16 é uma localização específica em memória que é atribuído para conter um valor associado com a obtenção de acesso ao espaço compartilhado 15. Desse modo, a fim de que uma das unidades de processamento 11 acesse o espaço compartilhado 15, ela primeiro acessa o bloqueio correspondente 16 e testa o estado (valor) dos dados armazenados na localização de bloqueio 16. No formato mais simples, dois valores podem ser atribuídos ao bloqueio 16. Um primeiro valor indicando que o espaço compartilhado está disponível para acesso e um segundo valor indicando que o espaço compartilhado está atualmente sendo utilizado e, portanto, não está disponível para acesso. Novamente, na concretização mais simples, estados de bit 1 e O podem ser usados para os estados travado e destrava- do para o bloqueio 16.
É apreciado que os valores de bloqueio e os estados de blo- queio eficazes para o bloqueio 16 são uma escolha de desenho e muitas variações podendo ser idealizadas. Também, a localização do bloqueio 16 não precisa estar dentro da própria memória 12. Adicionalmente, em refe- rência à figura 1, é apreciado que a memória 12 pode ser um de uma varie- dade de dispositivos de memória. Também é possível que uma ou mais uni- dades de processamento 11 possam ser substituídas por um dispositivo(s) de acesso de memória, (dispositivos, tais como controladores de acesso de memória direto), que também acessa(m) a memória. Nestes exemplos, estes dispositivos funcionariam similarmente às unidades de processamento 11 descritas aqui para obter acesso ao espaço compartilhado 15. Finalmente, embora apenas uma única barra 13 seja mostrada, pode haver uma plurali- dade de barras no mesmo ou em diferentes níveis hierárquicos, tal como a barra 13 para acoplar os vários dispositivos.
O acesso da memória 12 pelas unidades de processamento 11 para a transferência de dados tipicamente envolve o uso de operações de carga e armazenamento. A operação de carga transfere o conteúdo de me- mória de uma localização na memória acessada e a operação de armaze- namento transfere os dados para uma localização de memória acessada. Desse modo, operações de carregar/armazenar são usadas para acessar a memória 12 e o bloqueio 16 para transferência de dados entre unidades de processamento 11 e a memória 12. Os acessos de carga e armazenamento são também referidos como acessos de leitura e gravação, respectivamente.
Com referência às figuras 1 e 2, o sistema de computador 10 in- clui uma memória de leitura apenas (ROM) 31 e uma memória principal 18 acopladas - através da barra de sistema 22 — com as unidades de proces- samento 11, a memória principal 18 compreendendo, por exemplo, qualquer tipo adequado de memória de acesso aleatório (RAM). Unidades de proces- samento 11 também apresentam um dispositivo de armazenamento de da- dos 30 acoplado com as mesmas pela barra de sistema 22. O dispositivo de armazenamento de dados 30 compreende qualquer memória não volátil a- dequada, tal como, por exemplo, uma unidade de disco rígido. O sistema de computador 10 adicionalmente inclui um meio de armazenamento removível 32, tal como uma unidade de disco flexível, uma unidade de CR ROM, e/ou uma unidade USB.
Na figura 2, a unidade de processamento 11 inclui inúmeros
componentes que são interconectados por uma ou mais barras, e estas bar- ras são ilustradas simbolicamente na figura 2 por uma barra local 19. A barra local 19, e, consequentemente, os componentes da unidade de processa- mento 11, são acoplados com uma unidade de interface de barra 23. A uni- dade de interface de barra 23 acopla a unidade de processamento 11 com a barra de sistema 22, permitindo assim a comunicação entre a unidade de processamento 11 e a memória principal 18, bem como entre a unidade de processamento 11 e um cache externo 20.
A unidade de processamento 11 inclui um decodificador de ins- trução 21 acoplado com a barra local 19. O decodificador 21 recebe uma instrução (ou instruções) associada com um programa ou pedaço de código que executa na unidade de processamento 11 e rompe a instrução em uma ou mais operações/instruções de nível de máquina (uops). Deve ser enten- dido que a unidade de processamento 11 pode receber uma ou mais instru- ções associadas com um programa, ao passo que outra unidade de proces- samento 11 do sistema de computador 10 pode receber uma ou mais instru- ções associadas com o mesmo programa. Consequentemente, um progra- ma pode ser executado em múltiplas unidades de processamento 11.
A unidade de processamento 11 adicionalmente inclui múltiplas unidades de execução, incluindo, por exemplo, unidade de controle de aces- so de dados (DAC) 24, buffer de ordenação de memória (MOB) 26, uma uni- dade de arquivo de registro 29, e uma unidade funcional 27.
A unidade de arquivo de registro 29 inclui uma pluralidade de re- gistros, cada qual apresentando 16, 32, 64, 128, 256, 512 bits de armaze- namento. Além disso, o arquivo de registro 29 pode incluir um ou mais arqui- vos de registro, cada qual apresentando um ou mais registros. A unidade funcional 27 compreende uma ou mais unidades funcionais, tais como, por exemplo, uma unidade aritmética, lógica e/ou de ponto flutuante. O MOB 26 assegura a ordenação adequada de instruções de carregar e armazenar e, adicionalmente, provê as seqüências adequadas destas transações dentro da hierarquia de memória (isto é, vários níveis de memória dentro do siste- ma de computador 10, incluindo o cache LO 25,o cache L1 28, o cache ex- terno 20, a memória principal 18, e o dispositivo de armazenamento de da- dos 30). Cada cache, o cache LO 25 e o cache L1 28, pode armazenar da- dos recentemente acessados, ou a serem acessados, pela unidade funcional 27. Se um item de dados solicitado pela unidade funcional 27 estiver em uma das memórias cache 25, 28, um "acerto" de cache terá ocorrido; entre- tanto, se os dados solicitados não estiverem presentes no cache, então um "erro" de cache terá ocorrido. Uma ou mais das memórias cache (por exem- plo, o cache LO 25) podem ser acopladas com o DAC 24. O DAC 24 controla todas as transações que resultaram em um erro de cache, bem como outras transações que exigem um controle especial. Um bloqueio, conforme descri- to acima, é um tipo de transação que exige controle especial pelo DAC 24 e por outros componentes da unidade de processamento 11. Se uma uop cor- responder, por exemplo, a uma operação aritmética, essa uop será despa- chada para a unidade funcional 27, que executa então a operação aritméti- ca. Se uma uop corresponder a uma instrução de referência de memória, por exemplo, uma carga ou um armazenamento, essa uop será despachada pa- ra o MOB 26. Deve ser entendido que a unidade de processamento 11 ilustra- da na figura 2 se destina a representar um dispositivo de processamento exemplificativo e que, adicionalmente, tal unidade de processamento pode incluir muitos componentes adicionais que não são mostrados nestas figu- ras. Estes componentes foram omitidos para facilidade de entendimento. Por exemplo, a unidade de processamento 11 pode incluir uma unidade de gera- ção de endereço, uma estação de reserva, um buffer de reordenação, um escalonamento, uma unidade de segmentação e translação de endereço, um buffer de tradução de endereços, uma rotina de tratamento de erro de página, e/ou circuitos de relógio internos. Também, embora ilustrados como elementos distintos, deve ser entendido que muitos dos componentes mos- trados na figura 2 podem ser circuitos combinados e/ou compartilhados. Mais importante, as concretizações descritas aqui não são limitadas a qual- quer arquitetura ou disposição específica - bem como não são limitadas a qualquer terminologia específica usada para descrever tal arquitetura ou dis- posição - e as concretizações descritas podem ser praticadas em qualquer tipo de dispositivo de processamento, independente de sua arquitetura ou da terminologia imputada a ela.
Qualquer uma ou mais das uops programadas para execução podem compreender uma uop travada. O bloqueio, conforme notado acima, corresponde a uma seqüência de operações (por exemplo, carregar, modifi- car, e armazenar) que são executadas em uma maneira que assegure a sin- cronização entre os processadores e/ou os threads.
A figura 3 mostra uma instrução para executar uma operação de ler-modificar-gravar. A instrução 40 é uma instrução atômica única incluindo cinco operandos 41-45. O operando de código de operação 41 identifica que esta é uma instrução VCMPXCHG. Os operandos 42-44 correspondem aos operandos de fonte e destino associados com SRC1/DEST, SRC2, SRC3 e, em algumas implementações, a uma localização de armazenamento de máscara (MSK) e/ou a um operando de desvio (ou "imediato") 45. Este ope- rando deslocado ou imediato é usado para prover um deslocamento de um endereço de base (tal como SRC1), quando do endereçamento da memória 12. As instruções notadas abaixo podem ter tais deslocamentos, mas não são ilustradas. Implementações que especificam uma localização de arma- zenamento de máscara 45 se referem a uma localização de memória ou re- gistro que armazena elementos de máscara correspondendo aos respectivos elementos de dados armazenados na localização de armazenamento refe- renciada pelo operando SRC1/DEST.
Em resposta à instrução 40, a unidade de processamento 11 lê primeiros dados de fonte, os compara a outros dados de fonte e, se a com- paração satisfizer uma condição pré-indicada (tal como uma condição ver- dadeira ou de associação), algum valor modificado será gravado em uma localização, que pode ser a localização original dos primeiros dados de fon- te. Se a condição pré-indicada não for satisfeita, os dados originais na locali- zação não serão mudados. A instrução utiliza três operandos de fonte (tais como SRC1, SRC2 e SRC3, conforme usado adiante) e um operando de destino (tal como DEST, conforme usado adiante) para suprir a localização das várias informações usadas na execução da instrução. Os registros es- pecíficos de operação podem ser usados para prover um ou mais dos dados de fonte e/ou para armazenar os dados de destino, quando a instrução for executada, eliminando a necessidade de especificar os operandos explicita- mente no atual formato de instrução. Além disso, neste exemplo, o operando SRC1 e o operando DEST refere-se à mesma localização de armazenamen- to (SRC1/DEST).
Antes da execução da instrução 40, SRC1, SRC2 e SRC3 são carregados em registros na unidade de arquivo de registro 29. Por exemplo, para atualizar com segurança um valor armazenado em uma localização especificada pelo operando SRC1/DEST, o valor é inicialmente lido em uma localização especificada pelo operando SRC2, e um valor de substituição é lido em uma localização especificada pelo operando SRC3. Depois, uma operação de comparar-trocar atômica é executada para comparar o valor presente associado com o operando SRC1/DEST ao valor associado com o operando SRC2 (isto é, o valor presente pode ser diferente do valor inicial- mente copiado devido à modificação por outro agente). Se o valor não tiver mudado, ele será substituído pelo valor associado com o operando SCR3, e a bandeira zero será ajustada para indicar uma atualização de sucesso. En- tretanto, se outro agente tiver modificado o valor entre a cópia inicial e a ope- ração de comparar-trocar, o valor corrente não será substituído e a bandeira zero ficará livre para indicar uma atualização de falha.
O diagrama de bloco da figura 4 ilustra o fluxo de informação, quando da execução da instrução 40. A unidade de processamento 11 inclui uma unidade de execução 46 (por exemplo, DAC 24 da figura 2), arquivo de registro 29, BIU 23, e decodificador 21, que são todos acoplados entre si pela barra local 19. O arquivo de registro 29 inclui uma pluralidade de regis- tros que são acessados pela unidade de execução 46 para executar as vá- rias operações. Conforme notado na figura 4, a instrução VCMPXCHG 40 é mostrada dentro da unidade de execução 46 e linhas pontilhadas são mos- tradas a partir dos operandos da instrução para os registros correspondentes associados com SRC1, SRC2, SRC3 e DEST. Os registros estão dentro do arquivo de registro 29. O decodificador 21 é usado para decodificar as várias instruções (incluindo a instrução VCMPXCHG 40), a fim de que a unidade de execução 46 execute as operações.
A memória 12, anteriormente descrita nas figuras 1 e 2, é mos- trada acoplada à BIU 23 pela barra 19 e/ou barra 22. Consequentemente, as transferências de dados entre a unidade de processamento 11 e a memória 12 podem ocorrer através da BIU 54a ou barra local 19. Deve ser apreciado que a rotina do programa que utiliza a instrução VCMPXCHG 40 pode estar dentro de alguma memória, que poderia também ser ou incluir a memória 12. O pseudocódigo seguinte ilustra exemplos de como opera a ins-
trução VCMPXCHG 40. Outros pseudocódigos, linguagens, operações, or- dens de operações, e/ou números podem ser usados.
VCMPXCHG (versão codificada VCMPXCHG (versão codificada- VEX.128) VEX.256) IF (DEST[127:0] == SRC2[127:0]) IF (DEST[255:0] == SRC2[255:0]) THEN THEN DEST[127:0]«- SRC3[127:0] DEST[255:0] <- SRC3[255:0] ZF*- 1 ZFv- 1 ELSE ELSE SRC2[127:0] <- DEST[127:0] SRC2[255:0] <- DEST[255:0] ZF<— 0 ZF<— 0 Fl Fl SRC2[511:128] 0 SRC2[511: 256] 0
Nos exemplos específicos VEX.128 e VEX.256 notados acima,
os valores de bloqueio são armazenados em bits [127:0] e bits [255:0], res- pectivamente, de uma localização de armazenamento de 512 bits referenci- ada por SRC1/DEST (por exemplo, um registro ou linha de cache de 64 by- tes). Em uma concretização, é provida uma correspondência de um para um entre os valores de bloqueio referenciados por SCR1/DEST e as localiza- ções de armazenamento compartilhadas 15 às quais eles correspondem. Por exemplo, SCR1/DEST pode fazer referência a dezesseis valores de blo- queio de 8 bits (128 bits), cada qual correspondendo a uma das dezesseis localizações de armazenamento em um registro SIMD ou linha de cache. Alternativamente, SRC1/DEST pode fazer referência a trinta e dois valores de bloqueio de 8 bits (256 bits), cada qual correspondendo a uma respectiva das trinta e duas localizações de armazenamento em um registro SIMD ou linha de cache.
Com referência novamente aos exemplos acima, o resultado da
comparação entre SRC1/DEST e SRC2 indica se os valores de trava foram modificados. Uma condição verdadeira indica que os bloqueios não foram modificados e que os bloqueios estão no estado destravado. Quando esta condição for atendida, os valores referenciados por SRC3 serão gravados em SRC1/DEST, modificando os valores de bloqueio para um estado trava- do, a fim de impedir que outros agentes tenham acesso ao(s) espaço(s) compartilhado(s). Em seguida, a bandeira zero (ZF) é ajustada para indicar uma operação de sucesso.
Uma falsa condição indica que um ou mais dos bloqueios foram modificados (travados) e que outro agente obteve a propriedade do espaço compartilhado. Quando a condição for falsa, os valores referenciados por SRC1/DEST (os valores de bloqueio correntes) serão armazenados em S- RC2, e a bandeira zero será liberada para indicar uma operação mal sucedi- da. Os bytes superiores de SRC2 são então liberados antes de retornar da operação.
Tipicamente, se o acesso for primeiramente recusado, o agente de interrogação continuará a tentar novamente o acesso até que este seja adquirido. Em algumas implementações, um laço externo irá incluir uma car- ga não atômica e teste antes para reexecutar a instrução VCMPXCHG 40. Uma vez que o processador complete seu(s) acesso(s) ao espaço de memó- ria compartilhado 15, ele irá tipicamente liberar seu controle sobre o espaço de memória compartilhado 15 com um ciclo de gravação para que o bloqueio 16 seja destravado, de modo que outros agentes possam agora conseguir a entrada no espaço de memória compartilhado 15. Contudo, é apreciado que a maneira como o processador libera o espaço de memória compartilhado é uma escolha de desenho, que poderia ser ditada pela arquitetura do siste- ma.
Em algumas implementações, a instrução VCMPXCHG 40 inclui
um vetor de máscara apresentando múltiplos elementos de máscara, cada qual correspondendo a um de uma pluralidade de elementos de dados refe- renciados por SRC1/DEST. A localização de armazenamento de vetor de máscara pode ser um registro em uma unidade de arquivo de registro 29, tal como, por exemplo, um registro de sombra, um registro de controle, um re- gistro de bandeira, um registro de uso geral, um registro SIMD, ou outro re- gistro apropriado. Em uma concretização, há uma correspondência de um para um entre os elementos de dados referenciados por SRC1/DEST e ele- mentos de máscara correspondentes armazenados em um registro de más- cara. Os elementos ou valores de máscara podem incluir bandeiras, marca- dores, fabuladores, indicadores e/ou outros números, bits e/ou códigos para indicar se um elemento de dados correspondente (por exemplo, em uma localização de registro correspondente ou indicada) é comparado e/ou modi- ficado. Por exemplo, um elemento de máscara apresentando um valor de "1" pode indicar que um elemento de dados correspondente é modificado; de outro modo, "0" pode ser usado. Outros números ou bandeiras podem ser usados. Exemplos de instruções VCMPXCHGD e VCMPXCHGQ masca- radas são ilustrados no pseudocódigo abaixo para um vetor de largura 16 e de 512 bytes e um vetor de largura 8 e 512 bytes, respectivamente. Nas im- plementações de comparação mascaradas, apenas os elementos ativos são comparados e atualizados._
VCMPXCHGD (versão codificada VCMPXCHGQ (versão codificada EVEX.512) EVEX.512) ALL_CMPS_SUCCEED<—1 ALL_CMPS_SUCCEED<—1 KO TO 15 FOR j<-0 TO 7 i<—j*32 i<—j*64 IF k1[j] OR *no writemask* IF k1[j] OR *no writemask* THEN THEN IF(DEST[i+31 :i]!=SRC2[i+31 :i]) IF(DEST[i+63:i]!=SRC2[i+63:i]) THEN THEN ALL_CMPS_SUCCEED<—O ALL_CMPS_SUCCEED<—O Fl Fl ENDFOR ENDFOR IF(ALL_CMPS_SUCCEED == 1) IF(ALL_CMPS_SUCCEED == 1) THEN THEN ZF<—1 ZF+-1 FOR O TO 15 FOR j<—O TO 7 iH*32 i<—j*64 IF k1 □] OR *no writemask* IF k1 [j] OR *no writemask* THEN DEST[i+31:i] THEN DEST[i+63:i] SRC3[i+31 :i] SRC3[i+63:i] Fl Fl ENDFOR ENDFOR ELSE THEN ZF<—O ZF<—O FORKO TO 15 FOR j^-0 TO 7 i<—j*32 i<—j*64 IF k1[j] OR *no writemask* IF k1[j] OR *no writemask* THEN SRC2[i+31:i] THEN SRC2[i+63:i] <—DEST[i+31:i] <—DEST[i+63:i] Fl Fl ENDFOR ENDFOR Fl Fl
Nos exemplos VCMPXCHGD e VCMPXCHGQ específicos nota-
dos acima, uma variável ALLCMPSSUCCEED, é primeiro pré-ajustada em 1 (isto é, uma condição verdadeira). Uma vez ajustada, para cada elemento de máscara ativo (por exemplo, um elemento de máscara apresentando um valor específico armazenado no mesmo, incluindo, por exemplo, um binário 1 ou valores hexadecimais 0x01, OxFF, ou 0x80), a localização de armaze- namento correspondente referenciada por SRC1/DEST é comparada ao va- lor referenciado pelos bits correspondentes em SRC2. Se nenhuma máscara for usada, cada das localizações de armazenamento referenciadas pelo SRC1/DEST será comparada ao valor referenciado pelos bits corresponden- tes em SRC2.
Novamente, o resultado da comparação entre os valores corres- pondentes de SRC1/DEST e SRC2 indica se esse valor de trava específico foi modificado. Entretanto, nestes exemplos, uma condição verdadeira (isto, é, uma condição de não associação) indica que o bloqueio foi modificado e que outro agente obteve a propriedade da localização de armazenamento compartilhada. Quando esta condição for atendida para qualquer das locali- zações de armazenamento referenciadas, ALL CMPS SUCCEED será libe- rada, indicando que todas as comparações não tiveram sucesso. Depois disso, a bandeira zero é liberada e, para cada elemento de máscara ativo, o valor armazenado na localização de armazenamento correspondente refe- rencia por SRC1/DEST é carregado nos bits correspondentes em SRC2.
Quando o resultado da comparação for falso (isto é, para cada dos elementos de máscara ativos, um valor correspondente referenciado por SRC1/DEST associada a um valor correspondente em SRC2), ALL_CMPS_SUCCEED permanecerá ajustado sem mudança. Depois disso, a bandeira zero (ZF) é ajustada e, para cada elemento de máscara ativo, o valor armazenado na localização de armazenamento correspondente em SRC3 é carregado em bits correspondentes em SRC1/DEST, modificando os valores de bloqueio para um estado travado, a fim de impedir que outros agentes obtenham acesso aos espaços compartilhados.
O diagrama de bloco da figura 5 ilustra outro exemplo do fluxo de informação, quando da execução da instrução 40. Conforme notado na figura 5, a instrução VCMPXCHG 40 é mostrada dentro da unidade de exe- cução 46 e linhas pontilhas são mostradas a partir dos operandos da instru- ção para os registros correspondentes associados com SRC2, SRC3 e MSK. Neste exemplo, a localização de armazenamento de máscara (MSK) é um registro de máscara e a localização de armazenamento associada com S- RC1/DEST é um cache L1. Os registros estão dentro da unidade de arquivo de registro 29.
Antes da execução da instrução 40, SRC1 é pré-buscado no ca- che L1 e os SRC2, SRC3 e os dados MSK são carregados nos registros na unidade de arquivo de registro 29. O registro de máscara armazena uma pluralidade de elementos de máscara correspondendo aos respectivos ele- mentos de dados na localização de armazenamento associada com o ope- rando SRC1/DEST. Além disso, um valor de comparação é inicialmente lido em uma localização especificada pelo operando SRC2, e um valor de substi- tuição é lido em uma localização especifica pelo operando SRC3. Depois, a instrução 40 é executada para fazer com que a unidade de execução 46 compare os elementos de dados correspondentes com SRC1/DEST e os operandos SRC2, e, se existir uma associação, para substituir os elementos de dados de SRC1/DEST pelos elementos de dados correspondentes de SRC3. Se não existir uma associação, a execução da instrução 40 fará com que a unidade de execução 46 substitua os elementos de dados SRC2 pelos elementos de dados SRC1/DEST correspondentes.
Em algumas implementações, a comparação entre os pares de SRC1/DEST e os elementos de dados SRC2 será apenas executada, se um elemento de máscara correspondente estiver ativo. Em certas implementa- ções, a unidade de execução 46 será adicionalmente configurada para ajus- tar uma bandeira, se houver uma associação entre cada par de elementos de dados correspondentes para os quais um elemento de máscara corres- pondente está ativo e para liberar a bandeira, se uma associação não existir entre qualquer dos pares para os quais está ativo um elemento de máscara correspondente. Além disso, em algumas implementações, a substituição dos elementos de dados SRC1/DEST pelos elementos de dados SRC3 cor- respondente é apenas executada se um elemento de máscara correspon- dendo ao respectivo elemento de dados SRC1/DEST estiver ativo. Além dis- so, em algumas implementações, a substituição dos elementos de SRC2 por um elemento de dados SRC1/DEST correspondente é apenas executada se um elemento de máscara correspondendo ao elemento de dados S- RC1/DEST estiver ativo. Em algumas concretizações, o valor de bloqueio indicando uma
condição travada é igual ao valor de máscara que indica um elemento de máscara ativo (por exemplo, um 1 binário). Em tais casos, SRC3 pode ser usado tanto como um vetor de máscara como um vetor de substituição de valor de bloqueio.
Em algumas implementações, a operação de comparar-trocar
completa a execução sem atualizar o valor associado com o operando S- RC2. Depois disso, uma bandeira (por exemplo, a bandeira zero) é testada e, caso indique uma operação de atualização com falha com relação ao va- lor associado com o operando SRC1/DEST, as etapas bem antes da opera- ção de comparar-trocar serão repetidas para atualizar os valores associados com SRC2 e SRC3 antes de repetir a operação de comparar-trocar.
Uma ou mais concretizações incluem um artigo de fabricação que inclui um meio tangível acessível à máquina e/ou legível à máquina a- presentando no mesmo uma instrução SIMD que especifica uma operação de comparar-trocar de vetor para uma pluralidade de elementos de dados, cada elemento de dados apresentando um elemento de teste corresponden- te, um elemento de substituição e um elemento de máscara, que, caso exe- cutado por uma máquina (por exemplo, uma unidade de execução), faz com que a máquina compare os elementos de dados com os elementos de teste correspondentes, se os respectivos elementos de máscara estiverem ativos; e responsiva à determinação de que todas as comparações indicam uma associação, ajusta uma bandeira e substitui os elementos de dados compa- rados pelos elementos de substituição correspondentes; e, responsiva à de- terminação de que todas as comparações não indicam uma associação, libe- ra uma bandeira e substitui elementos de teste comparados com elementos de dados correspondentes. O meio tangível pode incluir um ou mais materi- ais sólidos. O meio pode incluir um mecanismo que apresenta, por exemplo, armazenamentos, informação em uma forma que é acessível pela máquina. Por exemplo, o meio pode opcionalmente incluir meios graváveis, tais como, por exemplo, disquete flexível, meio de armazenamento óptico, disco óptico, CR-ROM, disco magnético, disco magneto-óptico, memória de leitura ape- nas (ROM), ROM programável (PROM), ROM apagável e programável (E- PROM), ROM eletricamente apagável e programável (EEPROM), memória de acesso aleatória (RAM), RAM estática (SRAM), RAM dinâmica (DRAM), memória "flash", e combinações dos mesmos.
Máquinas adequadas incluem, mas não são limitadas a unida- des de execução, processadores de uso geral, processadores de uso espe- cial (por exemplo, processadores gráficos e processadores criptográficos), aceleradores criptográficos, processadores de comunicações de rede, sis- tema de computador, dispositivos de rede, modems, assistentes digitais pessoas (PDAs), telefones celulares, e uma ampla variedade de outros dis- positivos eletrônicos com uma ou mais unidades de execução, apenas para citar alguns. Ainda, outras concretizações se referem a um sistema de com- putador, sistema embutido, ou a outro dispositivo eletrônico apresentando uma unidade de execução e/ou executando um método, conforme descrito aqui.
A figura 6 ilustra um exemplo de um sistema de computador a-
dequado 50 que inclui um processador 51. O processador inclui pelo menos uma unidade de execução 52 que é capaz de executar pelo menos uma ins- trução de comparação e troca de vetor 53.
O processador é acoplado a um conjunto de circuitos integrados 54 através de uma barra (por exemplo, uma barra lateral frontal) ou outra interconexão 55. A interconexão pode ser usada para transmitir sinais de dados entre o processador e outros componentes no sistema através do conjunto de circuitos integrados.
O conjunto de circuitos integrados inclui um chip lógico de siste- ma conhecido como um cubo controlador de memória (CH) 56. O MCH é acoplado à barra lateral dianteira ou a outra interconexão 55. Uma memória 58 é acoplada ao MCH. Em várias concretiza-
ções, a memória pode incluir uma memória de acesso aleatório (RAM). DRAM é um exemplo de um tipo de RAM usado em alguns, mas não em todos os sistemas de computador. Conforme mostrado, a memória pode ser usada para armazenar instruções 59, tais como uma ou mais instruções de multiplicação, e dados 60.
Uma interconexão de componentes 61 é também acoplada com o MCH. Em uma ou mais concretizações, a interconexão de componentes pode incluir uma ou mais interfaces expressas de interconexão de compo- nentes periféricas (PCIe). A interconexão de componentes pode permitir que outros componentes sejam acoplados ao resto do sistema através do con- junto de circuitos integrados. Um exemplo de tais componentes é um chip gráfico ou outro dispositivo gráfico, embora este seja opcional e não exigido.
O conjunto de circuitos integrados também inclui um cubo con- trolador de entrada/saída (l/O) (ICH) 62. O ICH é acoplado ao MCH através da barra de interface de cubo ou outra interconexão 63. Em uma ou mais concretizações, a barra ou outra interconexão 63 pode incluir uma Interface de Mídia Direta (DMI).
Um armazenamento de dados 64 é acoplado ao ICH. Em várias concretizações, o armazenamento de dados pode incluir uma unidade de disco rígido, uma unidade de disco flexível, um dispositivo de CD-ROM, um dispositivo de memória flash, ou semelhante, ou uma combinação dos mes- mos. Uma segunda interconexão de componentes 65 também é aco- plada com o ICH. Em uma ou mais concretizações, a segunda interconexão de componentes pode incluir uma ou mais interfaces expressas de interco- nexão de componentes periférica (PCIe). A segunda interconexão de com- ponentes pode permitir que vários tipos de componentes sejam acoplados ao resto do sistema através do conjunto de circuitos integrados.
Uma porta de expansão serial 66 também é acoplada com o I- CH. Em uma ou mais concretizações, a porta de expansão serial pode incluir uma ou mais portas de barra serial universal (USB). A porta de expansão serial pode permitir que vários outros tipos de dispositivos de entrada/saída sejam acoplados ao resto do sistema através do conjunto de circuitos inte- grados.
Alguns exemplos ilustrativos de outros componentes que podem opcionalmente ser acoplados com o ICH incluem, mas não são limitados a um controlador de áudio, um transceptor sem fio, e um dispositivo de entra- da de usuário (por exemplo, um teclado, um mouse).
Um controlador de rede 67 é também acoplado ao ICH. O con- trolador de rede pode permitir que o sistema seja acoplado com uma rede.
Em uma ou mais concretizações, o sistema de computador pode executar uma versão do sistema de operação WINDOWS®, disponível pela Microsoft Corporation of Redmond, Washington. Alternativamente, podem ser usados outros sistemas de operação, tais como, por exemplo, UNIX, Li- nux. ou sistemas embutidos.
Este é apenas um exemplo específico de um sistema de compu- tador adequado. Por exemplo, em uma ou mais concretizações alternativas, o processador pode ter múltiplos núcleos. Como outro exemplo, em uma ou mais concretizações alternativas, o MCH 56 pode ser fisicamente integrado na matriz com o processador 51 e o processador pode ser diretamente aco- plado com uma memória 58 através do MCH integrado. Como um exemplo adicional, em uma ou mais concretizações alternadas, outros componentes podem ser integrados na matriz com o processador, tal como para prover um desenho de sistema em chip (SoC). Ainda como outro exemplo, em uma ou mais concretizações alternativas, o sistema de computador pode ter múlti- plos processadores.
A figura 7 é outro exemplo de um sistema de computador ade- quado 70. A segunda concretização exemplificativa apresenta certas simila- ridades ao sistema de computador 50 descrito acima. Para fins de clareza, a discussão tenderá a enfatizar as diferenças sem repetir todas as similarida- des.
Similar ao sistema de computador 50, o sistema de computador 70 inclui um processador 71, e um conjunto de circuitos integrados 74 apre- sentando um cubo controlador l/O (ICH) 72. O sistema de computador 70 também inclui uma primeira interconexão de componentes 81 acoplada com o conjunto de circuitos integrados 74, uma segunda interconexão de compo- nentes 85 acoplada com o ICH, uma porta de expansão serial 86 acoplada com o ICH, um controlador de rede 87 acoplado com o ICH, e um armaze- namento de dados 84 acoplado com o ICH.
O processador 71 é um processador de múltiplos núcleos e in- clui núcleos processadores 72-1 a 72-M, onde M pode ser um número inteiro igual ou maior do que dois (por exemplo, dois, quatro, sete ou mais). Cada núcleo pode incluir pelo menos uma unidade de execução que é capaz de executar pelo menos uma concretização de uma instrução, conforme descri- to aqui. Conforme mostrado, o núcleo 1 inclui um cache 88 (por exemplo, um cache L1). Cada dos outros núcleos pode similarmente incluir um cache de- dicado. Os núcleos de processador podem ser implementados em um único chip de circuito integrado (IC). O processador também inclui pelo menos um cache comparti-
lhado 89. O cache compartilhado pode armazenar dados (por exemplo, ins- truções) que são utilizados por um ou mais componentes do processador, tais como núcleos. Por exemplo, o cache compartilhado pode localmente colocar em cache os dados armazenados em uma memória 78 para um a- cesso mais rápido pelos componentes do processador. Em uma ou mais concretizações, o cache armazenado pode incluir um ou mais caches de nível médio, tais como o nível 2(L2), o nível 3(L3), o nível 4(L4) ou outros níveis de cache, um cache de último nível (LLC), e/ou combinações dos mesmos.
Os núcleos de processador e o cache compartilhado são cada qual acoplados com uma barra ou outra interconexão 90. A barra ou outra interconexão pode acoplar os núcleos e o cache compartilhado e permitir a comunicação.
O processador também inclui um cubo controlador de memória (MCH) 76. Conforme mostrado nesta concretização exemplificativa, o MCH é integrado com o processador 71. Por exemplo, o MCH pode ser em matriz com os núcleos de processador. O processador é acoplado com a memória 78 através do MCH. Em uma ou mais concretizações, a memória pode inclu- ir DRAM, embora isto não seja exigido.
O conjunto de circuitos integrados inclui um cubo de entra- da/saída (l/O) 91. O cubo l/O é acoplado com o processador através de uma barra (por exemplo, uma Interconexão QuickPath (QPI)) ou outra intercone- xão 75. A primeira interconexão de componentes 81 é acoplada com o cubo 1/0 91.
Este é apenas um exemplo de um sistema adequado. Outros desenhos de sistema e configurações conhecidos na técnica para laptops, desktops, PCs de mão, assistentes digitais pessoais, estações de trabalho de engenharia, servidores, dispositivos de rede, cubos de rede, comutado- res, processadores embutidos, processadores de sinal digital (DSPs), dispo- sitivos gráficos, dispositivos de vídeo game, conversores (set-top boxes), microcontroladores, telefones celulares, reprodutores de mídia portátil, dis- positivos de mão, e vários outros dispositivos eletrônicos também são ade- quados. Em geral, uma enorme variedade de sistemas ou dispositivos ele- trônicos capazes de incorporar um processador e/ou uma unidade de execução, conforme descrito aqui, é geralmente adequada.
Na descrição acima, para fins de explanação, inúmeros detalhes específicos foram explicados a fim de prover um completo entendimento das concretizações da invenção. Ficará evidente, contudo, àquele versado na técnica, que uma ou mais outras concretizações podem ser praticadas sem alguns destes detalhes específicos. As concretizações específicas descritas não são providas para limitar a invenção, mas para ilustrar as concretizações da invenção. O escopo da invenção não deve ser determinado pelos exem- plos específicos providos acima, mas apenas pelas reivindicações abaixo.
Em outros exemplos, circuitos, estruturas, dispositivos e operações bem co- nhecidos foram mostrados na forma de diagrama de bloco ou sem detalhes a fim de impedir que o entendimento da descrição seja obscurecido. Quando considerados apropriados, numerais de referência ou porções de terminal de numerais de referência foram repetidas entre as figuras para indicar elemen- tos correspondentes ou análogos, que podem opcionalmente ter característi- cas similares.
Certas operações podem ser executadas por componentes de hardware, ou podem ser concretizadas em instruções executáveis por má- quina, que podem ser usadas para produzir, ou pelo menos resultar em um circuito ou hardware programado com as instruções que executam as opera- ções. O circuito pode incluir um processador de uso geral ou de uso especi- al, ou circuito lógico, apenas para citar alguns. As operações podem ser op- cionalmente também executadas por uma combinação de hardware ou soft- ware. Uma unidade de execução e/ou um processador pode incluir circuitos específicos ou particulares ou outra lógica responsiva a uma instrução de máquina ou a um ou mais sinais de controle derivados da instrução de má- quina para armazenar um operando de resultado especificado por instrução.
Deve também ser apreciado que a referência por todo este rela- tório descritivo a "uma concretização", "a concretização", ou "uma ou mais concretizações", por exemplo, indica que uma característica específica pode ser incluída na prática das concretizações da invenção. Similarmente, deve ser apreciado que, na descrição, várias características são muitas vezes a- grupadas entre si em uma única concretização, figura, ou descrição da mesma para fins de aperfeiçoar a descrição e ajudar no entendimento dos vários aspectos da invenção. Este método de descrição, contudo, não deve ser interpretado como refletindo uma intenção de que a invenção exige mais características do que são expressamente citadas em cada reivindicação. De preferência, como refletem as seguintes reivindicações, os aspectos da invenção podem estar em menos do que todas as características de uma única concretização descrita. Desse modo, as reivindicações que seguem a Descrição Detalhada são aqui expressamente incorporadas nesta Descrição Detalhada, com cada reivindicação sendo sustentada por si só como uma concretização separada da invenção.
Inúmeras concretizações da invenção foram descritas. Contudo, será entendido que várias modificações podem ser feitas sem se afastar do espírito e do escopo da invenção. Por exemplo, os sistemas de computador precisam ser limitados a sistemas de computador apresentando múltiplos processadores ou dispositivos de acesso de memória. A presente invenção poderia ser prontamente utilizada em um único sistema de processador, on- de uma instrução de leitura-modificação-gravação é implementada.
É adicionalmente apreciado que os controles de acesso para as áreas compartilhadas da memória podem ser obtidos por meio que não a seqüência de testar e ajustar descrita no exemplo acima. Por exemplo, um simples contado pode ser usado, no qual cada acesso é incrementado por uma contagem específica.
Também é apreciado que a instrução VCMPXCHG da concreti- zação preferida executa a operação de ler-modificar-gravar, mas as fases de modificação e gravação são obtidas essencialmente como uma etapa única. Em vez de calcular os valores de modificação depois da leitura dos dados originais e então subseqüentemente gravar os valores modificados, os valo- res modificados da instrução VCMPXCHG são preestabelecidos para uso pela instrução. Embora seu uso dependa da decisão obtida, quando da comparação, estes valores de modificação preestabelecidos (SRC3) podem ser gravados imediatamente no destino para modificar o valor de destino.
Desse modo, é descrita uma técnica para implementar uma ope- ração de comparar-trocar de vetor que utiliza uma máscara. É apreciado que as instruções VCMPXCHG e implementações descritas aqui podem ser utili- zadas em outras capacidades também e não precisam ficar limitadas à fun- ção de controlar o acesso a um espaço de memória compartilhado. Por e- xemplo, as instruções VCMPXCHG podem ser usadas para a execução es- peculativa na qual uma operação SIMD é executada em uma pluralidade de elementos de dados, os resultados dos quais sendo apenas gravados no espaço de memória compartilhado, se os elementos de dados não tiverem sido modificados por outro agente durante a operação. Consequentemente, outras concretizações estão dentro do escopo das seguintes reivindicações.

Claims (22)

1. Método que compreende: a decodificação por um decodificador em um dispositivo de pro- cessamento de uma única instrução que especifica uma operação de com- paração e troca de vetor para uma pluralidade de elementos de dados entre uma primeira localização de armazenamento, uma segunda localização de armazenamento, e uma terceira localização de armazenamento; a emissão da única instrução para execução por uma unidade de execução no dispositivo de processamento; e, responsiva à execução da única instrução, a comparação dos elementos de dados da primeira localização de armazenamento aos elementos de dados correspondentes na segunda localização de armazenamento; e, responsiva à determinação de que existe uma associação, a substituição dos elementos de dados da primeira localização de armazenamento pelos elementos de dados correspondentes da terceira localização de armazenamento.
2. Método, de acordo com a reivindicação 1, em que a única ins- trução adicionalmente especifica uma localização de armazenamento de máscara que armazena uma pluralidade de elementos de máscara corres- pondendo aos respectivos elementos de dados na primeira localização de armazenamento.
3. Método, de acordo com a reivindicação 2, em que a compara- ção dos elementos de dados da primeira localização de armazenamento com os elementos de dados correspondentes na segunda localização de armazenamento compreende: a comparação de um elemento de dados da primeira localização de armazenamento com um elemento de dados correspondentes na segun- da localização de armazenamento, quando um elemento de máscara cor- respondendo ao elemento de dados da primeira localização de armazena- mento estiver ativo.
4. Método, de acordo com a reivindicação 2, em que a substitui- ção dos elementos de dados da primeira localização de armazenamento pe- los elementos de dados correspondentes da terceira localização de armaze- namento compreende: a substituição de um elemento de dados da primeira localização de armazenamento por um elemento de dados correspondentes da terceira localização de armazenamento, quando um elemento de máscara corres- pondendo ao elemento de dados da primeira localização de armazenamento estiver ativo.
5. Método, de acordo com a reivindicação 1, que adicionalmente compreende: a substituição dos elementos de dados da segunda pluralidade de elementos de dados com os elementos de dados correspondentes da primeira localização de armazenamento, quando da não existência de uma associação.
6. Método, de acordo com a reivindicação 5, em que a única ins- trução adicionalmente especifica uma localização de armazenamento de máscara que armazena uma pluralidade de elementos de máscara corres- pondendo aos respectivos elementos de dados na primeira localização de armazenamento.
7. Método, de acordo com a reivindicação 6, em que a compara- ção dos elementos de dados da primeira localização de armazenamento com os elementos de dados correspondentes na segunda localização de armazenamento compreende: a comparação de um elemento de dados da primeira localização de armazenamento com um elemento de dados correspondente na segunda localização de armazenamento, quando um elemento de máscara corres- pondendo ao elemento de dados da primeira localização de armazenamento estiver ativo.
8. Método, de acordo com a reivindicação 6, em que a substitui- ção dos elementos de dados da primeira localização de armazenamento pe- los elementos de dados correspondentes da terceira localização de armaze- namento compreende: a substituição de um elemento de dados da primeira localização de armazenamento por um elemento de dados correspondente da terceira localização de armazenamento, quando um elemento de máscara corres- pondendo ao elemento de dados da primeira localização de armazenamento estiver ativo.
9. Método, de acordo com a reivindicação 6, em que a substitui- ção dos elementos de dados da segunda localização de armazenamento pelos elementos de dados correspondentes da primeira localização de ar- mazenamento compreende: a substituição de um elemento de dados da segunda localização de armazenamento por um elemento de dados correspondente da primeira localização de armazenamento, quando um elemento de máscara corres- pondendo ao elemento de dados da primeira localização de armazenamento estiver ativo.
10. Processador que compreende: uma localização de armazenamento configurada para armazenar uma primeira pluralidade de elementos de dados, uma segunda pluralidade de elementos de dados, e uma terceira pluralidade de elementos de dados, cada elemento de dados da segunda e da terceira pluralidades de elementos de dados correspondendo a um elemento de dados da primeira pluralidade de elementos de dados; um decodificador configurado para decodificar uma única instru- ção que especifica uma operação de comparar-trocar de vetor para a primei- ra, a segunda e a terceira pluralidades de elementos de dados; e uma unidade de execução acoplada ao decodificador para rece- ber instruções decodificadas e acoplada à localização de armazenamento para executar a operação de comparar-trocar de vetor; em que, responsiva à execução da operação de comparar-trocar de vetor, a unidade de execução é configurada para: comparar os elementos de dados correspondentes da primeira e da segunda pluralidade de elementos de dados; e, responsiva à determina- ção de que existe uma associação, substituir os elementos de dados da primeira pluralidade de ele- mentos de dados pelos elementos de dados correspondentes da terceira pluralidade de elementos de dados.
11. Processador, de acordo com a reivindicação 10, em que, responsiva à execução da operação de comparar-trocar de vetor, a unidade de execução é adicionalmente configurada para: substituir os elementos de dados da segunda pluralidade de e- Iementos de dados pelos elementos de dados correspondentes da primeira pluralidade de elementos de dados no caso da não existência de uma asso- ciação.
12. Processador, de acordo com a reivindicação 11, em que a única instrução adicionalmente especifica uma localização de armazena- mento de máscara que armazena uma pluralidade de elementos de máscara correspondendo aos respectivos elementos de dados na primeira pluralidade de elementos de dados.
13. Processador, de acordo com a reivindicação 12, em que a unidade de execução é configurada para comparar os elementos de dados correspondentes da primeira e da segunda pluralidades de elementos de dados, quando um respectivo elemento de máscara estiver ativo.
14. Processador, de acordo com a reivindicação 12, em que a unidade de execução é configurada para substituir os elementos de dados da primeira pluralidade de elementos de dados pelos elementos de dados correspondentes da terceira pluralidade de elementos de dados, quando um respectivo elemento de dados estiver ativo.
15. Processador, de acordo com a reivindicação 12, em que a unidade de execução é configurada para substituir os elementos de dados da segunda pluralidade de elementos de dados pelos elementos de dados correspondentes da primeira pluralidade de elementos de dados, quando um respectivo elemento de máscara estiver ativo.
16. Processador, de acordo com a reivindicação 12, em que a unidade de execução executa a operação de comparar-trocar de vetor como uma operação atômica.
17. Processador, de acordo com a reivindicação 12, em que res- ponsiva à execução da operação de comparar-trocar de vetor, a unidade de execução é adicionalmente configurada para: ajustar uma bandeira, se existir uma associação entre cada par de elementos de dados correspondentes para os quais um elemento de máscara correspondente está ativo; e liberar a bandeira, caso não exista uma associação.
18. Sistema compreendendo: um controlador de memória acoplado a uma primeira localização de armazenamento configurada para armazenar uma primeira pluralidade de elementos de dados; e um processador acoplado ao controlador de memória, o proces- sador compreendendo: um arquivo de registro configurado para armazenar uma segun- da pluralidade de elementos de dados, e uma terceira pluralidade de ele- mentos de dados, cada da segunda e da terceira pluralidades de elementos de dados correspondendo a um da primeira pluralidade de elementos de dados; um decodificador configurado para decodificar uma única instru- ção que especifica uma operação de comparar-trocar de vetor para a primei- ra, a segunda e a terceira pluralidades de elementos de dados; e uma unidade de execução acoplada ao decodificador para rece- ber instruções decodificadas e acoplada à primeira localização de armaze- namento e arquivo de registro para executar a operação de comparar-trocar de vetor; em que, responsiva à execução da operação de comparar-trocar de vetor, a unidade de execução é configurada para: comparar os elementos de dados correspondentes da primeira e da segunda pluralidades de elementos de dados; e, responsiva à determina- ção de que existe uma associação, substituir os elementos de dados da primeira pluralidade de ele- mentos de dados pelos elementos de dados correspondentes da terceira pluralidade de elementos de dados; e, responsiva à determinação de que não existe uma associação, substituir os elementos de dados da segunda pluralidade de e- Iementos de dados pelos elementos de dados correspondentes da primeira pluralidade de elementos de dados.
19. Sistema, de acordo com a reivindicação 18, em que a única instrução adicionalmente especifica um registro de máscara que armazena uma pluralidade de elementos de máscara correspondendo aos respectivos elementos de dados na primeira pluralidade de elementos de dados.
20. Sistema, de acordo com a reivindicação 19, em que a unida- de de execução é configurada para comparar pares de elementos de dados correspondentes da primeira e da segunda pluralidades de elementos de dados, quando um respectivo elemento de máscara estiver ativo, para ajus- tar uma bandeira, se cada comparação resultar em uma associação, e para liberar a bandeira, se cada comparação não resultar em uma associação.
21. Sistema, de acordo com a reivindicação 20, em que a unida- de de execução executa a operação de comparar-trocar de vetor como uma operação atômica.
22. Meio legível por computador apresentando, armazenadas no mesmo, instruções operáveis para fazer com que o dispositivo de processa- dor: decodifique uma única instrução que especifica uma operação de comparar-trocar de vetor para uma pluralidade de elementos de dados, cada elemento de dados apresentando um elemento de teste corresponden- te, um elemento de substituição e um elemento de máscara; compare os elementos de dados aos elementos de teste corres- pondentes, se os respectivos elementos de máscara estiverem ativos; e, responsiva à determinação de que todas as comparações indicam uma as- sociação, ajuste uma bandeira e substitua os elementos de dados compa- rados pelos elementos de substituição correspondentes; e, responsiva à de- terminação de que toda a comparação não indica uma associação, libere a bandeira e substitua os elementos de teste comparados pelos elementos de dados correspondentes.
BRPI1005259-3A 2009-12-22 2010-12-22 vetores simd sincronizadores BRPI1005259A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/644,529 US8996845B2 (en) 2009-12-22 2009-12-22 Vector compare-and-exchange operation

Publications (1)

Publication Number Publication Date
BRPI1005259A2 true BRPI1005259A2 (pt) 2013-04-02

Family

ID=44152784

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI1005259-3A BRPI1005259A2 (pt) 2009-12-22 2010-12-22 vetores simd sincronizadores

Country Status (9)

Country Link
US (1) US8996845B2 (pt)
JP (2) JP5421458B2 (pt)
KR (1) KR101461378B1 (pt)
CN (2) CN102103570B (pt)
BR (1) BRPI1005259A2 (pt)
DE (1) DE112010004963T5 (pt)
GB (1) GB2488619B (pt)
TW (2) TWI427533B (pt)
WO (1) WO2011087590A2 (pt)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
US10621092B2 (en) 2008-11-24 2020-04-14 Intel Corporation Merging level cache and data cache units having indicator bits related to speculative execution
US8996845B2 (en) 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation
US9417855B2 (en) 2011-09-30 2016-08-16 Intel Corporation Instruction and logic to perform dynamic binary translation
US10318291B2 (en) 2011-11-30 2019-06-11 Intel Corporation Providing vector horizontal compare functionality within a vector register
CN103959237B (zh) * 2011-11-30 2016-09-28 英特尔公司 用于提供向量横向比较功能的指令和逻辑
CN104011657B (zh) * 2011-12-22 2016-10-12 英特尔公司 用于向量计算和累计的装置和方法
WO2013095630A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method of improved extract instructions background
CN104040487B (zh) * 2011-12-23 2017-10-13 英特尔公司 用于合并掩码模式的指令
CN104081342B (zh) 2011-12-23 2017-06-27 英特尔公司 经改进的***指令的装置和方法
WO2013095657A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction and logic to provide vector blend and permute functionality
US9658850B2 (en) 2011-12-23 2017-05-23 Intel Corporation Apparatus and method of improved permute instructions
WO2013095659A1 (en) 2011-12-23 2013-06-27 Intel Corporation Multi-element instruction with different read and write masks
US9632980B2 (en) 2011-12-23 2017-04-25 Intel Corporation Apparatus and method of mask permute instructions
CN104081341B (zh) 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
CN116414459A (zh) 2011-12-23 2023-07-11 英特尔公司 在不同的粒度水平下对数据值进行广播和掩码的指令执行
CN104169867B (zh) * 2011-12-23 2018-04-13 英特尔公司 用于执行掩码寄存器至向量寄存器的转换的***、装置和方法
WO2013095617A1 (en) 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for propagating conditionally evaluated values in simd/vector execution
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
US20140019723A1 (en) * 2011-12-28 2014-01-16 Koichi Yamada Binary translation in asymmetric multiprocessor system
US9552313B2 (en) 2011-12-28 2017-01-24 Intel Corporation Delivering real time interrupts with an advanced programmable interrupt controller
US20150134932A1 (en) * 2011-12-30 2015-05-14 Cameron B. McNairy Structure access processors, methods, systems, and instructions
US9575753B2 (en) * 2012-03-15 2017-02-21 International Business Machines Corporation SIMD compare instruction using permute logic for distributed register files
US9405538B2 (en) * 2012-12-28 2016-08-02 Intel Corporation Functional unit having tree structure to support vector sorting algorithm and other algorithms
CN104956322B (zh) * 2013-03-05 2019-03-01 英特尔公司 分析向量化的潜在效益
US9411593B2 (en) * 2013-03-15 2016-08-09 Intel Corporation Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks
US9405937B2 (en) 2013-06-28 2016-08-02 Intel Corporation Method and apparatus for securing a dynamic binary translation system
US9292298B2 (en) * 2013-07-08 2016-03-22 Arm Limited Data processing apparatus having SIMD processing circuitry
US9495155B2 (en) 2013-08-06 2016-11-15 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
GB2520603B (en) * 2013-09-26 2016-04-06 Imagination Tech Ltd Atomic memory update unit and methods
US11257271B2 (en) 2013-09-26 2022-02-22 Imagination Technologies Limited Atomic memory update unit and methods
US9466091B2 (en) 2013-09-26 2016-10-11 Imagination Technologies Limited Atomic memory update unit and methods
US9891936B2 (en) 2013-09-27 2018-02-13 Intel Corporation Method and apparatus for page-level monitoring
US9390023B2 (en) * 2013-10-03 2016-07-12 Cavium, Inc. Method and apparatus for conditional storing of data using a compare-and-swap based approach
US10445092B2 (en) * 2014-12-27 2019-10-15 Intel Corporation Method and apparatus for performing a vector permute with an index and an immediate
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US10019264B2 (en) * 2016-02-24 2018-07-10 Intel Corporation System and method for contextual vectorization of instructions at runtime
GB2549737B (en) * 2016-04-26 2019-05-08 Advanced Risc Mach Ltd An apparatus and method for managing address collisions when performing vector operations
WO2018022528A1 (en) * 2016-07-27 2018-02-01 Intel Corporation System and method for multiplexing vector compare
WO2018022525A1 (en) * 2016-07-27 2018-02-01 Intel Corporation System and method for multiplexing vector mask matches
EP3336691B1 (en) * 2016-12-13 2022-04-06 ARM Limited Replicate elements instruction
EP3336692B1 (en) 2016-12-13 2020-04-29 Arm Ltd Replicate partition instruction
CN108898554A (zh) * 2017-10-30 2018-11-27 上海寒武纪信息科技有限公司 提高图像分辨率的方法及相关产品
US11990137B2 (en) 2018-09-13 2024-05-21 Shanghai Cambricon Information Technology Co., Ltd. Image retouching method and terminal device
CN111258642B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258640B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258637B (zh) * 2018-11-30 2022-08-05 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258639B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN111258638B (zh) * 2018-11-30 2022-10-04 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
US20200210181A1 (en) * 2018-12-29 2020-07-02 Intel Corporation Apparatuses, methods, and systems for vector element sorting instructions
US20200401412A1 (en) * 2019-06-24 2020-12-24 Intel Corporation Hardware support for dual-memory atomic operations
CN110515659B (zh) * 2019-08-28 2021-10-01 中国人民解放军国防科技大学 一种原子指令的执行方法和装置
CN110515660B (zh) * 2019-08-28 2021-08-06 中国人民解放军国防科技大学 一种加速原子指令执行的方法和装置
CN117561501A (zh) * 2021-06-22 2024-02-13 华为技术有限公司 一种多线程数据处理方法及装置
CN115098165B (zh) * 2022-06-13 2023-09-08 昆仑芯(北京)科技有限公司 数据处理方法、装置、芯片、设备及介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4482956A (en) * 1982-11-04 1984-11-13 International Business Machines Corporation Parallel queueing method
JPS61288243A (ja) * 1985-06-17 1986-12-18 Fujitsu Ltd コンペアアンドスワツプ命令処理方式
JPS6285372A (ja) 1985-10-09 1987-04-18 Nec Corp マルチプロセツサシステムにおけるコンペアアンドスワツプ方式
US6460121B1 (en) * 1998-09-14 2002-10-01 Compaq Information Technologies Group, L.P. Method for providing an atomic memory read using a compare-exchange instruction primitive
US7308559B2 (en) 2000-02-29 2007-12-11 International Business Machines Corporation Digital signal processor with cascaded SIMD organization
US6880071B2 (en) 2001-04-09 2005-04-12 Sun Microsystems, Inc. Selective signalling of later reserve location memory fault in compound compare and swap
US7107305B2 (en) 2001-10-05 2006-09-12 Intel Corporation Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
CN101299185B (zh) * 2003-08-18 2010-10-06 上海海尔集成电路有限公司 一种基于cisc结构的微处理器结构
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US7219213B2 (en) 2004-12-17 2007-05-15 Intel Corporation Flag bits evaluation for multiple vector SIMD channels execution
US7509463B2 (en) * 2005-12-01 2009-03-24 Sony Computer Entertainment, Inc. Cell processor atomic compare and swap using dedicated synergistic processor element
US20070260634A1 (en) 2006-05-04 2007-11-08 Nokia Corporation Apparatus, system, method, and computer program product for synchronizing the presentation of media content
US7627723B1 (en) 2006-09-21 2009-12-01 Nvidia Corporation Atomic memory operators in a parallel processor
US7908255B2 (en) * 2007-04-11 2011-03-15 Microsoft Corporation Transactional memory using buffered writes and enforced serialization order
US8996845B2 (en) 2009-12-22 2015-03-31 Intel Corporation Vector compare-and-exchange operation

Also Published As

Publication number Publication date
GB201119083D0 (pt) 2011-12-21
CN102103570B (zh) 2015-08-12
KR101461378B1 (ko) 2014-11-20
TWI525539B (zh) 2016-03-11
TWI427533B (zh) 2014-02-21
US8996845B2 (en) 2015-03-31
JP2012531682A (ja) 2012-12-10
TW201428622A (zh) 2014-07-16
JP5421458B2 (ja) 2014-02-19
JP5876458B2 (ja) 2016-03-02
WO2011087590A3 (en) 2011-10-27
WO2011087590A2 (en) 2011-07-21
DE112010004963T5 (de) 2012-11-22
GB2488619A (en) 2012-09-05
CN105094749A (zh) 2015-11-25
GB2488619B (en) 2017-10-18
TW201140435A (en) 2011-11-16
KR20120096588A (ko) 2012-08-30
JP2014059902A (ja) 2014-04-03
US20110153989A1 (en) 2011-06-23
CN102103570A (zh) 2011-06-22

Similar Documents

Publication Publication Date Title
BRPI1005259A2 (pt) vetores simd sincronizadores
US9678750B2 (en) Vector instructions to enable efficient synchronization and parallel reduction operations
CN110312997B (zh) 使用缓存行锁定来实现原子原语
TWI476595B (zh) 用於交易式記憶體事件處置之硬體中使用者處置器的登錄
ES2689560T3 (es) Bloque de diagnóstico de transacción
US8543775B2 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
BR112014031415B1 (pt) Salvar/ restaurar registradores selecionados em processamento transacional
TWI808869B (zh) 硬體處理器及處理器
BR112014031354B1 (pt) Controle seletivo de execução de instrução em processamento transacional
KR20090025295A (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
BR112014031435B1 (pt) Teste randomizado dentro de execução transacional
BR112015022683B1 (pt) Sistema de processamento e método de realização de uma operação de manipulação de dados
US6728846B2 (en) Method and data processing system for performing atomic multiple word writes
JP5451579B2 (ja) 適応的最適化された比較/交換オペレーション
US6922666B2 (en) Method and data processing system for performing atomic multiple word reads
US11960922B2 (en) System, apparatus and method for user space object coherency in a processor
US7234027B2 (en) Instructions for test &amp; set with selectively enabled cache invalidate
BR102014006300A2 (pt) Instructions for performing overload verification
BRPI0805218B1 (pt) “Aparelho, sistema e método para esquema de omissão de trava por hardware híbrida de retirada prévia-posterior”.

Legal Events

Date Code Title Description
B03A Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette]
B06F Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette]
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 9A ANUIDADE.

B11B Dismissal acc. art. 36, par 1 of ipl - no reply within 90 days to fullfil the necessary requirements