BR112015022683B1 - Sistema de processamento e método de realização de uma operação de manipulação de dados - Google Patents

Sistema de processamento e método de realização de uma operação de manipulação de dados Download PDF

Info

Publication number
BR112015022683B1
BR112015022683B1 BR112015022683-3A BR112015022683A BR112015022683B1 BR 112015022683 B1 BR112015022683 B1 BR 112015022683B1 BR 112015022683 A BR112015022683 A BR 112015022683A BR 112015022683 B1 BR112015022683 B1 BR 112015022683B1
Authority
BR
Brazil
Prior art keywords
data structure
register
flag
motion
data
Prior art date
Application number
BR112015022683-3A
Other languages
English (en)
Other versions
BR112015022683A2 (pt
Inventor
Vijaykumar B. Kadgi
Jeremy R. Anderson
James D. Hadley
Tong Li
Matthew C. Merten
Original Assignee
Intel Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corporation filed Critical Intel Corporation
Publication of BR112015022683A2 publication Critical patent/BR112015022683A2/pt
Publication of BR112015022683B1 publication Critical patent/BR112015022683B1/pt

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)

Abstract

sistema de processamento e método de realização de uma operação de manipulação de dados. trata-se de sistemas e métodos para rastreamento de sinalizador em operações de manipulação de dados que envolvem eliminação de movimento. um sistema de processamento exemplificativo compreende uma primeira estrutura de dados que inclui uma pluralidade de valores de registro físico; uma segunda estrutura de dados que inclui uma pluralidade de indicadores referenciam elementos da primeira estrutura de dados; uma terceira estrutura de dados que inclui uma pluralidade de conjuntos de eliminação de movimento, sendo que cada conjunto de eliminação de movimento compreende dois ou mais bits que representam dois ou mais registradores de dados lógicos, a terceira estrutura de dados compreende adicionalmente pelo menos um bit associado a cada conjunto de eliminação de movimento, e pelo menos um bit que representa um ou mais registradores de sinalizador lógico; uma quarta estrutura de dados que inclui um identificador de um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador; e uma lógica de eliminação de movimento configurada para realizar uma operação de eliminação de movimento.

Description

CAMPO DA INVENÇÃO
[0001] A presente revelação refere-se, de modo geral, a sistemas de computador e se refere, especificamente, a aprimorar a eficiência de execução de operações de manipulação de dados por sistemas de computador.
HISTÓRICO
[0002] As operações de manipulação de dados representam uma porção significativa de operações realizadas por um processador. Então, otimizar a execução das mesmas aumenta o desempenho global do processador.
BREVE DESCRIÇÃO DOS DESENHOS
[0003] A presente revelação é ilustrada a título de exemplos, e não a título de limitação, e pode ser completamente entendida com referências à seguinte descrição detalhada quando considerada em conjunto com as figuras, em que:
[0004] A Figura 1 mostra um diagrama de componente de nível alto de um sistema de computador exemplificativo, em concordância com um ou mais aspectos da presente revelação;
[0005] A Figura 2 mostra um diagrama de blocos de um processador, em concordância com um ou mais aspectos da presente revelação;
[0006] As Figuras 3a e 3b ilustram esquematicamente elementos de uma microarquitetura de processador, em concordância com um ou mais aspectos da presente revelação;
[0007] A Figura 4 ilustra esquematicamente diversos aspectos de um processador exemplificative e de outros componentes do sistema de computador exemplificative 100 da Figura 1, em concordância com um ou mais aspectos da presente revelação;
[0008] A Figura 5 ilustra esquematicamente um exemplo de execução de uma operação de movimento por apelidamento de registro, em concordância com um ou mais aspectos da presente revelação;
[0009] As Figuras 6a e 6b ilustram esquematicamente exemplos de uma estrutura de dados de Rastreador de Sinalizador em concordância com um ou mais aspectos da presente revelação;
[0010] As Figuras 7 a a 7c ilustram esquematicamente diversos exemplos de uso de uma Tabela de Instanciação Múltipla (MIT) para rastreamento de entrada de Arquivo de Registro Físico (PRF), em concordância com um ou mais aspectos da presente revelação;
[0011] As Figuras 8a a 8c ilustram esquematicamente um exemplo de emprego de uma estrutura de dados de Rastreador de Sinalizador para rastreamento de entrada de MIT, em concordância com um ou mais aspectos da presente revelação;
[0012] As Figuras 9a a 9d e 10a a 10d ilustram esquematicamente exemplos de lógica de rastreamento de sinalizador em operações de eliminação de movimento, em concordância com um ou mais aspectos da presente revelação;
[0013] A Figura 11 mostra um fluxograma de um método exemplificativo para rastreamento de sinalizador em operações de eliminação de movimento, em concordância com um ou mais aspectos da presente revelação; e
[0014] A Figura 12 mostra um diagrama de blocos de um sistema de computador exemplificativo, em concordância com um ou mais aspectos da presente revelação.
DESCRIÇÃO DETALHADA
[0015] No presente documento são descritos sistemas de computador e tecnologias relacionadas para rastreamento de sinalizador em operações de manipulação de dados que envolvem eliminação de movimento. A "eliminação de movimento" no presente documento deve se referir a execução de uma operação de cópia de registro sem empregar a unidade de execução, com o objetivo de aprimorara a eficácia de execução.
[0016] Em algumas implantações, a eliminação de movimento pode ser implantada pelo apelidamento de registro: uma primeira estrutura de dados, referida como Arquivo de Registro Físico (PRF), pode ser empregada para armazenar valores de registro físico, e uma segunda estrutura de dados, referida como Tabela de Apelido de Registro (RAT), pode ser empegada para armazenar identificadores de registro lógico para entradas PRF. O apelidamento de registro permite executar certas instruções modificando-se um ou mais indicadores na RAT sem enviar essas instruções para a unidade de execução. Exemplos de tais instruções incluem registrar instruções de retornar a zero (tais como, por exemplo, XOR AX, AX) e instruções de cópia de registro (tais como instruções MOV) . Porque uma instrução de cópia de registro não cria um valor novo, o indicador de registro de fonte pode ser copiado para o indicador de registro de destinação na RAT, de modo que a instrução não seja necessária para empregar a unidade de execução e outra entrada PRF. Esse processo é referido como "eliminação de movimento", visto que a instrução de movimento é eliminada a partir do fluxo enviado à unidade de execução.
[0017] Uma instrução inteira pode modificar não apenas um valor de registro de destinação, mas também um ou mais de sinalizadores de status de processador. Para armazenar valores de sinalizador, cada entrada PRF pode incluir, junto com um campo para o valor de dados de registro, um ou mais campos para os valores de sinalizador.
[0018] O uso de entradas de tabela PRF e registros físicos e sinalizadores pode ser necessário para ser rastreado com o objetivo de determinar quando uma entrada PRF pode ser liberada para uso por uma nova instrução. No presente documento, são descritos abaixo sistemas e métodos para rastreamento de sinalizador eficiente em operações de eliminação de movimento. Diversos aspectos dos métodos e sistemas referidos acima são descritos em detalhes no presente documento abaixo por meio de exemplos, ao invés de por meio de limitação.
[0019] Na seguinte descrição, diversos detalhes específicos são apresentados, tais como exemplos de tipos específicos de processadores e de configurações de sistema, estruturas de hardware específicas, detalhes de microarquitetura e de arquitetura específicos, configurações de registro específicas, tipos de instrução específicos, componentes de sistema específicos, medidas/pesos específicos, operação e estágios de encadeamento de processador específicos etc. com o objetivo de fornecer um entendimento completo da presente invenção. Será evidente, entretanto, para aquele versado na técnica que esses detalhes específicos precisam não ser empregados para praticar a presente invenção. Em outras instâncias, componentes ou métodos bem conhecidos, tais como arquiteturas de computador' específicas e alternativas, circuitos/código lógicos específicos para os algoritmos descritos, código de suporte lógico inalterável específico, operação de interconexão específica, configurações de lógica específicas, técnicas de fabricação e materiais específicos, implantações de compilador específicas, expressão de algoritmos em código específica, técnicas/ lógica de desligamento e concessão específicas e outros detalhes operacionais específicos do sistema de computador que não têm sido descritos em detalhes com o objetivo de evitar obscurecimento desnecessário da presente invenção.
[0020] Ainda que as modalidades a seguir sejam descritas com referência a um processador, sendo que outras modalidades são aplicáveis a outros tipos de circuitos integrados e dispositivos lógicos. Técnicas similares e ensinamentos de modalidades da presente invenção podem ser aplicados a outros tipos de circuitos ou dispositivos semicondutores podem se beneficiar a partir de rendimento de encadeamento mais alto e um desempenho aprimorado. Os ensinamentos de modalidades da presente invenção são aplicáveis a qualquer processador ou máquina que realize manipulação de dados. Entretanto, a presente invenção não é limitada a processadores ou máquinas que realizam operações de dados de 512 bits, 256 bits, 128 bits, 64 bits, 32 bits, ou 16 bits e pode ser aplicada a qualquer processador e máquina nos quais a manipulação ou gerenciamento de dados é realizado. Além disso, a seguinte descrição fornece exemplos, e os desenhos anexos mostram vários exemplos para o propósito de ilustração. Entretanto, esses exemplos não devem ser construídos com um sentido de limitação conforme os mesmos são meramente intencionados a fornecer exemplos de modalidades da presente invenção ao invés de fornecer uma lista exaustiva de todas as possíveis implantações de modalidades da presente invenção.
[0021] Ainda que os exemplos abaixo descrevam a distribuição e manejo de instrução no contexto de unidades de execução e circuitos lógicos, outras modalidades da presente invenção podem ser cumpridas por meio de dados ou instruções armazenados em um meio legível por máquina, tangível, que quando realizado por uma máquina motiva a máquina a realizar funções consistentes com pelo menos uma modalidade da invenção. Em uma modalidade, as funções associadas a modalidades da presente invenção são modalizadas em instruções executáveis por máquina. As instruções podem ser usadas para motivar um processador de propósito geral ou de propósito especial que é programado com as instruções para realizar as etapas da presente invenção. As modalidades da presente invenção podem ser fornecidas como um produto de programa de computador ou software que pode incluir uma máquina ou meio legível por máquina que tem armazenado nas mesmo instruções que podem ser usadas pata programar um computador (ou outros dispositivos eletrônicos) para realizar uma ou mais operações de acordo com as modalidades da presente invenção. De modo alternativo, as operações de modalidades da presente invenção podem ser realizadas por componentes de hardware específicos que contêm lógica de função fixa para realizar as operações, ou por qualquer combinação de componentes de computador programados e componentes de hardware de função fixa.
[0022] As instruções usadas para programar a lógica para realizar modalidades da invenção podem ser armazenadas dentro de uma memória no sistema, tais como DRAM, memória do tipo cache, memória flash, ou outro armazenamento. Adicionalmente, as instruções podem ser distribuídas por meio de uma rede ou por meio de outra mídia legível por computador. Portanto, um meio legível por máquina pode incluir qualquer mecanismo para armazenar ou transmitir informações em um formato legível por uma máquina (por exemplo, um computador), mas não é limitada a, disquetes flexíveis, discos ópticos, Disco Compacto, Memória de Apenas Leitura (CD- ROMs) , e discos óptico-magnéticos, Memória de Apenas Leitura (ROMs), Memória de Acesso Aleatório (RAM), Memória de Apenas Leitura Programável Apagável (EPROM), Memória de Apenas Leitura Programável Apagável Eletricamente (EEPROM), cartões ópticos ou magnéticos, memória flash, ou um armazenamento tangível, legível por máquina usado na transmissão de informações sobre a Internet por meio de sinais propagados elétricos, ópticos, acústicos ou outras formas de sinais propagados (por exemplo, ondas portadoras, sinais infravermelhos, sinais digitais, etc.). Consequentemente, o meio legível por máquina inclui qualquer tipo de meio legível por máquina tangível adequado pata armazenar ou transmitir instruções eletrônicas ou informações em um formato legível por uma máquina (por exemplo, um computador).
[0023] O "processador", no presente documento, deve se referir a um dispositivo com capacidade de executar operações de codificação lógica, aritmético ou de I/O de instruções. Em um exemplo ilustrativo, um processador pode seguir o modelo arquitetural de Von Neumann e pode incluir uma unidade de lógica aritmética (ALU), uma unidade de controle, e uma pluralidade de registros. EM um aspecto adicional, um processador pode incluir um ou mais núclêos de processador, e então pode ter um único processador de núcleo que tem a capacidade tipicamente de processar um único encadeamento de instrução, ou um processador de múltiplos núcleos que pode processar simultaneamente encadeamentos de instrução múltiplos. Em outro aspecto, um processador pode ser implantado como um único circuito integrado, como dois ou mais circuitos integrados, ou pode ser um componente de um módulo de chip múltiplo (por exemplo, no qual as matrizes de microprocessador individuais são incluídas em único pacote de circuito integrado e então compartilham um único soquete).
[0024] A Figura 1 mostra um diagrama de componente de nível alto de um exemplo de um sistema de computador em concordância com um ou mais aspectos da presente revelação. Um sistema de computador 100 pode incluir um processador 102 para empregar unidades de execução que incluem lógica para realizar algoritmos para processar dados, em concordância com a modalidade descrita no presente documento. 0 sistema 100 é representativo de sistemas de processamento com base nos microprocessadores PENTIUM III™, PENTIUM 4™, Xeon™, Itanium, XScale™ e/ou StrongARM™ disponíveis pela Intel Corporation de Santa Clara, Califórnia, ainda que outros sistemas (que incluem PCs que têm outros microprocessadores, estações de trabalho de engenharia, decodificadores de sinais e similares) também podem ser usados. Em uma modalidade, sistema de amostra 100 executa uma versão do sistema operacional do WINDOWS™ disponível pela Microsoft Corporation de Redmond, Washington, ainda que outros sistemas operacionais (UNIX e Linux for exemplo) , software embarcado, e/ou interfaces de usuário gráficas, também podem ser usadas. Portanto, as modalidades da presente invenção não são limitadas a nenhuma combinação específica de conjunto de circuitos de hardware e software.
[0025] As modalidades não são limitadas aos sistemas de computador. As modalidades alternativas da presente invenção podem ser usadas em outros dispositivos tais como dispositivos de mão e aplicações incluídas. Alguns exemplos de dispositivos de mão incluem telefones celulares, dispositivos de Protocolo de Internet, câmeras digitais, assistentes digitais pessoais (PDAs), e PCs de mão. As aplicações incluídas podem incluir um micro controlador, um processador de sinal digital (DSP) , um sistema em um chip, computadores em rede (NetPC) , decodificadores de sinais, bocais de conexão de rede, comutadores de rede de longa distância (WAN) , ou qualquer outro sistema que possa realizar uma ou mais instruções em concordância com pelo menos uma modalidade.
[0026] Nessa modalidade ilustrada, o processador 102 inclui uma ou mais unidades de execução 108 para implantar um algoritmo para realizar pelo menos uma instrução. Uma modalidade pode ser descrita no contexto de uma única área de trabalho de processador ou sistema servidor, mas as modalidades alternativas podem ser incluídas em um sistema de multiprocessador. 0 sistema 100 é um exemplo de uma arquitetura de sistema de "bocal de conexão". O sistema de computador 100 inclui um processador 102 para processar sinais de dados. O processador 102, conforme um exemplo ilustrativo, inclui um microprocessador de computador de conjunto de instrução complexa (CISC), um microprocessador de computação de conjunto de instrução reduzida (RISC), um microprocessador de palavra de instrução muito longa (VLIW) , um processador que implanta uma combinação de conjuntos de instrução, ou qualquer outro dispositivo de processador, tal como um processador de sinal digital, por exemplo. O processador 102 é acoplado a um barramento de processador 110 que transmite sinais de dados entre o processador 102 e outros componentes no sistema 100. Os elementos de sistema 100 (por exemplo, acelerador gráfico 112, boca de conexão de controle de memória 116, memória 120, boca de conexão de controle de I/O 124, transceptor sem fio 126, Flash BIOS 128, Controlador de Rede 134, controlador de Áudio 136, porta de expansão Serial 138, controlador de I/O 140, etc.) realizam suas funções convencionais que são bem conhecidos para aqueles familiarizados na técnica.
[0027] Em uma modalidade, o processador 102 inclui uma Memória cache interna de Nível 1 (Ll) 104. Dependendo da arquitetura, o processador 102 pode ter uma única memória cache interna ou níveis múltiplos de memória cache internas. Outras modalidades incluem uma combinação de tanto memórias cache internas quando externas com dependência na implantação particular e necessidades. 0 arquivo de registro 106 é para armazenar diferentes tipos de dados em vários registros que incluem registros inteiros, registros de ponto flutuante, registros de vetor, registros de banco, registros de sombra, registros de ponto de verificação, registros de status, e registro de indicador de instrução.
[0028] A unidade de execução 108, que inclui lógica para realizar operações de ponto inteiro e flutuante, também reside no processador 102. O processador 102, em uma modalidade, inclui um ROM de microcódigo (ucode) para armazenar microcódigo, que quando executado, deve realizar algoritmos para certas macroinstruções ou manejar cenários complexos. No momento, o microcódigo é potencialmente atualizável para manejar erros/consertos de lógica para o processador 102. Para uma modalidade, a unidade de execução 108 inclui lógica para manejar um conjunto de instrução de pacote 109. Incluindo-se o conjunto de instrução de pacote 109 no conjunto de instrução de um processador de propósito geral 102, junto com conjunto de circuitos associados para executar as instruções, as operações usadas por muitas aplicações multimídia podem ser realizadas com o uso de dados compactados em um processador de propósito geral 102. Assim, muitas aplicações multimídia são aceleradas e executadas de modo mais eficiente usando-se a largura completa de um barramento de dados de processador para realizar operações em dados compactados. Isso elimina de modo potencial a necessidade de transferir pequenas unidades de dados através do barramento de dados de processador para realizar uma ou mais operações, um elemento de dados por vez.
[0029] As modalidades alternativas de uma unidade de execução 108 também podem ser usadas em microcontroladores, processadores embutidos, dispositivos gráficos, DSPs, e em outros tipos de circuitos lógicos. O sistema 100 inclui uma memória 120. A memória 120 inclui um dispositivo de memória de acesso aleatório dinâmico (DRAM), um dispositivo de memória de acesso aleatório estático (SRAM), um dispositivo de memória flash, ou outro Dispositivo de memória. A memória 120 armazena instruções e/ou dados representados por sinais de dados que devem ser executados pelo processador 102.
[0030] Um chip de lógica de sistema 116 é acoplado ao barramento de processador 110 e à memória 120. O chip de lógica de sistema 116 na modalidade ilustrada é uma boca de conexão de controle de memória (MCH). O processador 102 pode se comunicar com a MCH 116 por meio de um barramento de processador 110. A MCH 116 fornece uma trajetória de memória de largura de banda alta 118 para a memória 120 para instrução e armazenamento de dados e para for armazenamento de comandos gráficos, dados e texturas. A MCH 116 é direcionada aos sinais de dados entre o processador 102, a memória 120, e outros componentes no sistema 100 e fazer uma ponte entre os sinais de dados entre o barramento de processador 110, a memória 120, e o sistema de I/O 122. Em algumas modalidades, o chip de lógica de sistema 116 pode fornecer uma porta gráfica para o acoplamento com um controlador de gráficos 112. A MCH 116 é acoplada à memória 120 através de uma interface de memória 118. O cartão gráfico 112 é acoplado à MCH 116 através de uma interconexão de uma Porta de Gráficos Acelerada (AGP) 114.
[0031] O sistema 100 usa um barramento de interface de boca de conexão proprietário 122 para acoplar a MCH 116 à boca de conexão de controle de I/O (ICH) 130. A ICH 130 fornece conexões diretas com alguns dispositivos de I/O por meio de um barramento de I/O local. O barramento de I/O local é um barramento de I/O de alta velocidade para conectar periféricos à memória 120, ao chipset, e ao processador 102. Alguns exemplos são o controlador de áudio, a boca de conexão de suporte lógico inalterável (flash BIOS) 128, o transceptor sem fio 126, o armazenamento de dados 124, controlador de I/O de legado que contém admissão de usuário e interfaces de teclado, uma porta de expansão serial tal como um Barramento Serial Universal (USB), e um controlador de rede 134. 0 dispositivo de armazenamento de dados 124 pode compreender uma unidade de disco rígido, uma unidade de disco flexível, um dispositivo CD-ROM, um dispositivo de memória flash, ou outro dispositivo de armazenamento de massa.
[0032] Para outra modalidade de um sistema, uma instrução em concordância com uma modalidade pode ser usada com um sistema em um chip. Uma modalidade de um sistema em um chip compreende um processador e uma memória. A memória para um sistema desse tipo é uma memória flash. A memória flash pode ser localizada na mesma matriz como o processador e outros componentes de sistema. De modo adicional, outros blocos de lógica tais como um controlador de memória ou um controlador de gráficos também podem ser localizados em um sistema em um chip.
[0033] A Figura 2 é um diagrama de blocos da microarquitetura para um processador 200 que inclui circuitos lógicos para realizar instruções em concordância com uma modalidade da presente invenção. Em algumas modalidades, uma instrução em concordância com uma modalidade pode ser implantada para operar uns elementos de dados que tem tamanhos de byte, palavra, palavra dupla, palavra quadrupla, etc., assim como tipos de dados, tais como tipos de dados de ponto inteiro e flutuante únicos ou duplos de precisão. Em uma modalidade, o front end em ordem 2 01 é a parte do processador 2 00 que busca as instruções para serem executadas e prepara as mesmas para serem usadas mais tarde em um encadeamento de processador. 0 front end 201 pode incluir diversas unidades. Em uma modalidade, o pré-buscador de instrução 226 busca instruções a partir da memória e alimenta as mesmas para um decodificador de instrução 228 que por sua vez decodifica e interpreta as mesmas. Por exemplo, em uma modalidade, o decodificador decodifica uma instrução recebida em uma ou mais operações chamadas "microinstruções" ou "micro- operações" (também referidas como uops) que a máquina possa executar. Em outras modalidades, o decodificador analisa sinteticamente a instrução dentro de um opcode e corresponde os dados e controla os campos que são usados pela micro-arquitetura para realizar operações em concordância com uma modalidade. Em uma modalidade, a cache de rastreamento 23 0 toma uops decodificadas e junta as mesmas em um programa ordenado em sequências ou rastros na fila uop 234 para execução. Quando a cache de rastreamento 230 encontra uma instrução complexa, o microcódigo ROM 232 fornece as uops necessárias para completar a operação.
[0034] Algumas instruções são convertidas em uma única micro-op, enquanto que outras precisam de diversas micro-ops para completar a operação inteira. Em uma modalidade, se mais do que quatro micro-ops são necessárias para completar uma instrução, o decodificador 228 acessa o microcódigo ROM 232 para fazer a instrução. Para uma modalidade, uma instrução pode ser decodificada em um pequeno número de micro-ops para processar no decodificador de instrução 228. Em outra modalidade, uma instrução pode ser armazenada dentro do microcódigo ROM 232 um número de micro-ops deve ser necessário para cumprir a operação. A cache de rastreamento 230 se refere a um ponto de entrada de um arranjo de lógica programável (PLA) para determinar um indicador de microinstrução correto para a leitura das sequências de microcódigo para completar uma ou mais instruções em concordância com uma modalidade do microcódigo ROM 232. Após o microcódigo ROM 232 finalizar de pôr em sequência as micro-ops para uma instrução, o front end 201 da máquina retoma a busca de micro-ops a partir da cache de rastreamento 230.
[0035] O mecanismo de execução fora de ordem 203 é o local em que as instruções são preparadas para execução. A lógica de execução fora de ordem tem um número de armazenamentos temporários para suavizar e reorganizar o fluxo de instruções para otimizar o desempenho conforme as mesmas descem o encadeamento e são agendadas para execução. A lógica de alocação aloca os armazenamentos temporários de máquina e os recursos que cada uop precisa com o objetivo de executar. A lógica de apelidamento de registro mapeia registros lógicos como entradas em um arquivo de registro. O alocador também aloca uma entrada para cada uop em uma das duas filas uops, uma para operações de memória e uma para operações de não memória, na parte frontal dos agendadores de instrução: agendador de memória, agendador rápido 202, agendador de ponto flutuante lento/geral 204, e agendador de ponto flutuante simples 206. Os agendadores uop 2 02, 2 04, 206 determinam quando uma uop está pronta para executar com base na disponibilidade de seu registro de admissão dependente operando fontes e a disponibilidade dos recursos de execução das uops necessários para completar sua operação. O agendador rápido 202 de uma modalidade pode agendar em cada metade do ciclo de relógio principal enquanto que outros agendadores podem agendar uma vez por ciclo de relógio de agendador principal. Os agendadores arbitram para as portas de despacho para agendar as uops para execução.
[0036] Os arquivos de registro físicos 208, 210 se situam entre os agendadores 202, 204, 206, e as unidades de execução 212, 214, 216, 218, 220, 222, 224 no bloco de execução 211. Há um arquivo de registro separado 208, 210 para operações de ponto inteiro e flutuante, respectivamente. Cada arquivo de registro 208, 210, de uma modalidade também inclui uma rede de desvio que pode desviar ou transferir apenas resultados completados que tenham ainda não sido gravados no arquivo de registro para novas uops dependentes. O arquivo de registro inteiro 208 e o arquivo de registro de ponto flutuante 210 também são capazes de comunicar dados com o outro. Para uma modalidade, o arquivo de registro inteiro 208 é fendido em dois arquivos de registro separados, um arquivo de registro para 32 bits de ordem inferior de dados e um segundo arquivo de registro para os 32 bits de ordem superior de dados. O arquivo de registro de ponto flutuante 210 de uma modalidade tem entradas largas de 128 bits porque as instruções de ponto flutuante tipicamente têm operandos de 64 até 128 bits de largura.
[0037] O bloco de execução 211 contém as unidades de execução 212, 214, 216, 218, 220, 222, 224, em que as instruções são realmente executadas. Essa seção inclui os arquivos de registro 2 08, 210, que armazenam os valores de operando de dados de ponto flutuante e inteiro que as microinstruções precisam para executar. O processador 200 de uma modalidade é compreendido de algumas unidades de execução: unidade de geração de endereço (AGU) 212, AGU 214, ALU rápida 216, ALU rápida 218, ALU lenta 220, ALU de ponto flutuante 222, unidade de movimento de ponto flutuante 224. Para uma modalidade, os blocos de execução de ponto flutuante 2 22, 22 4 executam ponto flutuante, MMX, SIMD e SSE, ou outras operações. A ALU de ponto flutuante 222 de uma modalidade inclui um divisor de ponto flutuante de 64 bits por 64 bits para executar divisão, raiz quadrada, e micro-ops restantes. Para modalidades da presente invenção, as instruções que envolvem um valor de ponto flutuante podem ser manejadas com o hardware de ponto flutuante. Em uma modalidade, as operações de ALU vão para as unidades de execução de ALU de alta velocidade 216, 218. As ALU rápidas 216, 218, de uma modalidade podem executar operações rápidas com uma latência eficaz de metade um ciclo de relógio. Para uma modalidade, operações inteiras mais complexas vão para a ALU lenta 220 conforme a ALU lenta 220 inclui hardware de execução inteiro para tipos de operações de longa latência, tais como um multiplicador, turnos, lógica de sinalizador, e processamento de ramificação. As operações de carga/armazenamento de memória são executadas pelas AGUs 212, 214. Para uma modalidade, as AlUs inteiras 216, 218, 220 são descritas no contexto de realizar operações inteiras em operandos de dados de 64 bits. Nas modalidades alternativas, as ALUs 216, 218, 220 podem ser implantadas para sustentar uma variedade de bits de dados que incluem 16, 32, 128, 256, etc. De modo similar, as unidades de ponto flutuante 222, 224 podem ser implantadas para sustentar uma faixa de operandos que têm bits de várias larguras. Para uma modalidade, as unidades de ponto flutuante 222, 224 podem operar em operandos de dados compactados de largos 128 bits em conjunto com SIMD e instruções multimídia.
[0038] Em uma modalidade, os agendadores uops 202, 204, 206 despacham operações dependentes antes que a carga parental tenha finalizado a execução. As uops são agendadas de forma especulativa e executadas no processador 200, o processador 200 também inclui lógica para manejar perdas de memória. Se perdas de carga de dados no cache de dados, podem ser operações dependentes em voo no encadeamento que tenham deixado o agendador com dados incorretos temporariamente. Um mecanismo de repetição rastreia e reexecuta instruções que usem dados incorretos. As operações dependentes devem ser repetidas e aquelas independentes são permitidas de completar. Os agendadores e o mecanismo de repetição de uma modalidade de um processador também são projetados para adquirir sequências de instrução para operações de comparação de série de texto.
[0039] O termo "registros" pode se referir a localizações de armazenamento de processador embutidas que são usadas como parte de instruções para identificar operandos. Em outras palavras, os registros podem ser aqueles que são usáveis a partir da parte externa do processador (a partir de uma perspectiva do programador). Entretanto, os registros de uma modalidade devem não ser limitados em sentido a um tipo de circuito particular. Ao invés disso, um registro de uma modalidade tem capacidade armazenar e prover dados, e realizar as funções descritas no presente documento. Os registros descritos no presente documento podem ser implantados por um conjunto de circuitos dentro de um processador com o uso de qualquer número de técnicas diferentes, tal como registros físicos dedicados, registros físicos alocados dinamicamente que usam o apelidamento de registro, combinações de registros físicos alocados dinamicamente e dedicados etc. Em uma modalidade, registros inteiros armazenam dados inteiros de trinta e dois bits. Um arquivo de registro de uma modalidade também contém oito registros multimídia SIMD para dados compactados. Para as discussões abaixo, os registros são entendidos para serem registros de dados projetados para reter dados compactados, tal como registros de 64 bits largos MMX (também referidos como registros "mm" em algumas instâncias) em microprocessadores capacitados com tecnologia MMX™ pela Intel Corporation de Santa Clara, Califórnia. Esses registros MMX, disponíveis em tanto na forma inteira quanto na forma flutuante, podem operar com elementos de dados compactados que acompanham instruções SIMD e SSE. De modo similar, registros XMM 128 bits largos se relacionam a tecnologia SSE2, SSE3, SSE4, ou além (referido de modo geral como "SSEx") podem também ser usados para reter tais operandos de dados compactados. Em uma modalidade, em dados compactados de armazenamento e dados inteiros, os registros não precisam diferenciar entre os dois tipos de dados. Em uma modalidade, inteiro e de ponto flutuante são um ou outros contidos no mesmo arquivo de registro ou em diferentes arquivos de registro. Adicionalmente, em uma modalidade, os dados de ponto flutuante e os dados inteiros podem ser armazenados em registros diferentes ou no mesmo registro.
[0040] As Figuras 3a e 3b ilustram esquematicamente elementos de uma microarquitetura de processador, em concordância com um ou mais aspectos da presente revelação. Na Figura 3a, um encadeamento de processador 400 que inclui um estágio de busca 402, um estágio de decodificação de comprimento 404, um estágio de decodificação 406, um estágio de alocação 408, um estágio de renomeação 410, um estágio de programação (também conhecido como despacho ou baixa) 412, um estágio de leitura/ leitura de memória de registro 414, um estágio de execução 416, um estágio de gravar no lado oposto/ gravar memória 418, um estágio de manejo de exceção 422, e um estágio de reestabelecimento 424.
[0041] Na Figura 3b, as setas denotam um acoplamento entre duas ou mais unidades e a direção da seta indica uma direção de fluxo de dados entre aquelas unidades. A Figura 3b mostra o núcleo do processador 490 que inclui uma unidade de front end 43 0 acoplada a uma unidade de mecanismo de execução 450, e ambas são acopladas a uma unidade de memória 470.
[0042] O núcleo 490 pode ser um núcleo de computação de conjunto de instrução reduzida (RISC), um núcleo de computação de conjunto de instrução complexa (CISC), um núcleo de palavra de instrução muito longa (VLIW), ou um núcleo híbrido ou tipo de núcleo alternativo. Como ainda outra opção, o núcleo 49 0 pode ser um núcleo de propósito especial, tal como, por exemplo, uma rede ou um núcleo de comunicação, mecanismo de compressão, núcleo de gráficos, ou similares.
[0043] A unidade de front end 43 0 inclui uma unidade de predição de ramificação 432 acoplada a uma unidade de instrução de cache 434, que é acoplada a um armazenamento temporário à parte de translação (TLB) 436 de instrução, que é acoplada a uma unidade de busca de instrução 43 8, que é acoplada a uma unidade de decodificação 440. A unidade de decodificação ou decodificador pode decodificar instruções, e gerar como saída uma ou mais micro-operações, ponto de entradas de microcódigo, microinstruções, outras instruções, ou outros sinais de controle, que são decodificados a partir, ou que de outra forma refletem, ou são derivados a partir das instruções originais. O decodificador pode ser implantado com o uso de vários mecanismos diferentes. Exemplos de mecanismos adequados que incluem, mas não são limitados a isso, tabelas de pesquisa, implantações de hardware, arranjos de lógica programáveis (PLAs), microcódigo legível apenas por memórias (ROMs), etc. A unidade de instrução de cache 434 é adicionalmente acoplada a uma unidade de cache de nível 2 (L2) 476 na unidade de memória 470. A unidade de decodif icação 440 é acoplada a uma unidade de renomeamento/alocação 452 na unidade de mecanismo de execução 450.
[0044] A unidade de mecanismo de execução 450 inclui a unidade de renomeamento/alocação 452 acoplada a uma unidade de desativação 454 e um conjunto de uma ou mais unidade(s) de agendamento 456. A(s) unidade(s) de agendamento 456 representa(m) qualquer número diferente de agendadores, que inclui estações de reserva, janela de instrução central, etc. A(s) unidade(s) de agendamento 456 é (são) acoplada(s) a(s) unidade(s) de arquivo (s) de registro físico 45 8. Cada um dentre as unidade(s) de arquivo(s) de registro físico 458 representa um ou mais arquivos de registro físico, diferentes daqueles dos quais armazenam um mais tipos de dados diferentes, tal como um inteiro escalar, ponto flutuante escalar, inteiro de pacote, ponto flutuante de pacote, inteiro de vetor, ponto flutuante de vetor, etc., status (por exemplo, um indicador de instrução que é o endereço da próxima instrução a ser executada) etc. A(s) unidade(s) de arquivo(s) de registro físico 458 são sobrepostas pela unidade de desativação 454 para ilustrar diversas formas nas quais o apelidamento de registro e a execução fora de ordem podem ser implantadas (por exemplo, com o uso de armazenamento(s) temporário(s) de reordenamento e arquivo(s) de registro de desativação, que usam arquivo(s) futuro(s), armazenamento(s) temporário(s) de história, e arquivo(s) de registro de desativação; que usam um mapeamento de registro e um grupo de registros; etc.) . De modo geral, os registros arquiteturais são visíveis a partir da parte exterior do processador ou a partir da perspectiva do programador. Os registros não são limitados a qualquer outro tipo de circuito particular. Vários tipos diferentes de registros são adequados conforme os mesmos tenham a ■ capacidade de armazenar e fornecer dados conforme descrito no presente documento. Exemplos de registros adequados incluem, mas não são limitados a isso, registros físicos dedicados, registros físicos alocados dinamicamente que usam apelidamento de registro, combinações de registros físicos alocados dinamicamente e dedicados, etc. A unidade de desativação 454 e a(s) unidade(s) de arquivo(s) de registro físico 458 são acopladas ao(s) agrupamento(s) de execução 460. O(s) agrupamento(s) de execução 460 inclui (em) um conjunto de uma ou mais unidades de execução 162 e um conjunto de uma ou mais unidades de acesso de memória 464. As unidades de execução 462 podem realizar várias operações (por exemplo, turnos, adição, subtração, multiplicação) e em vários tipos de dados (por exemplo, ponto flutuante escalar, inteiro de pacote, ponto flutuante de pacote, inteiro de vetor, ponto flutuante de vetor). Embora algumas modalidades possam incluir um número de unidades de execução dedicadas às funções específicas ou conjuntos de funções, outras modalidades podem incluir uma ou mais unidades de execução ou unidades de execução múltiplas que vão realizar completamente todas as funções. A(s) unidade(s) de agendamento 456, a(s) unidade(s) de arquivo(s) de registro físico 458, e o(s) agrupamento(s) de execução 460 são mostrados como sendo possivelmente plurais porque certas modalidades criam encadeamentos separados para certos tipos de dados/operações (por exemplo, um inteiro escalar encadeamento, um ponto flutuante escalar/inteiro de pacote/ponto flutuante de pacote/inteiro de vetor/ponto flutuante de vetor encadeamento, e/ou um encadeamento de acesso de memória sendo que cada um dentre os mesmos tem sua própria unidade de agendamento, unidade de arquivo(s) de registro físico, e/ou agrupamento de execução - e no caso de um encadeamento de acesso de memória separado, certas modalidades são implantadas nas quais o agrupamento de execução desse encadeamento tem a(s) unidade(s) de acesso de memória 464). Também deve ser entendido que quando os encadeamentos separados são usados, um ou mais desses encadeamentos pode ser emissão/execução fora de ordem e o restante em ordem.
[0045] O conjunto de unidades de acesso de memória 464 é acoplado à unidade de memória 470, que inclui uma unidade de dados TLB 472 acoplada a uma unidade de cache de dados 474 acoplada a uma unidade de cache de nível 2 (L2) 476. Em uma modalidade exemplificativa, as unidades de acesso de memória 464 podem incluir uma unidade de carga, uma unidade de endereço de armazenamento, e uma unidade de dados de armazenamento, cada uma das quais é acoplada a unidade de dados TLB 472 na unidade de memória 470. A unidade de cache L2 476 é acoplada a um ou mais níveis de cache e eventualmente à memória principal.
[0046] A título de exemplo, a arquitetura de núcleo de emissão/execução fora de ordem e apelidamento de registro exemplificative pode implantar o encadeamento 400 conforme a seguir: o buscador de instrução 438 realiza a busca e estágios de decodificação de comprimento 402 e 404; a unidade de decodificação 440 realiza o estádio de decodificação 406; a unidade de renomeio/alocação 452 realiza o estágio de alocação 408 e estágio de renomeio 410; a(s) unidade(s) de programador 456 realiza o estágio de programa 412; a(s) unidade(s) de arquivo de registro (s) físico(s) 458 e a unidade de memória 470 realizam o estágio de leitura de registro/leitura de memória 414; o grupamento de execução 460 realiza o estágio de execução 416; a unidade de memória 470 e a(s) unidade(s) de arquivo de registro(s) físico(s) 458 realizam o estágio de regravação/gravação de memória 418; várias unidades podem estar envolvidas no estágio de manejo de exceção 422; e a unidade de desativação 454 e a(s) unidade (s) de arquivo de registro(s) físico(s) 458 realizam o estágio de reestabelecimento 424.
[0047] O núcleo 490 pode dar suporte a um ou mais conjuntos de instruções (por exemplo, o conjunto de instruções x86 com algumas extensões que têm sido adicionadas com versões mais novas); o conjunto de instruções de MIPS de Tecnologia MIPS de Sunnyvale, CA; o conjunto de instruções de ARM (com extensões adicionais tais como NEON) de ARM Holdings de Sunnyvale, CA) .
[0048] Em certas implantações, o núcleo pode suportar multithreading (com a execução de dois ou mais conjuntos paralelos de operações ou linhas) e pode fazer em uma variedade de maneiras que inclui o multithreading segmentando de tempo (onde um único núcleo físico fornece um núcleo lógico para cada uma dentre as linhas em que o núcleo físico é simultaneamente multithreading) ou uma combinação do mesmo (por exemplo, buscador segmentado de tempo, decodificador e multithreading simultâneo, subsequentemente, tais como na tecnologia Hyperthreading da Intel®).
[0049] Embora o apelidamento de registro seja descrito no contexto de execução fora de ordem, deve ser entendido que o apelidamento de registro pode ser usado em uma arquitetura em serviço. Embora a modalidade ilustrada do processador também inclua uma instrução separada, unidades de cache de dados 434/474 e uma unidade de cache 476 compartilhada L2, modalidades alternativas podem ter um único cache interno para ambos, instruções e dados, tal como, por exemplo, uma memória de cache interna de Nível 1 (Ll) ou níveis múltiplos de memória de cache interna. Em algumas modalidades, o sistema pode incluir uma combinação de uma memória de cache interna e uma memória de cache externa que é exterior ao núcleo e/ou ao processador. De modo alternativo, todas as memórias de cache podem ser exteriores ao núcleo e/ou ao processador.
[0050] A Figura 4 ilustra um diagrama de blocos de um processador exemplificativo 102 e outros componentes do sistema de computador 100, em concordância com um ou mais aspectos da presente revelação. Em referência à Figura 4, o núcleo de processador 49 0 pode incluir uma unidade de busca 202 para buscar instruções para execução pelo núcleo 490. As instruções podem ser buscadas a partir de um ou mais dispositivos de armazenamento, tal como a memória 115. 0 processador núcleo 490 pode, adicionalmente, incluir uma unidade de decodificação 440 para decodificar uma instrução buscada dento de uma ou mais micro-operações (μops). O núcleo de processador 490 pode, adicionalmente, incluir uma unidade de agendamento 446 para armazenar uma instrução decodificada recebida da unidade de decodificação 440 até que a instrução esteja pronta para ser emitida, por exemplo, até que os valores de operação para instruções decodificadas se tornem disponíveis. A unidade de agendamento 446 pode agendar e/ou emitir instruções decodificadas para uma unidade de execução 450.
[0051] A unidade de execução 45 0 pode incluir uma ou mais unidades aritméticas e lógicas (ALUs), uma ou mais unidades de execução inteiras, uma ou mais unidade de execução de ponto flutuante e/ou outras unidades de execução. Em certas implantações, a unidade de execução 450 pode executar instruções fora de ordem (000) . O núcleo de processador 490 pode, adicionalmente, incluir uma unidade de desativação 454 para desativar as instruções executadas após estarem comprometidas.
[0052] O núcleo de processador 490 pode, adicionalmente, incluir uma Tabela de Apelido de Registro (RAT) 421, um Arquivo de Registro Físico (PRF) 423, uma Tabela de Eliminação de movimento (MIT) 425, um Rastreador sinalizador 427, e uma lógica de rastreamento de PRF 150. Ainda que na Figura 4 a lógica 150 seja mostrada para estar no interior de um núcleo 490, a lógica 150 pode ser fornecida em outro lugar no sistema de computador 100. Adicionalmente, a lógica 150 e/ou alguns dos componentes da mesma, pode ser compartilhada entre uma pluralidade de núcleos de processador.
[0053] Como mencionado no presente documento acima, uma instrução de movimento pode ser eliminada copiando- se o indicador de registro de fonte para o indicador de registro de destinação na RAT. A Figura 5 ilustra esquematicamente uma instrução de execução MOV DX, AX pelo apelidamento de registro: o conteúdo da entrada de RAT para AX, que é um indicador para uma entrada X em PRF, é copiado para a entrada de RAT para DX. Como ilustrado pela Figura 5, em certas implantações, a PRF pode ser fornecida por um arranjo de valores de registro físico e a RAT pode ser fornecida por um arranjo de indicadores para entradas PRF.
[0054] Uma instrução inteira pode modificar não somente um valor de registro de destinação, mas também um ou mais de sinalizadores de status de processador, que inclui, por exemplo, sinalizador de Transporte (C) , sinalizador de Sinal (S) , sinalizador de Paridade (P) , sinalizador de Ajuste (A), sinalizador de Zerar (Z), e/ou sinalizador de Estouro (O) . Para armazenar valores de sinalizador, cada entrada PRF pode incluir, junto com um campo para o valor de dados de registro, um ou mais campos para os valores de sinalizador. Em certas implantações, os sinalizadores de status de processador podem ser' armazenados em dois PRF campos: um campo de bit C para armazenar o valor do sinalizador de Transporte e um campo de bit-5 de SPAZO 5-bit para armazenar os valores de sinalizadores de S, P, A, Z, e O. Se um ou mais bits no campo estão para ser atualizados com um novo valor, os bits permanentes estão para ser atualizados também com a versão anterior dos bits. Em outras palavras, para um dado indicador na execução de programa, uma entrada de PRF única contém os valores atualizados dos sinalizadores no campo para esse indicador de programa. Para agrupamentos C e SPAZO, uma entrada de PRF única ou uma combinação de dois registros físicos são exigidas para representar o estado de sinalizador correto em um dado indicador no programa. Assim, um resultado de uma micro-operação inteira pode incluir um valor de registro de dados de destinação e valores de sinalizador que podem ser gravados dentro de uma entrada de PRF que compreende os três campos mencionados acima. Outras implantações podem agrupar todos os bits sinalizadores dentro de um campo que exige somente uma entrada de PRF para representar o estado de sinalizador em um indicador de programa; outras implantações podem gerir cada bit sinalizador com um campo separado, com a exigência de até seis entradas de PRE para representar o estado de sinalizador em um indicador de programa, para um processador com estado de sinalizador CSPAZO conto descrito anteriormente.
[0055] A RAT pode incluir um ou mais indicadores de valores de sinalizador de mapeamento às entradas PRE. Em certas implantações, a RAT pode incluir uma entrada de mapeamento de valor de sinalizador C para uma entrada PRF e umà entrada que mapeie valores de sinalizador SPAZO para uma entrada PRE. Por conseguinte, sinalizadores de status de processador podem ter suas próprias entradas lógicas na RAT (também referida como "registros lógicos de sinalizador"), mas compartilham entradas PRE com registros de dados: como resultado de uma operação que atualiza, de modo arquitetural ambos, dados e sinalizadores de status, diversas entradas RAT podem ser atualizadas para mapear para a mesma entrada PRF.
[0056] Uma entrada PRF referenciada por múltiplas entradas RAT pode se tornar disponível para uso por instruções subsequentes após os múltiplos indicadores RAT, que incluem dados e indicadores de sinalizador, terem sido regravados por uma ou mais instruções. Por conseguinte, um mecanismo de rastreamento é necessário para rastrear múltiplos indicadores RAT que referencie a uma entrada PRF.
[0057] Em certas implantações, uma estrutura de dados referida como um rastreador de sinalizador pode ser empregada para rastrear uso compartilhado de entradas PRF pelos dados e registros lógicos de sinalizador. O rastreador de sinalizador pode compreender um ou mais conjuntos de campos que representam um ou mais sinalizadores de status. Como mostrado, de modo esquemático, pela Figura 6a, em um exemplo, o rastreador de sinalizador pode ser fornecido por um arranjo bidimensional que tem duas colunas que representam os sinalizadores de status C e SPAZO, respectivamente. 0 bit LDstV pode ser ajustado para indicar que o registro de dados lógico identificado pelo campo LDst compartilha uma entrada PRF com o registro de sinalizador correspondente (por exemplo, C ou SPAZO) . No tempo de alocação, quando um registro lógico for regravado e os sinalizadores também forem regravados (assumindo que não há eliminação de movimento), o registro físico associado pode ser .recuperado após a instrução de regravação se desativar. Quando um registro lógico que atualmente compartilha o registro físico com os sinalizadores for regravado, mas todos ou algum dos sinalizadores não forem regravados, os campos LDstV correspondentes a esses campos sinalizadores serão apagados. Somente após esses grupos de sinalizador particulares também serem regravados que o registro físico pode ser recuperado.
[0058] Em certas implantações, uma estrutura de dados, referida como uma Tabela de Instanciação Múltipla (MIT), pode ser empregada para rastrear referências as entradas PRF. Em certas implantações, a MIT pode armazenar múltiplos conjuntos de bits, onde um conjunto de bits pode representar uma operação de eliminação de movimento e um bit dentro de um conjunto pode representar um registro de dados lógico. A MIT pode ser implantada como um arranjo bidimensional (por exemplo, uma matriz de bit) que tem uma pluralidade de linhas que representam registros lógicos e uma pluralidade de colunas que representam conjuntos de eliminação de movimento, em que um conjunto de bit indica que o registro de dados correspondente participa do conjunto de eliminação de movimento.
[0059] Quando apenas um mapeamento de registro permanece em um conjunto de eliminação de movimento, de modo que a entrada PRF correspondente tenha apenas uma referência permanente, o conjunto de eliminação de movimento fornecido por uma coluna MIT pode ainda não estar disponível para alocação para outra instrução de movimento. Tal conjunto pode ser referido como um conjunto "órfão", visto que tem apenas um mapeamento de registro. Sem alguma ação para apagar um conjunto órfão, o mesmo pode permanecer indisponível até que o último registro lógico seja regravado, assim, reduzindo o número de possíveis eliminações de movimento.
[0060] As Figuras 7a a 7c ilustram, de modo esquemático, diversos exemplos de uso de uma Tabela de Instanciação Múltipla (MIT) para rastreador de entrada do Arquivo de Registro Físico (PRF), em concordância com um ou mais aspectos da presente revelação. Quando uma operação de movimento é eliminada, os bits correspondentes à fonte e aos registros lógicos de destinação podem ser ajustados, indicando que esses registros lógicos são parte do conjunto de eliminação de movimento, como ilustrado, de modo esquemático, pela Figura 7a. Se a fonte da instrução de movimento é um registro lógico que já participa em um conjunto de eliminação de movimento, o registro- lógico de destinação é adicionado ao conjunto, como ilustrado, de modo esquemático, pela Figura 7b. Quando um registro que participa de um conjunto de eliminação de movimento é regravado por outra instrução, o bit MIT (que foi previamente ajustado) correspondente pode ser apagado, assim, dissociar o registro lógico do conjunto de eliminação de movimento, como ilustrado, de modo esquemático, pela Figura 7c. 0 registro físico correspondente que não é uma parte de qualquer conjunto de eliminação de movimento ou é o único membro de um conjunto de eliminação de movimento pode ser reutilizado por uma nova instrução, uma vez que todas as referências ao registro físico tenham sido regravadas por uma ou mais instruções e, de modo subsequente, desativada.
[0061] Os exemplos ilustrados pelas Figuras 7a a 7c não levam em conta um possível compartilhamento de entradas PRF pelos dados e registros lógicos de sinalizador. Em certas implantações, o rastreador de sinalizador pode, adicionalmente, incluir um bit de sinalizador compartilhado que indica se os sinalizadores C e SPAZO compartilham a mesma entrada PRF. Em situações onde um dentre os sinalizadores C ou SPAZO é regravado por uma instrução, o outro registro lógico de sinalizador pode continuar a apontar para a mesma entrada PRF até que o segundo sinalizador também se torne regravado por outra instrução.
[0062] Como ilustrado, de modo esquemático, pela Figura 6b, em um exemplo, o rastreador de sinalizador pode ser melhorado para incluir Validade Eliminação de Movimento (MEV) e campos de Coluna de Eliminação de Movimento (MECol) . O bit MEV pode ser ajustado para indicar que o campo MECol armazena um identificador de validade de uma coluna MIT que representa um conjunto de eliminação de movimento em que o registro de sinalizador compartilha uma entrada PRF com registros lógicos. Em certas implantações, campos LDst e MECol podem ser representados por um campo compartilhado visto que somente um dentre os dois pode ser válido em qualquer momento.
[0063] As Figuras 8a a 8c ilustram um exemplo que emprega o rastreador de sinalizador para rastrear o uso compartilhado de entradas PRF pelo dados e registros lógicos de sinalizador. A Figura 8a mostra o estado inicial do rastreador de sinalizador C: após o registro EAX e o, sinalizador C serem atualizados por uma instrução executada, o bit LDstV é ajustado para indicar que o sinalizador C compartilha uma entrada PRF com o registro lógico identificado pelo campo LDst. A Figura 8b ilustra o resultado de uma operação que copia EAX para EBX: o indicador EAX em RAT é copiado para EBX (não mostrado) ; um conjunto de eliminação de movimento é criado (não mostrado) e inclui EAX, EBX e o sinalizador C associados ao mesmo; no Rastreador de Sinalizador, o bit LDstV é apagado para indicar que o valor de LDst não é mais relevante, o bit MEV é ajustado e o identificador de conjunto de eliminação de movimento (o número da Coluna MIT correspondente) é escrito na MECol. A Figura 8c ilustra o resultado do registro EAX que é regravado com um novo valor sem a atualização do sinalizador C: o campo LDst é atualizado para indicar que o sinalizador C compartilha uma entrada PRF com apenas um registro (EBX), o bit LDstV é ajustado para indicar que o sinalizador C compartilha uma Entrada PRF com o registro lógico identificado pelo campo LDst (EBX) e o bit MEV é apagado para indicar que a MECol não faz referência a um conjunto de eliminação de movimento válido.
[0064] Em certas implantações, a MIT pode ser melhorada para associar um ou mais bits que representam um ou mais registros de sinalizador lógico com cada conjunto de eliminação de movimento. A associação pode ser realizada pela adição de um ou mais bits que representam um ou mais registros de sinalizador lógico para cada coluna MIT. Por conseguinte, uma coluna MIT pode incluir um conjunto de eliminação de movimento (que compreende uma pluralidade de bits que representam registros de dados lógico) e um ou mais bits que representam um ou mais registros de sinalizador lógico. Em certas implantações, um único bit pode representar dois ou mais registros de sinalizador lógico. Em um exemplo, em que um primeiro bit representa o sinalizador C e/ou um segundo bit representa os sinalizadores SPAZO pode ser adicionado para cada coluna MIT.
[0065] Adicionando-se registros de sinalizador lógico a colunas MIT se elimina a necessidade de ajuste dos campos LDst e LDstV no Rastreador de Sinalizador após um conjunto de eliminação de movimento se tornar um órfão (uma situação ilustrada pelo exemplo da Figura 8c) , assim, se simplifica o projeto de sistema e se aprimora a eficiência de execução, como descrito em mais detalhes abaixo, no presente documento, que referenciem aos exemplos das Figuras 9 a 10. 0 propósito em ajustar um bit sinalizador em uma coluna MIT é impedir que a lógica de recuperação de órfão recupere o conjunto de eliminação de movimento correspondente quando apenas um registro de dados lógico permanece no conjunto.
[0066] .Para adicionalmente aprimorar a eficiência de execução, a lógica 150 pode assumir, de modo conservador, que qualquer operação de eliminação de movimento pode incluir um registro lógico que compartilha uma entrada PRF com sinalizadores de status C e SPAZO. Por conseguinte, a lógica de rastreamento pode ajustar, de modo especulativo, os bits sinalizadores (por exemplo, bits sinalizadores C e SPAZO) no MIT responsável por criar ou adicionar um registro a um conjunto de eliminação de movimento. Quando um sinalizador é regravado, o bit MIT correspondente pode ser apagado da todas as colunas no MIT para indicar que o sinalizador não está associado aos conjuntos de eliminação de movimento. Como mencionado no presente documento acima, em certas implantações, apenas operações lógicas e aritméticas podem gravar bits sinalizadores, por conseguinte, o resultado dessas operações é sempre gravado a um novo registro físico que só pode ser compartilhado após uma operação de movimento subsequente.
[0067] Visto que em algumas implantações de bits de sinalizador de MIT podem ser ajustadas de modo especulativo, um bit sinalizador de MIT não indica, necessariamente, que o sinalizador correspondente, compartilha uma entrada PRF com outros membros do conjunto de eliminação de movimento. Para facilitar o rastreamento de sinalizador, a lógica 150 pode gerar vários sinais que refletem atualizações da MIT, que incluem um sinal, referido como MITOvrWrCol, que identifica um conjunto de eliminação de movimento (por exemplo, por um número da coluna MIT correspondente) do qual um registro lógico será removido devido a uma micro-operação alocada e um sinal, referido como LDstlsME, que indica se o registro de destinação para a micro-operação é compartilhado com outro registro lógico. Quando um bit de MEV para um sinalizador é ajustado (indicando que o registro de sinalizador está associado a um conjunto de eliminação de movimento), o sinal MITOvrWrCol corresponde ao MECol (indicando que a operação que é executada libera um registro lógico do conjunto de eliminação de movimento que compartilha uma entrada PRF com o registro lógico de sinalizador), e o sinal LDstlsME é falso (indicando que o registro lógico regravado pelo LDst da operação foi o último registro restante no conjunto de eliminação de movimento), o registro de sinalizador não compartilha mais uma entrada PRF com um registro de dados. Assim, o bit de MEV pode ser apagado e a próxima operação de gravação de sinalizador pode recuperar a entrada PRF.
[0068] A lógica de rastreamento de sinalizador é descrita adicionalmente em referência aos exemplos ilustrados, de modo esquemático, pelas Figuras 9a a 9d e 10a a lOd. Para clareza da descrição, somente uma coluna MIT, um sinalizador de status e 2 registros são mostrados, mas deve ser entendido que uma implantação pode conter uma pluralidade de colunas MIT, uma pluralidade de campos sinalizadores de status e uma pluralidade de registros lógicos.
[0069] Em um exemplo, a Figura 9a mostra o estado inicial da coluna MIT 0 e do Rastreador de Sinalizador C: após o registro EAX e o sinalizador C forem atualizados por uma instrução de execução, o bit de LDstV será ajustado para indicar que o sinalizador C compartilha uma entrada PRF com o registro lógico identificado pelo campo LDst. A Figura 9b ilustra o resultado de uma operação que copia EAX para EBX: o indicador EAX em RAT é copiado para EBX (não mostrado) ; um conjunto de eliminação de movimento que inclui EAX, EBX e o sinalizador C é criado; no Rastreador de Sinalizador, o bit LDstV é apagado para indicar que o valor de Ldst não é mais relevante, bit MEV é ajustado e o identificador de conjunto de eliminação de movimento (o número da coluna de MIT correspondente) é gravado no MECol. A Figura 9c ilustra o resultado de registro EAX que é regravado com um novo valor: a entrada de MIT reflete a remoção de EAX do conjunto de eliminação de movimento pelo apagamento do bit que representa EAX; o Rastreador de Sinalizador permanece o mesmo; a recuperação órfã é desabilitada porque o bit sinalizador ainda está ajustado, indicando que os sinalizadores podem compartilhar uma entrada de PRF com EBX. A Figura 9d ilustra o resultado do registro EBX, que é o último registro de dados restante no conjunto de eliminação de movimento, que é regravado com um novo valor, mas os sinalizadores de status não são regravados: a entrada de MIT reflete a remoção de EBX do conjunto de eliminação de movimento pelo apagamento do bit correspondente; no Rastreador de Sinalizador, o bit MEV é apagado e, por conseguinte, o próximo gravador para sinalizador C irá recuperar a entrada de PRF. Como tal, a coluna de MIT 0 é liberada para ser usada para outra eliminação de movimento; o sinalizador C que não é compartilhado com quaisquer outros registros lógicos e, assim, nenhum compartilhamento necessita ser rastreado em qualquer uma das estruturas. Se o sinalizador C foi atualizado junto com a atualização de EBX, a entrada de PRF seria marcada para recuperação nesse ciclo.
[0070] Em outro exemplo, a Figura 10a mostra o estado inicial de diversas estruturas de dados: após o registro EAX e o sinalizador C serem atualizados por uma instrução executada, o bit LDstV será ajustado para indicar que o sinalizador C compartilha uma entrada PRF com o registro lógico identificado pelo campo LDst. A Figura 10b ilustra o resultado de uma operação de eliminação de movimento MOV EBX, EAX: o indicador EAX na RAT é copiado para EBX (não mostrado) ; um conjunto de eliminação de movimento é criado, que inclui EAX, EBX, e o sinalizador C associado ao mesmo; no Rastreador de Sinalizador, o bit LDstV é apagado, o bit MEV é ajustado e o identificador de conjunto de movimento eliminado (o número da coluna de MIT correspondente) é gravado no MECol. A Figura 10c ilustra o resultado de ambos, registro EAX e sinalizador C, que são regravados com novos valores: a entrada de MIT reflete a remoção de EAX e do sinalizador C do conjunto de eliminação de movimento pelo apagamento dos bits correspondentes; o Rastreador de Sinalizador é atualizado para refletir a associação de sinalizador C e registro EAX: bit LDstV é ajustado e bit MEV é apagado. Por conseguinte, o EBX é o último registro que permanece no conjunto de eliminação de movimento e no próximo ciclo o mecanismo de recuperação de órfão irá recuperar a coluna eliminação de movimento correspondente, como ilustrado, de modo esquemático, pela Figura 10d. Assumindo que EBX não se torna um membro de um novo conjunto eliminado de movimento, a entrada PRF usada pelo EBX será marcada para recuperação na próxima vez que será regravado.
[0071] A Figura 11 retrata um fluxograma de um exemplo de método para rastreamento de sinalizador em operações de eliminação de movimento, em concordância com um ou mais aspectos da presente revelação. O método 800 pode ser realizado por um sistema de computador que pode compreender hardware (por exemplo, conjunto de circuitos), lógica dedicada e/ou lógica programável), software (por exemplo, instruções executáveis em um sistema de computador para realizar simulação de hardware) ou uma combinação dos mesmos. O método 800 e/ou cada uma dentre as funções do mesmo, rotinas, sub- rotinas ou operações podem ser realizadas por um ou mais processadores físicos do sistema de computador que executa o método. Duas ou mais funções, rotinas, sub- rotinas ou operações de método 800 podem ser realizadas em paralelo ou em uma ordem que pode diferir da ordem descrita acima. Em um exemplo, como ilustrado pela Figura 11, o método 800 pode ser realizado pelo sistema de computador 100 da Figura 1.
[0072] Em referência à Figura 11, no bloco 810, um sistema de computador pode armazenar uma pluralidade de valores de registro físico em uma primeira estrutura de dados, referida como PRF.
[0073] No bloco 820, o sistema de computador pode armazenar, em uma segunda estrutura de dados referida como RAT, uma pluralidade de indicadores que referenciam elementos da primeira estrutura de dados.
[0074] No bloco 830, o sistema de computador pode armazenar, em uma terceira estrutura de dados, referida como MIT, uma pluralidade de bits que representam uma pluralidade de registros lógicos.
[0075] No bloco 840, o sistema de computador pode armazenar, em uma quarta estrutura de dados, referida como Rastreador de Sinalizador, um identificador de um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador.
[0076] No bloco 850, o sistema de computador pode realizar uma operação de eliminação de movimento fazendo com que um elemento da segunda estrutura de dados para referência em elemento da primeira estrutura de dados.
[0077] No bloco 860, o sistema de computador pode rastrear, com uso de pelo menos um dentre a terceira estrutura de dados e a quarta estrutura de dados, a disponibilidade de elementos da primeira estrutura de dados. Ao se completarem as operações referenciadas pelo bloco 850, o método pode terminar.
[0078] A Figura 12 retrata um diagrama de blocos de um exemplo de sistema de computador, em concordância com um ou mais aspectos da presente revelação. Como mostrado na Figura 12, o sistema multiprocessador 700 é um sistema de interconexão ponto a ponto e que inclui um primeiro processador 770 e um segundo processador 780 acoplado através de uma interconexão ponto a ponto 750. Cada um dentre os processadores 77 0 e 7 80 pode ser alguma versão do processador 102 capaz de executar operações de acesso de memória transacional e/ou operações de acesso de memória não transacional, como descrito em mais detalhes, acima, no presente documento.
[0079] Embora mostrado com apenas dois processadores 77 0, 7 80, deve ser entendido que o escopo da presente invenção não é tão limitado. Em outras modalidades, um ou mais processadores adicionais podem estar presentes e um dado processador.
[0080] Os processadores 770 e 780 são mostrados com a inclusão de unidades de controlador de memória integrada 772 e 782, respectivamente. O processor 770 também inclui como parte do barramento controlador do mesmo, interfaces de unidades ponto a ponto (P-P) 776 e 778; de modo similar, o segundo processador 780 inclui interfaces de P-P 786 e 788. Os processadores 770, 780 podem trocar informações através de uma interface ponto a ponto (P-P) 750 que usam circuitos de interface P-P 778, 788. Como mostrado na Figura 12, IMCs 772 e 782 acoplam os processadores às respectivas memórias, a saber, uma memória 732 e uma memória 734, que podem ser porções da memória principal anexada localmente aos respetivos processadores.
[0081] Os processadores 770, 780 podem, cada um, trocar informações com um chipset 790 através de interfaces de P-P individuais 752, 754 que usam circuitos de interface ponto a ponto 776, 794, 786, 798. O chipset 790 pode também trocar informações com um circuito de gráficos de alto desempenho 738 através de uma interface de gráficos de alto desempenho 739.
[0082] Um cache compartilhado (não mostrado) pode ser incluído em qualquer processador ou fora de ambos os processadores, ainda conectado com o processador através de interconexão de P-P, de tal modo que qualquer uma ou ambas as informações de cache local de processadores podem ser armazenadas no cache compartilhado se um processador é submetido a um modo de baixo consumo de energia.
[0083] O chipset 7 90 pode ser acoplado a um primeiro barramento 716 através de uma interface 796. Em uma modalidade, o primeiro barramento 716 pode ser um barramento de Interconexão de Componente Periférico (PCI), ou um barramento tal como um barramento Expresso de PCI ou outro barramento de interconexão de terceira geração de I/O, embora o escopo da presente invenção não seja tão limitado.
[0084] Como mostrado na Figura 12, vários dispositivos de I/O 714 podem ser acoplados ao primeiro barramento 716, junto com uma ponte de barramento 718 que acopla o primeiro barramento 716 a um segundo barramento 720. Em uma modalidade, o segundo barramento 72 0 pode ser um barramento de contagem de pinos baixo (LPC) . Vários dispositivos podem ser acoplados ao segundo barramento 720 que inclui, por exemplo, um teclado e/ou mouse 722, dispositivos de comunicação 727 e uma unidade de armazenamento 72 8 tal como uma unidade de disco ou outro dispositivo de armazenamento de massa que pode incluir instruções/códigos e dados 73 0, em uma modalidade. Adicionalmente, um I/O de áudio 724 pode ser acoplado ao segundo barramento 720. É mencionado que outras arquiteturas são possíveis. Por exemplo, como alternativa da arquitetura ponta a ponto da Figura 12, um sistema pode implantar um barramento multidrop ou outra tal arquitetura.
[0085] Os exemplos a seguir ilustram várias implantações em concordância com um ou mais aspectos da presente revelação.
[0086] O Exemplo 1 é um sistema de processamento que compreende: uma primeira estrutura de dados que inclui uma pluralidade de valores de registro físico; uma segunda estrutura de dados que inclui uma pluralidade de indicadores que referenciam elementos da primeira estrutura de dados; uma terceira estrutura de dados que inclui uma pluralidade de conjuntos de eliminação de movimento, em que cada conjunto de eliminação de movimento que compreende dois ou mais bits representa dois ou mais registros de dados lógicos, a terceira estrutura de dados que compreende, adicionalmente, pelo menos um bit associado a cada conjunto de eliminação de movimento, em que pelo menos um bit representa um ou mais registros de sinalizador lógico; uma quarta estrutura de dados que inclui um identificador de um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador; e a lógica de eliminação de movimento configurada para realizar uma operação de eliminação de movimento fazendo com que um elemento da segunda estrutura de dados para referência de um elemento da primeira estrutura de dados, sendo que a lógica de eliminação de movimento configurada, adicionalmente, para rastrear com o uso de pelo menos um dentre a terceira estrutura de dados e a quarta estrutura de dados, a disponibilidade elementos da primeira estrutura de dados. .
[0087] No Exemplo 2, a lógica de eliminação de movimento do sistema de processamento do Exemplo 1 pode ser configurada para mudar um valor de um bit sinalizador na terceira estrutura de dados responsivo a pelo menos um dentre: criar um novo conjunto de eliminação de movimento, adicionar um registro a um conjunto de eliminação de movimento ou gravar dados novos para um registro de sinalizador na primeira estrutura de dados.
[0088] No Exemplo 3, a lógica de eliminação de movimento do sistema de processamento do Exemplo 1 pode ser configurada para detectar e recuperar um conjunto de eliminação de movimento que tem somente um bit diferente de zero.
[0089] No Exemplo 4, a lógica de eliminação de movimento do sistema de processamento do Exemplo 1 que pode ser configurado para cancelar a recuperação1 de um conjunto de eliminação de movimento tem pelo menos um bit diferente de zero, responsivo para determinar que pelo menos um bit associado ao conjunto de eliminação de movimento e representar que um registro de sinalizador lógico tem um valor diferente de zero.
[0090] No Exemplo 5, a quarta estrutura de dados do sistema de processamento do Exemplo 1 pode compreender: uma validade indicativa de bit do conjunto de eliminação de movimento, um bit que indica que um registro de sinalizador lógico compartilha uma entrada da primeira estrutura de dados com o registro de dados, um primeiro identificador que identifica um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador e um segundo identificador que identifica um conjunto de eliminação de movimento.
[0091] No Exemplo 6, o primeiro identificador e o segundo identificador do sistema de processamento do Exemplo 5 pode ser representado por um campo de dados comum.
[0092] No Exemplo 7, a lógica de eliminação de movimento do sistema de processamento do Exemplo 1 pode ser configurada, adicionalmente, para gerar um primeiro sinal que identifica um conjunto de eliminação de movimento que tem um ou mais registros locais regravados por uma micro-operação alocada e um segundo sinal que indica um uso compartilhado de um registro de destinação para a micro-operação.
[0093] No Exemplo 8, a lógica de eliminação de movimento do sistema de processamento do Exemplo 7 pode ser configurada, adicionalmente, para atualizar a quarta estrutura de dados para indicar que um registro de sinalizador não compartilha mais um elemento da primeira estrutura de dados com um registro de dados, responsivo para determinar que um registro de sinalizador lógico correspondente ao registro de sinalizador está associado a um primeiro conjunto de eliminação de movimento, em que o primeiro sinal corresponde ao identificador do primeiro conjunto de eliminação de movimento e o segundo sinal é falso.
[0094] O Exemplo 9 é um método de realização de uma operação de manipulação de dados que compreende: armazenar, por um sistema de computador, uma pluralidade de valores de registro físico em uma primeira estrutura de dados; armazenar, em uma segunda estrutura de dados, uma pluralidade de indicadores que referenciam elementos da primeira estrutura de dados; armazenar, em uma terceira estrutura de dados, uma pluralidade de conjuntos de eliminação de movimento e pelo menos um bit associado a cada conjunto de eliminação de movimento, em que pelo menos um bit representa um ou mais registros de sinalizador lógico, sendo que cada conjunto de eliminação de movimento compreende dois ou mais bits que representam dois ou mais registros de dados lógicos; armazenar, em uma quarta estrutura de dados, um identificador de um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador; realizar uma operação de eliminação de movimento fazendo com que um elemento da segunda estrutura■ de dados para referência a um elemento da primeira estrutura de dados; e rastrear, com o uso de pelo menos um dentre a terceira estrutura de dados e a quarta estrutura de dados, a disponibilidade elementos da primeira estrutura de dados.
[0095] No Exemplo 10, o método do Exemplo 9 pode, adicionalmente, compreender uma mudança de valor de um bit sinalizador na terceira estrutura de dados responsiva por pelo menos um dentre: criar um novo conjunto de eliminação de movimento, adicionar um registro a um conjunto de eliminação de movimento ou gravar dados novos a um registro de sinalizador na primeira estrutura de dados.
[0096] No Exemplo 11, o método do Exemplo 9 pode, adicionalmente, compreender a detecção e recuperação de um conjunto de eliminação de movimento que tem apenas um bit diferente de zero.
[0097] No Exemplo 12, o método do Exemplo 11 pode, adicionalmente, compreender o cancelamento de recuperação de um conjunto de eliminação de movimento que tem pelo menos um bit diferente de zero, responsive para determinar que pelo menos um bit associado ao conjunto de eliminação de movimento e representar que um registro de sinalizador lógico tem um valor diferente de zero.
[0098] No Exemplo 13, a quarta estrutura de dados do método do Exemplo 9 pode compreender: uma validade indicativa de bit do conjunto de eliminação de movimento, um bit que indica que um registro de sinalizador lógico compartilha uma entrada da primeira estrutura de dados com o registro de dados, um primeiro identificador que identifica um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador e um segundo identificador que identifica um conjunto de eliminação de movimento.
[0099] No Exemplo 14, o primeiro identificador e o segundo identificador do método do Exemplo 13 pode ser representado por um campo de dados comum.
[00100] No Exemplo 15, o método do Exemplo 9 pode, adicionalmente, compreender a geração de um primeiro sinal que identifica um conjunto de eliminação de movimento que tem um ou mais registros locais regravados por uma micro-operação alocada e um segundo sinal que indica um uso compartilhado de um registro de destinação para a micro-operação.
[00101] No Exemplo 16, o método do Exemplo 15 pode, adicionalmente, compreender a atualização da quarta estrutura de dados para indicar que um registro de sinalizador não compartilha mais um elemento da primeira estrutura de dados com um registro de dados, responsive para determinar que um registro de sinalizador lógico correspondente ao registro de sinalizador está associado a um primeiro conjunto de eliminação de movimento, em que o primeiro sinal corresponde ao identificador do primeiro conjunto de eliminação de movimento e o segundo sinal é falso.
[00102] O Exemplo 17 é um aparelho que compreende a memória e um sistema de processamento acoplado à memória, em que o sistema de processamento está configurado para realizar o método de qualquer um dentre os Exemplos 9 a 16.
[00103] O Exemplo 18 é um meio de armazenamento não transitório legível por computador que compreende instruções executáveis que, quando executadas por um sistema de computador, fazem com que o sistema de computador realize operações, que compreende: armazenar, por um sistema de computador, uma pluralidade de valores de registro físico em uma primeira estrutura de dados; armazenar, em uma segunda estrutura de dados, uma pluralidade de indicadores que referenciam elementos da primeira estrutura de dados; armazenar, em uma terceira estrutura de dados, uma pluralidade de conjuntos de eliminação de movimento e pelo menos um bit associado a cada conjunto de eliminação de movimento, em que pelo menos um bit representa um ou mais registros de sinalizador lógico, sendo que cada conjunto de eliminação de movimento que compreende dois ou mais bits representa dois ou mais registros de dados lógicos; armazenar, em uma quarta estrutura de dados, um identificador de um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador; realizar uma operação de eliminação de movimento fazendo com que um elemento da segunda estrutura de dados para referência de um elemento da primeira estrutura de dados; e rastrear, com o uso de pelo menos um dentre a terceira estrutura de dados e a quarta estrutura de dados, a disponibilidade de elementos da primeira estrutura de dados.
[00104] No Exemplo 19, o meio de armazenamento não transitório legível por computador do Exemplo 18 pode, adicionalmente, compreender instruções executáveis que fazem com que o sistema de computador mude um valor de um bit sinalizador na terceira estrutura de dados responsiva para pelo menos um dentre: criar um novo conjunto de eliminação de movimento, adicionar um registro a um conjunto de eliminação de movimento ou gravar dados novos para um registro de sinalizador na primeira estrutura de dados.
[00105] No Exemplo 20, o meio de armazenamento não transitório legível por computador do Exemplo 18 pode, adicionalmente, compreender instruções executáveis que fazem com que sistema de computador detecte e recupere um conjunto de eliminação de movimento que tem apenas um bit diferente de zero.
[00106] No Exemplo 21, o meio de armazenamento não transitório legível por computador do Exemplo 20 pode, adicionalmente, compreender instruções executáveis que fazem com que o sistema de computador cancele a recuperação de um conjunto de eliminação de movimento que tem pelo menos um bit diferente de zero, responsivo para determinar que pelo menos um bit está associado ao conjunto de eliminação de movimento e representar que um registro de sinalizador lógico tem um valor diferente de zero.
[00107] No Exemplo 22, a quarta estrutura de dados do meio de armazenamento não transitório legível por computador do Exemplo 18 pode compreender: uma validade indicativa de bit do conjunto de eliminação de movimento, um bit que indica que um registro de sinalizador lógico compartilha uma entrada da primeira estrutura de dados com o registro de dados, um primeiro identificador que identifica um registro de dados que compartilha um elemento da primeira estrutura de dados com um registro de sinalizador e um segundo identificador que identifica um conjunto de eliminação de movimento.
[00108] No Exemplo 23, o primeiro identificador e o segundo identificador do Exemplo 22 pode ser representado por um campo de dados comum.
[00109] No Exemplo 24, o meio de armazenamento não transitório legível por computador do Exemplo 18 pode, adicionalmente, compreender instruções executáveis que fazem com que o sistema de computador gere um primeiro sinal que identificar um conjunto de eliminação de movimento que tem um ou mais registros locais regravados por uma micro-operação alocada e uma segundo sinal que indica um uso compartilhado de um registro de destinação para a micro-operação.
[00110] No Exemplo 25, o meio de armazenamento não transitório legível por computador do Exemplo 18 pode, adicionalmente compreender instruções executáveis que fazem com que o sistema de computador atualize a quarta estrutura de dados para indicar que um registro de sinalizador não compartilha mais um elemento da primeira estrutura de dados com um registro de dados, responsivo para determinar que um registro de sinalizador lógico correspondente ao registro de sinalizador está associado a um primeiro conjunto de eliminação de movimento, em que o primeiro sinal corresponde ao identificador do primeiro conjunto de eliminação de movimento e o segundo sinal é falso.
[00111] Algumas porções da descrição detalhada são apresentadas em termos de representações de algoritmos e simbólicas de operações em bits de dados dentro de uma memória de computador. Essas descrições e representações de algoritmo são os meios usados por pessoas versadas na técnica de processamento de dados para transmitir, de modo mais eficaz, a essência do trabalho para outras pessoas versadas na técnica. Um algoritmo é no presente contexto é em geral, transmitido para ser uma sequência auto consistente de operações que conduz a um resultado desejado. As operações são aquelas que exigem manipulação física de quantidades físicas. Usualmente, embora não necessariamente, essas quantidades tomam a forma de sinais elétricos ou magnéticos capazes de ser armazenados, transferidos, combinados, comparados e, de outro modo, manipulados. Revelou-se conveniente, em tempos, principalmente para razões de uso comum, para se referir aos sinais como bits, valores, elementos, símbolos, caracteres, termos, números ou similares.
[00112] Entretanto, se deve ter em mente, que todos os termos e similares são para ser associados às quantidades físicas apropriadas e são, meramente, rótulos convenientes aplicados às quantidades. A menos que seja especificamente definidos de outra forma, como evidente na discussão acima, será apreciado que ao longo da descrição, discussões utilizando termos tais como "criptografar", "descriptografar", "armazenar", "fornecer", "derivar", "obter", "receber", "autenticar", "excluir", "executar", "solicitar", "comunicar" ou similares, se refere à ações e processos de um sistema de computador ou dispositivo de computação eletrônica similar, que manipula e transforma dados representados como quantidades físicas (por exemplo, eletrônico) dentro dos registros de sistema de computação e memórias dentro de outros dados representados, de modo similar, como quantidades físicas dentro das memórias ou registros do sistema de computador ou outro tal dispositivo de armazenamento de informação, transmissão ou exibição.
[00113] As palavras "exemplo" ou "exemplificativo" são usadas no presente documento para significar que serve como um exemplo, ocorrência ou ilustração. Qualquer aspecto ou projeto descritos no presente documento como "exemplo" ou "exemplificativo" não é, necessariamente, para ser interpretado como preferido ou vantajoso sobre outros aspectos ou projetos. De preferência, o uso de palavras "exemplo" ou "exemplificativo" tem como objetivo apresentar conceitos de modo concreto. Como usado neste pedido, o termo "ou" tem como objetivo significar um "ou" inclusivo ao invés de um "ou" exclusivo. Isto é, ao menos que seja especificado de outre forma ou que fique claro a partir do contexto, "X inclui A- ou B" significa qualquer uma dentre as permutações naturais inclusivas. Isto é, se X inclui A; X inclui B; ou X inclui ambos, A e B, então, "X inclui A ou B" é satisfeito sob quaisquer das ocorrências supracitadas. Adicionalmente, os artigos "um" "uma" como usados neste pedido e as reivindicações anexas devem, de modo geral, serem interpretadas para significar "um ou mais" a menos que sejam especificadas de outra forma ou claras pelo contexto para serem direcionadas a uma forma singular. Além disso, o uso do termo "uma modalidade" ou "uma (1) modalidade" ou "uma implantação" ou "uma (1) implantação" ao longo do presente documento não tem como objetivo significar a mesma modalidade ou implantação a menos que descritos como tal. Além disso, os termos "primeiro", "segundo", "terceiro", "quarto", etc. como usado no presente documento são meios, como rótulos, para se distinguir entre elementos diferentes e pode não ter, necessariamente, um significado ordinal de acordo com as designações numéricas.
[00114] As modalidades descritas no presente documento também podem se referir a um aparelho para realização de operações no presente documento. O aparelho pode ser construído especialmente para o propósito exigido ou pode compreender um computador de propósito geral ativado ou reconfigurado, seletivamente, por um programa de computador armazenado no computador. Tal programa de computador pode ser armazenado em um meio de armazenamento não transitório legível por computador, tal como, mas sem limitação a qualquer tipo de disco que inclui disco flexível, disco óptico CD-ROMs, disco óptico magnético memórias somente de leitura (ROMs), memórias de apenas leituras (RAMs), EPROMs, EEPROMs, cartões magnéticos ou ópticos, memória flash ou qualquer tipo de mídia adequada para armazenar instruções eletrônicas. O termo "meio de armazenamento legível por computador" deve ser tomado para incluir um meio único ou uma mídia múltipla (por exemplo, um banco de dados centralizado ou distribuído e/ou caches e servidores associados) que armazenam um ou mais conjuntos de instruções. 0 termo "meio legível por computador" deve também ser tomado para incluir qualquer meio que seja capaz de armazenamento, codificação ou transporte de um conjunto de instruções para execução pela máquina e isso que fazem com que a máquina realize qualquer uma ou mais metodologias das presentes modalidades. O termo "meio de armazenamento legível por computador" deve, consequentemente, ser tomado para incluir, mas sem limitação a memórias de estado sólido, mídia óptica, mídia magnética, qualquer meio que seja capaz de armazenar um conjunto de instruções para execução pela máquina e que que fazem com que a máquina realize qualquer uma ou mais das metodologias das presentes modalidades.
[00115] Os algoritmos e as exibições apresentadas no presente documento não são, inerentemente, relacionados a qualquer computador particular ou outro aparelho. Vários sistemas de proposta geral podem ser usados com programas em concordância com os ensinamentos do presente documento ou pode provar conveniência para construir um aparelho mais especializado para realizar as operações de método exigidos. A estrutura exigida para uma variedade de sistemas irá aparecer a partir da descrição abaixo. Adicionalmente, as presentes modalidades não são descritas em referência a qualquer linguagem de programação particular. Será apreciado que uma variedade de linguagens de programação pode ser usada para implantar os ensinamentos das modalidades como descritas no presente documento.
[00116] A descrição acima apresenta detalhes específicos numerosos tais como exemplos de sistemas específicos, componentes, métodos e assim por diante, com o objetivo de fornecer um bom entendimento de diversas modalidades. Entretanto, será evidente para pessoas versadas na técnica, que pelo menos algumas modalidades podem ser praticadas sem detalhes específicos. Em outros casos, componentes ou métodos bem conhecidos não são descritos em detalhes ou são apresentados em formato de diagrama de blocos simples com o objetivo de evitar que obscureça, desnecessariamente, a presente modalidade. Assim, os detalhes específicos apresentados acima são, meramente, exemplificativos. Implantações particulares podem variar dos detalhes exemplificativos e ainda ser contemplado para estar dentro do escopo das presentes modalidades.
[00117] Deve ser entendido que a descrição acima tem o objetivo de ser ilustrativa e não restritiva. Muitas outras modalidades serão evidentes paras as pessoas versadas na técnica, mediante a leitura e entendimento da descrição acima. O escopo das presentes modalidades deve, então, ser determinado em referência às reivindicações anexas, junto com o escopo completo de equivalentes aos quais tais reivindicações são intituladas.

Claims (15)

1. Sistema de processamento caracterizado por compreender: uma primeira estrutura de dados (423) que compreende uma pluralidade de entradas, cada uma da pluralidade de entradas incluindo um valor de registrador físico e um ou mais valores de sinalizador; uma segunda estrutura de dados (421) que inclui uma pluralidade de indicadores que mapeiam identificadores de registrador lógico a entradas da primeira estrutura de dados, e um ou mais registradores lógicos de sinalizador que mapeiam um valor de sinalizador a uma entrada na primeira estrutura de dados; uma terceira estrutura de dados (425) que inclui uma pluralidade de conjuntos de eliminação de movimento compreendendo um conjunto de bits representando uma operação de eliminação de movimento, um bit representando um registrador de dados lógico, e indicando quando o conjunto que o registrador de dados lógicos correspondente deve participar na operação de eliminação de movimento, a terceira estrutura de dados compreende adicionalmente pelo menos um bit associado a cada conjunto de eliminação de movimento, o pelo menos um bit representando um ou mais registradores de sinalizador lógico; uma quarta estrutura de dados (427) que inclui um identificador de um registrador de dados lógico que compartilha uma entrada da primeira estrutura de dados com um registrador de sinalizador lógico; e uma lógica de eliminação de movimento (150) configurada para realizar uma operação de eliminação de movimento fazendo com que um indicador de registrador lógico de fonte da segunda estrutura de dados referencie um elemento da primeira estrutura de dados a ser copiada a um indicador de registrador lógico de destinação da segunda estrutura de dados, em que a lógica de eliminação de movimento é configurada adicionalmente para rastrear, com o uso de pelo menos uma dentre a terceira estrutura de dados e a quarta estrutura de dados, a disponibilidade de entradas da primeira estrutura de dados para uso pelas instruções subsequentes, em que uma entrada da primeira estrutura de dados referenciada pelos múltiplos segundos indicadores de estrutura de dados torna-se disponível para uso por instruções subsequentes depois dos múltiplos segundos indicadores de estrutura de dados, incluindo registrador lógico e indicadores de sinalizador, foram regravados por uma ou mais instruções.
2. Sistema de processamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a lógica de eliminação de movimento (150) é para mudar um valor de um bit sinalizador na terceira estrutura de dados (425) responsiva a pelo menos um dentre: criar um novo conjunto de eliminação de movimento, adicionar um registrador a um conjunto de eliminação de movimento ou gravar dados novos para um registrador de sinalizador na primeira estrutura de dados.
3. Sistema de processamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a lógica de eliminação de movimento (150) é adicionalmente para detectar e recuperar um conjunto de eliminação de movimento que tem apenas um bit diferente de zero.
4. Sistema de processamento, de acordo com a reivindicação 3, caracterizado pelo fato de que a lógica de eliminação de movimento (150) é para cancelar a recuperação de um conjunto de eliminação de movimento que tem pelo menos um bit diferente de zero, responsivo para determinar pelo menos um bit associado ao conjunto de eliminação de movimento e representar um registrador de sinalizador lógico que tem um valor diferente de zero.
5. Sistema de processamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a quarta estrutura de dados (427) compreende: uma validade indicativa de bit do conjunto de eliminação de movimento, um bit que indica que um registrador de sinalizador lógico compartilha uma entrada da primeira estrutura de dados com o registrador de dados, um primeiro identificador que identifica um registrador de dados que compartilha um elemento da primeira estrutura de dados com um registrador de sinalizador, e um segundo identificador que identifica um conjunto de eliminação de movimento.
6. Sistema de processamento, de acordo com a reivindicação 5, caracterizado pelo fato de que o primeiro identificador e o segundo identificador são representados por um campo de dados comum.
7. Sistema de processamento, de acordo com a reivindicação 1, caracterizado pelo fato de que a lógica de eliminação de movimento (150) é adicionalmente para gerar um primeiro sinal que identifica um conjunto de eliminação de movimento que tem um ou mais registradores locais regravados por uma micro-operação alocada, e um segundo sinal que indica um uso compartilhado de um registrador de destinação para a micro-operação.
8. Sistema de processamento, de acordo com a reivindicação 7, caracterizado pelo fato de que a lógica de eliminação de movimento (150) é adicionalmente para atualizar a quarta estrutura de dados para indicar que um registrador de sinalizador não compartilha mais um elemento da primeira estrutura de dados com um registrador de dados, responsivo para determinar que um registrador de sinalizador lógico que corresponde ao registrador de sinalizador é associado a um primeiro conjunto de eliminação de movimento, o primeiro sinal corresponde ao identificador do primeiro conjunto de eliminação de movimento, e o segundo sinal é falso.
9. Método de realização de uma operação de manipulação de dados, caracterizado por compreender: armazenar, por um sistema de computador, uma pluralidade de entradas, cada uma da pluralidade de entradas incluindo um valor de registrador físico e um ou mais valores de sinalizador, em uma primeira estrutura de dados (810); armazenar, em uma segunda estrutura de dados, uma pluralidade de indicadores que mapeiam identificadores de registrador lógico a entradas da primeira estrutura de dados, e um ou mais registradores lógicos de sinalizador que mapeiam um valor de sinalizador a uma entrada na primeira estrutura de dados (820); armazenar, em uma terceira estrutura de dados, uma pluralidade de conjuntos de eliminação de movimento compreendendo um conjunto de bits representando uma operação de eliminação de movimento, um bit representando um registrador de dados lógico e indicando quando o conjunto que o registrador de dados lógicos correspondente deve participar na operação de eliminação de movimento, armazenando adicionalmente na terceira estrutura de dados pelo menos um bit associado a cada conjunto de eliminação de movimento, o pelo menos um bit representando um ou mais registradores de sinalizador lógico (830); armazenar, em uma quarta estrutura de dados, um identificador de um registrador de dados lógico que compartilha uma entrada da primeira estrutura de dados com um registrador de sinalizador lógico (840); e realizar uma operação de eliminação de movimento fazendo com que um indicador de registrador lógico de fonte da segunda estrutura de dados referencie um elemento da primeira estrutura de dados a ser copiada a um indicador de registrador lógico de destinação da segunda estrutura de dados (850); e rastrear, com o uso de pelo menos uma dentre a terceira estrutura de dados e a quarta estrutura de dados, a disponibilidade de entradas da primeira estrutura de dados para uso pelas instruções subsequentes (860), em que uma entrada da primeira estrutura de dados referenciada pelos múltiplos segundos indicadores de estrutura de dados torna-se disponível para uso por instruções subsequentes depois dos múltiplos segundos indicadores de estrutura de dados, incluindo registrador lógico e indicadores de sinalizador, foram regravados por uma ou mais instruções.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente mudar um valor de um bit sinalizador na terceira estrutura de dados responsiva a pelo menos um dentre: criar um novo conjunto de eliminação de movimento, adicionar um registrador a um conjunto de eliminação de movimento ou gravar novos dados a um registrador de sinalizador na primeira estrutura de dados.
11. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente detectar e recuperar um conjunto de eliminação de movimento que tem apenas um bit diferente de zero.
12. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que a quarta estrutura de dados compreende: uma validade indicativa de bit do conjunto de eliminação de movimento, um bit que indica que um registrador de sinalizador lógico compartilha uma entrada da primeira estrutura de dados com o registrador de dados, um primeiro identificador que identifica um registrador de dados que compartilha um elemento da primeira estrutura de dados com um registrador de sinalizador e um segundo identificador que identifica um conjunto de eliminação de movimento.
13. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que compreende adicionalmente gerar um primeiro sinal que identifica um conjunto de eliminação de movimento que tem um ou mais registradores locais regravados por uma micro-operação alocada, e um segundo sinal que indica um uso compartilhado de um registrador de destinação para a micro-operação.
14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que compreende adicionalmente atualizar a quarta estrutura de dados para indicar que um registrador de sinalizador não compartilha mais um elemento da primeira estrutura de dados com um registrador de dados, responsivo para determinar que um registrador de sinalizador lógico que corresponde ao registrador de sinalizador é associado a um primeiro conjunto de eliminação de movimento, o primeiro sinal corresponde ao identificador do primeiro conjunto de eliminação de movimento e o segundo sinal é falso.
15. Mídia de armazenamento não transitória legível por computador, compreendendo instruções executáveis que, quando executadas por um sistema de computador, fazem com que o sistema de computador realize operações, caracterizada por compreender: armazenar, por um sistema de computação, uma pluralidade de entradas, cada uma da pluralidade de entradas incluindo um valor de registrador físico e um ou mais valores de sinalizador, em uma primeira estrutura de dados; armazenar, em uma segunda estrutura de dados, uma pluralidade de indicadores que mapeiam identificadores de registrador lógico a entradas da primeira estrutura de dados, e um ou mais registradores lógicos de sinalizador que mapeiam um valor de sinalizador a uma entrada na primeira estrutura de dados; armazenar, em uma terceira estrutura de dados, uma pluralidade de conjuntos de eliminação de movimento compreendendo um conjunto de bits representando uma operação de eliminação de movimento, um bit representando um registrador de dados lógico e indicando quando o conjunto que o registrador de dados lógicos correspondente deve participar na operação de eliminação de movimento, armazenando adicionalmente na terceira estrutura de dados pelo menos um bit associado a cada conjunto de eliminação de movimento, o pelo menos um bit representando um ou mais registradores de sinalizador lógico; armazenar, em uma quarta estrutura de dados, um identificador de um registrador de dados lógico que compartilha uma entrada da primeira estrutura de dados com um registrador de sinalizador lógico; realizar uma operação de eliminação de movimento ao fazer com que um indicador de registrador lógico de fonte da segunda estrutura de dados referencie um elemento da primeira estrutura de dados a ser copiada a um indicador de registrador lógico de destinação da segunda estrutura de dados; e rastrear, com o uso de pelo menos uma dentre a terceira estrutura de dados e a quarta estrutura de dados, a disponibilidade de entradas da primeira estrutura de dados para uso pelas instruções subsequentes, em que uma entrada da primeira estrutura de dados referenciada pelos múltiplos segundos indicadores de estrutura de dados torna-se disponível para uso por instruções subsequentes depois dos múltiplos segundos indicadores de estrutura de dados, incluindo registrador lógico e indicadores de sinalizador, foram regravados por uma ou mais instruções.
BR112015022683-3A 2013-04-11 2014-04-09 Sistema de processamento e método de realização de uma operação de manipulação de dados BR112015022683B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/861,009 2013-04-11
US13/861,009 US9292288B2 (en) 2013-04-11 2013-04-11 Systems and methods for flag tracking in move elimination operations
PCT/US2014/033486 WO2014169032A1 (en) 2013-04-11 2014-04-09 Systems and methods for flag tracking in move elimination operations

Publications (2)

Publication Number Publication Date
BR112015022683A2 BR112015022683A2 (pt) 2018-07-31
BR112015022683B1 true BR112015022683B1 (pt) 2021-12-21

Family

ID=51687620

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112015022683-3A BR112015022683B1 (pt) 2013-04-11 2014-04-09 Sistema de processamento e método de realização de uma operação de manipulação de dados

Country Status (8)

Country Link
US (1) US9292288B2 (pt)
EP (1) EP2984557B1 (pt)
KR (1) KR101655713B1 (pt)
CN (1) CN105190538B (pt)
BR (1) BR112015022683B1 (pt)
RU (1) RU2628156C2 (pt)
TW (1) TWI528291B (pt)
WO (1) WO2014169032A1 (pt)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9823925B2 (en) * 2014-03-28 2017-11-21 Intel Corporation Instruction and logic for a logical move in an out-of-order processor
US10853077B2 (en) 2015-08-26 2020-12-01 Huawei Technologies Co., Ltd. Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability
US11221853B2 (en) 2015-08-26 2022-01-11 Huawei Technologies Co., Ltd. Method of dispatching instruction data when a number of available resource credits meets a resource requirement
US10198264B2 (en) * 2015-12-15 2019-02-05 Intel Corporation Sorting data and merging sorted data in an instruction set architecture
US20170177336A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Hardware cancellation monitor for floating point operations
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10114768B2 (en) * 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
EP3519970A1 (en) * 2016-09-28 2019-08-07 INTEL Corporation Measuring per-node bandwidth within non-uniform memory access (numa) systems
US10282296B2 (en) * 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
US10949205B2 (en) 2018-12-20 2021-03-16 International Business Machines Corporation Implementation of execution compression of instructions in slice target register file mapper
CN112286577B (zh) * 2020-10-30 2022-12-06 上海兆芯集成电路有限公司 处理器及其操作方法
CN117555600A (zh) * 2023-10-20 2024-02-13 海光信息技术(成都)有限公司 用于数据通路的操作方法、计算装置及存储介质

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499352A (en) 1993-09-30 1996-03-12 Intel Corporation Floating point register alias table FXCH and retirement floating point register array
US6047369A (en) * 1994-02-28 2000-04-04 Intel Corporation Flag renaming and flag masks within register alias table
US5838941A (en) 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US6341370B1 (en) * 1998-04-24 2002-01-22 Sun Microsystems, Inc. Integration of data prefetching and modulo scheduling using postpass prefetch insertion
US6122656A (en) * 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6253310B1 (en) * 1998-12-31 2001-06-26 Intel Corporation Delayed deallocation of an arithmetic flags register
US6625723B1 (en) * 1999-07-07 2003-09-23 Intel Corporation Unified renaming scheme for load and store instructions
US6594754B1 (en) * 1999-07-07 2003-07-15 Intel Corporation Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
US6505293B1 (en) 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US6591332B1 (en) 2000-04-28 2003-07-08 Hewlett-Packard Development Company, L.P. Apparatus and method for tracking flushes of cache entries in a data processing system
US7155599B2 (en) * 2000-12-29 2006-12-26 Intel Corporation Method and apparatus for a register renaming structure
US6772317B2 (en) * 2001-05-17 2004-08-03 Intel Corporation Method and apparatus for optimizing load memory accesses
US6889344B2 (en) 2001-08-09 2005-05-03 International Business Machines Corporation System and method for exposing hidden events on system buses
US6910121B2 (en) 2002-01-02 2005-06-21 Intel Corporation System and method of reducing the number of copies from alias registers to real registers in the commitment of instructions
US20030217249A1 (en) * 2002-05-20 2003-11-20 The Regents Of The University Of Michigan Method and apparatus for virtual register renaming to implement an out-of-order processor
US20050050310A1 (en) 2003-07-15 2005-03-03 Bailey Daniel W. Method, system, and apparatus for improving multi-core processor performance
US7711898B2 (en) * 2003-12-18 2010-05-04 Intel Corporation Register alias table cache to map a logical register to a physical register
US7895382B2 (en) 2004-01-14 2011-02-22 International Business Machines Corporation Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
WO2009076324A2 (en) 2007-12-10 2009-06-18 Strandera Corporation Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system
US8799882B2 (en) * 2005-12-07 2014-08-05 Microsoft Corporation Compiler support for optimizing decomposed software transactional memory operations
US7721119B2 (en) 2006-08-24 2010-05-18 International Business Machines Corporation System and method to optimize multi-core microprocessor performance using voltage offsets
TWI342498B (en) 2007-01-12 2011-05-21 Asustek Comp Inc Multi-processor system and performance enhancement method thereof
US20090327661A1 (en) * 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US8914617B2 (en) * 2009-12-26 2014-12-16 Intel Corporation Tracking mechanism coupled to retirement in reorder buffer for indicating sharing logical registers of physical register in record indexed by logical register
US20120005459A1 (en) 2010-12-28 2012-01-05 Advanced Micro Devices, Inc. Processor having increased performance and energy saving via move elimination
US8661230B2 (en) * 2011-04-15 2014-02-25 International Business Machines Corporation Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions
US9298460B2 (en) * 2011-11-29 2016-03-29 International Business Machines Corporation Register management in an extended processor architecture
US9454371B2 (en) * 2011-12-30 2016-09-27 Intel Corporation Micro-architecture for eliminating MOV operations
US9733939B2 (en) * 2012-09-28 2017-08-15 Intel Corporation Physical reference list for tracking physical register sharing
US10417001B2 (en) * 2012-12-27 2019-09-17 Intel Corporation Physical register table for eliminating move instructions
US9182986B2 (en) * 2012-12-29 2015-11-10 Intel Corporation Copy-on-write buffer for restoring program code from a speculative region to a non-speculative region
US9256433B2 (en) * 2013-03-15 2016-02-09 Intel Corporation Systems and methods for move elimination with bypass multiple instantiation table
US9823925B2 (en) * 2014-03-28 2017-11-21 Intel Corporation Instruction and logic for a logical move in an out-of-order processor

Also Published As

Publication number Publication date
US9292288B2 (en) 2016-03-22
CN105190538A (zh) 2015-12-23
RU2628156C2 (ru) 2017-08-15
EP2984557B1 (en) 2020-03-04
EP2984557A4 (en) 2017-12-20
TWI528291B (zh) 2016-04-01
US20140310504A1 (en) 2014-10-16
RU2015138900A (ru) 2017-03-16
KR101655713B1 (ko) 2016-09-07
BR112015022683A2 (pt) 2018-07-31
TW201506797A (zh) 2015-02-16
CN105190538B (zh) 2018-11-09
EP2984557A1 (en) 2016-02-17
KR20150119038A (ko) 2015-10-23
WO2014169032A1 (en) 2014-10-16

Similar Documents

Publication Publication Date Title
BR112015022683B1 (pt) Sistema de processamento e método de realização de uma operação de manipulação de dados
US9495159B2 (en) Two level re-order buffer
US9250901B2 (en) Execution context swap between heterogeneous functional hardware units
US9256433B2 (en) Systems and methods for move elimination with bypass multiple instantiation table
US9823925B2 (en) Instruction and logic for a logical move in an out-of-order processor
BR102014005801A2 (pt) rastreamento de fluxo de controle de instruções
JP2018509680A (ja) セキュアエンクレーブのプロセスを分岐してセキュアエンクレーブページキャッシュに子エンクレーブを確立する命令及びロジック
US20140281236A1 (en) Systems and methods for implementing transactional memory
US10255199B1 (en) Evicting clean secure pages without encryption
US9569212B2 (en) Instruction and logic for a memory ordering buffer
US10540178B2 (en) Eliminating redundant stores using a protection designator and a clear designator
KR20150130536A (ko) 비인가 스택 피봇팅을 방지하기 위한 시스템들 및 방법들
US20180004526A1 (en) System and Method for Tracing Data Addresses
WO2014142969A1 (en) Object liveness tracking for use in processing device cache
BR102014006118A2 (pt) sistemas, equipamentos e métodos para determinar um bit de mascaramento menos significativo à direita de um registrador writemask
US9063855B2 (en) Fault handling at a transaction level by employing a token and a source-to-destination paradigm in a processor-based system
US9965280B2 (en) Instruction and logic for processor trace information for control flow integrity
US20140281251A1 (en) Method and apparatus for cache line state update in sectored cache with line state tracker
US20150278025A1 (en) Checkpoints associated with an out of order architecture
US10133620B2 (en) Detecting errors in register renaming by comparing value representing complete error free set of identifiers and value representing identifiers in register rename unit
TWI751990B (zh) 衝突罩生成
WO2017105718A1 (en) Instructions and logic for vector-based bit manipulation

Legal Events

Date Code Title Description
B06U Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 20 (VINTE) ANOS CONTADOS A PARTIR DE 09/04/2014, OBSERVADAS AS CONDICOES LEGAIS.

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

Free format text: REFERENTE A 9A ANUIDADE.

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

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2717 DE 31-01-2023 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.