BRPI0806737A2 - uso de sistema de renomeação de registrador para encaminhar resultados intermediários entre instruções constituintes de uma instrução expandida - Google Patents

uso de sistema de renomeação de registrador para encaminhar resultados intermediários entre instruções constituintes de uma instrução expandida Download PDF

Info

Publication number
BRPI0806737A2
BRPI0806737A2 BRPI0806737-6A BRPI0806737A BRPI0806737A2 BR PI0806737 A2 BRPI0806737 A2 BR PI0806737A2 BR PI0806737 A BRPI0806737 A BR PI0806737A BR PI0806737 A2 BRPI0806737 A2 BR PI0806737A2
Authority
BR
Brazil
Prior art keywords
constituent
statement
instruction
physical
physical register
Prior art date
Application number
BRPI0806737-6A
Other languages
English (en)
Inventor
Michael Scott Mcllvaine
James Norris Dieffenderrfer
Nathan Samuel Nunamaker
Thomas Andrew Sartorius
Rodney Wayne Smith
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0806737A2 publication Critical patent/BRPI0806737A2/pt
Publication of BRPI0806737A8 publication Critical patent/BRPI0806737A8/pt
Publication of BRPI0806737B1 publication Critical patent/BRPI0806737B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Electrotherapy Devices (AREA)
  • Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)

Abstract

USO DE SISTEMA DE RENOMEAçãO DE REGISTRADOR PARA ENCAMINHAR RESULTADOS INTERMEDIáRIOS ENTRE INSTRUçõES CONSTITUINTES DE UMA INSTRUçãO EXPANDIDA. Os resultados intermediários são passados entre instruções constituintes de uma instrução expandida utilizando recursos de renomeação de registrador e lógica de controle. Uma primeira instrução constituinte gera resultados intermediários e recebe um PRN em uma tabela de renomeação de instrução constituinte, e escreve os resultados intermediários no registrador físico identificado. Uma segunda instrução constituinte realiza uma consulta na tabela de renomeação de instrução constituinte e lê os resultados intermediários a partir do registrador físico. A lógica de renomeação de instrução constituinte rastreia as instruções constituintes do encadeamento, e elimina a entrada de tabela de renomeação de instrução constituinte e retorna o PRN para uma lista livre quando a segunda instrução constituinte leu os resultados intermediários.

Description

"USO DE SISTEMA. DE RENOMEAÇÃO DE REGISTRADOR PARA ENCAMINHAR RESULTADOS INTERMEDIÁRIOS ENTRE INSTRUÇÕES CONSTITUINTES DE UMA INSTRUÇÃO EXPANDIDA"
FUNDAMENTOS
A presente invenção refere-se geralmente a processadores e em particular a um sistema e método para utilização dos recursos restantes do registrador existente para execução de instruções expandidas que passa os resultados parciais.
As instruções de processador operam em dados obtidos a partir de, e escrevem seus resultados na memória. Os processadores de modem utilizam uma estrutura de memória hierárquica compreendendo alguns elementos de memória caros e rápidos, tal como registradores, em um nivel superior. A hierarquia de memória então compreende tecnologias de memória sucessivamente mais lentas, porém mais eficientes em termos de memória em níveis inferiores, tal como memórias temporárias (SRAM), memória principal de estado sólido (DRAM), e discos (mídia magnética ou ótica), respectivamente. Para aplicações tal como dispositivos eletrônicos, DRAM está freqüentemente no nível mais baixo da hierarquia de memória.
A maior parte das instruções configuradas por instrução de processador (ISA) inclui um conjunto de Registradores de Finalidade Geral (GPRs), que são registradores arquitetados utilizados para passar dados entre instruções, e para e da memória. As instruções que realizam as operações lógicas e aritméticas nos dados lêem seus operandos a partir de e escrevem seus resultados na memória do GPRs, e escrevem dados carregados a partir da memória para o GPRs. Um compilador designa os identificadores GPR fonte e alvo para cada instrução, e solicita as instruções, de forma que os resultados adequados sejam calculados. Isso é, as instruções são dispostas na "ordem do programa" que garante os resultados corretos pelo direcionamento de instruções anteriores para armazenar resultados nos GPRs especificados, e o direcionamento das instruções posteriores para ler esses GPRs para obter operandos para processamento adicional. Os identificadores GPR são rótulos lógicos (por exemplo, rO - r15).
Alguns processadores modernos suportam as instruções "expandidas" - isso é, instruções que realizam mais de uma única operação aritmética ou lógica. Por exemplo, a instrução ADD r1, r2, r3, LSL r4 implementa a equação rl = r2 + (r3<<[r4]), isso é, a mudança para a esquerda do valor no registrador r3 pela quantidade armazenada em r4, adiciona esse resultado ao valor em r2, e armazena a soma no registrador rl. Em um processador cujo somador exige o tempo de ciclo total, essa instrução expandida pode ser implementada como duas instruções compostas separadas - uma instrução de mudança que muda para a esquerda o valor em r3, gerando um resultado intermediário, e uma instrução de adição que adiciona o resultado intermediário ao valor em r2 e armazena a soma em rl. Em alguns processadores - isso é, os processadores que suportam o envio de operando e executam apenas as instruções expandidas na ordem do programa - a passagem dos resultados intermediários da instrução de mudança para a instrução de adição é direta. Em geral, no entanto particularmente em processadores superscalar que suportam execução de instrução fora de ordem - recursos adicionais, tal como registradores "scratch" não arquitetados e lógica de controle complexa, devem ser adicionados ao processador para implementar de forma confiável o envio de resultados intermediários entre as instruções constituintes de uma instrução expandida.
SUMÁRIO
De acordo com uma ou mais modalidades descritas e reivindicadas aqui, a passagem de resultados intermediários entre as instruções constituintes de uma instrução expandida é realizada utilizando-se os recursos de renomeação de registrador e lógica de controle. Uma primeira instrução constituinte gera resultados intermediários e recebe um PRN em uma tabela de renomeação de instrução constituinte, e escreve os resultados intermediários no registrador físico. Uma segunda instrução constituinte realiza uma consulta na tabela de renomeação de instrução constituinte e lê os resultados intermediários do registrador físico. A lógica de renomeação de instrução constituinte rastreia as instruções constituintes através da seqüência e elimina o registrador de tabela de renomeação de instrução constituinte e retorna PRN para uma lista livre quando a segunda instrução constituinte leu os resultados intermediários.
Uma modalidade refere-se a um método de execução de uma instrução expandida. A instrução expandida é convertida em duas ou mais instruções constituintes executáveis separadamente. Um número de registrador físico é designado para uma primeira instrução constituinte gerando um resultado intermediário. 0 número de registrador físico designado é associado com uma segunda instrução constituinte recebendo o resultado intermediário.
Outra modalidade refere-se a um processador. 0 processador inclui uma ou mais seqüências de execução de instrução que operam para executar uma instrução expandida pela geração de uma primeira instrução constituinte gerando resultados intermediários e uma segunda instrução constituinte recebendo os resultados intermediários. 0 processador também inclui um conjunto de registradores físicos, cada um possuindo um número de registrador físico, e uma tabela de renomeação de instrução constituinte que opera para mapear os identificadores de instrução para números de registrador físico. 0 processador inclui adicionalmente a lógica de controle que opera para criar um registrador na tabela de renomeação de instrução constituinte para a primeira instrução constituinte e é adicionalmente operacional para realizar uma consulta na tabela de renomeação de instrução de constituinte para a segunda instrução constituinte. Os resultados intermediários são passados das primeira para as segundas instruções constituintes através de registradores físicos identificados pelos números de registrador físico.
BREVE DESCRIÇÃO DOS DESENHOS
A figura 1 é um diagrama em bloco funcional de um processador utilizando os recursos de renomeação de registrador para realizar a passagem de resultado intermediário entre as instruções constituintes de uma instrução expandida;
A figura 2 é um diagrama em bloco funcional da seqüência do processador da figura 1;
A figura 3 é um fluxograma de um método de execução de uma instrução expandida.
DESCRIÇÃO DETALHADA
A figura 1 apresenta um diagrama em bloco funcional de um processador 10 possuindo lógica para utilizar os recursos de renomeação de registrador para rastrear a passagem dos resultados intermediários entre as instruções constituintes geradas por uma instrução expandida. O processador 10 executa as instruções em uma seqüência de execução de instrução 12 de acordo com a lógica de controle 14. A seqüência 12 pode ser um desenho superscalar, com múltiplas seqüências inferiores paralelas 12 a, 12 b. A seqüência 12 inclui vários registradores ou travas 16, organizados nos estágios de tubo, além de circuitos lógicos e de computação tal como Unidades Lógicas Aritméticas (ALU) (não ilustradas). Um arquivo de Registrador de Finalidade Geral (GPR) 18 fornece registradores compreendendo o topo da hierarquia de memória. Como discutido aqui, o GPR 18 pode incluir a Tabela de Renomeação (RT) 20, uma lista livre 22, e uma Tabela de Renomeação de Instrução Constituinte (CITR) 24 para permitir o uso dos recursos de renomeação de registrador para enviar de forma eficiente e confiável os resultados intermediários entre as instruções constituintes das instruções expandidas.
A seqüência 12 recolhe instruções de uma memória temporária de instrução (I-Cache ou 1$) 26, com endereçamento de memória e permissões gerenciados por um Instruction-Side Translation Lookaside Buffer (ITLB) 28. Os dados são acessados a partir de uma memória temporária de dados (D-Cache ou D$) 30, com endereçamento de memória e permissões gerenciados por um Translation Lookaside Buffer (TLB) 32. Em várias modalidades, o ITLB 28 pode compreender uma copia de parte do TLB 32. Alternativamente, o ITLB 28 e o TLB 32 podem ser integrados. De forma similar, em várias modalidades do processador 10, a I-cache 26 e a D-cache 30 podem ser integradas, ou unificadas.
Falhas em I-cache 28 e/ou D-cache 30 causam acesso à memória principal (off-chip) 34, sob o controle de uma interface de memória 36 (outras memórias temporárias, não ilustradas, podem ser intercaladas entre o processador 10 e a memória principal 34). O processador 10 pode incluir uma interface de Entrada/Saida (I/O) 38, controlando acesso a vários dispositivos periféricos 40, 42. Os versados na técnica reconhecerão que inúmeras variações do processador 10 são possíveis. Por exemplo, o processador 10 pode incluir uma memória temporária de segundo nível (L2) para uma ou ambas as memórias temporárias IeD 26, 30. Adicionalmente, um ou mais dos blocos funcionais apresentados no processador 10 podem ser omitidos de uma modalidade em particular.
Muitos processadores modernos 10 executam instruções "fora da ordem" - isso é, em outra ordem além da ordem de programa de instruções - para utilizar completamente as múltiplas seqüências 12 a, 12 b, e aperfeiçoar o desempenho geral. A execução fora de ordem dá margem a inúmeras dependências entre instruções, conhecidas como "perigos". Os perigos de dados surgem quando a reordenação das .instruções muda a ordem de acesso ao operando envolvido na dependência. Os perigos de dados podem ser classificados em três tipos: Ler depois de Escrever (RaW), Escrever depois de Escrever (WaW), e Escrever depois de Ler (WaR) . Note-se que o caso de Ler depois de Escrever (RaR) não é um perigo de dados; a leitura pode ser realizada em qualquer ordem. Os perigos de dados, tal como RaW também podem ocorrer quando as instruções não são reordenadas, mas simplesmente necessárias para se manter em um estágio particular até que seus resultados tenham sido escritos novamente ou estejam prontos para envio.
Um sistema conhecido para o manuseio de perigos de dados nos processadores 10 que suportam a execução de instrução fora de ordem é a renomeação de registrador. Em um sistema de renomeação de registrador, um grande conjunto de registradores físicos, cada um possuindo um número de registrador físico (PRN), é gerenciado por números de registrador lógicos de designação dinâmica (LRNs) para os registradores físicos. Os LRNs podem compreender, por exemplo, os identificadores GPR lógicos (rO, rl, r2, . ..). 0 número de registradores físicos é maior do gue o número de LRNs, ou GPRs arquitetados. Uma Tabela de Renomeação (RT) 2 0 mantém o mapeamento dinâmico entre LRNs e PRNs, e PRNs disponíveis são mantidos em uma lista livre 22.
A figura 2 apresenta, em maiores detalhes, um diagrama em bloco funcional da seqüência 12 e vários recursos de renomeação de registrador. Um estágio de recolhimento 50 da seqüência 12 recolhe as instruções da memória temporária de instrução 26. As instruções são decodificadas em um estágio de decodif icação 52 e podem entrar em um armazenador temporário 54. As instruções são emitidas a partir do armazenador temporário 54 para uma seqüência 12 a, 12 b. A lógica de renomeação 56 inspeciona as características de acesso a registrador das instruções e traduz os LRNs (por exemplo, identificadores GPR) associados com a instrução em PRNs como necessário, através da tabela de renomeação 20 e lista livre 22. Para instruções que escrevem um registrador, um novo registrador físico é selecionado a partir da lista livre 22, e um novo mapeamento LRN para PRN é registrado na tabela de renomeação 20. Isso mapeia o LRN em um PRN não utilizado, de forma que a escrita seja direcionada para um registrador físico associado (isso é, o LRN é "renomeado") . As instruções que lêem um registrador em um estágio de seqüência de acesso a registrador 58 a, 58 b traduzem seu LRN em um PRN através da consulta de uma tabela de renomeação 20. O PRN permanece associado com a instrução de leitura de registrador por toda sua existência através da seqüência 12 a, 12 b.
As instruções de escrita de registrador não "corrompem" os valores anteriores escritos no mesmo LRN; a escrita é direcionada para um novo PRN não utilizado (como o LRN é renomeado para um novo PRN) . As instruções que seguem a instrução de escrita na ordem do programa serão direcionadas para o mesmo PRN, para obtenção do valor escrito. As instruções que antecedem a instrução de escrita na ordem do programa são mapeadas pela tabela de renomeação 20 para um registrador fisico diferente (antes da operação de renomeação), e continuará a acessar esse registrador fisico. Dessa forma, as instruções que escrevem um LRN determinado podem ser executadas antes das instruções que lêem um valor anterior a partir do LRN (WaR) ou escrevem um resultando anterior ao LRN (WaW).
Quando uma instrução de escrita de registrador se compromete com a execução no estágio de seqüência 60 a, 60 b, - isso é, quando a instrução determina que nem ela própria, nem qualquer instrução anterior à mesma na ordem do programa causará uma exceção - o PRN designado para a mesma se torna o GPR arquitetado relevante. A instrução escreverá seus resultados para esse PRN no estágio de seqüência de escrita 62 a, 62 b (talvez depois de um armazenador temporário de escrita 64 a, 64 b). Nesse ponto, qualquer renomeação mais antiga do mesmo LRN (identificador GPR) para outros PRNs, é removida da tabela de renomeação 20. Quando todas as instruções lendo a execução completa do GPR, o PRN é retornado para a lista livre 22, como um recurso disponível para outra operação de renomeação. A lógica de renomeação de entrada 66 realiza essas funções pelo monitoramento da seqüência 12 como instruções comprometidas com a execução, e enviando os sinais de controle adequados para a tabela de renomeação 20 e lista livre 22.
De acordo com uma ou mais modalidades, o sistema de renomeação de registrador é utilizado para fornecer o envio de resultados intermediários entre as instruções constituintes geradas a partir das instruções expandidas.
Quando uma instrução expandida é decodificada no estágio de seqüência 52, duas ou mais instruções constituintes podem ser geradas e passadas para o armazenador temporário de instrução 54. As instruções constituintes podem ser indicadas com relação a qual gera um ou mais resultados intermediários, e que recebe resultados intermediários como operandos. A lógica de renomeação 56 inspeciona as instruções constituintes, e designa um ou mais PRNs da lista livre 22 para instruções constituintes que geram resultados intermediários. A lógica de renomeação 56 cria adicionalmente um registrador em uma tabela de renomeação de instrução constituinte 24 que mapeia um indicador identificando a instrução constituinte gerando um resultado intermediário para o PRN designado. A lógica de renomeação 56 indica adicionalmente as instruções constituintes que recebem os resultados intermediários com o indicador identificando a instrução constituinte que gera os resultados intermediários.
Quando as instruções constituintes recebendo os resultados intermediários alcançam o estágio de seqüência de acesso a registrador 58 a, 58 b, as instruções acessam a tabela de renomeação de instrução constituinte 24 para recuperar o PRN identificando o registrador que mantém seus resultados intermediários. Quando as instruções constituintes recebendo os resultados intermediários se comprometem com a execução no estágio de seqüência 60 a, 60 b, a lógica de renomeação de instrução constituinte 68 remove o registrador relevante da tabela de renomeação de instrução constituinte 24, e retorna o PRN para a lista livre 22. Note-se que apesar de a tabela de renomeação de instrução constituinte 24 ser apresentada na figura 2 como uma entidade funcional independente, em algumas modalidades, a funcionalidade pode ser incluída na tabela de renomeação 20. Nesse caso, as instruções constituintes das instruções expandidas que geram e recebem resultados intermediários são tratadas como um caso especial de renomeação de registrador, com um identificador de instrução ao invés de um LRN sendo renomeado. Em outras modalidades, a renomeação de registrador de instrução constituinte pode ser separada da renomeação de registrador, com um conjunto separado de registradores físicos e uma lista livre separada 22 dedicada às instruções expandidas.
A figura 3 apresenta um método de execução da instrução expandida. A instrução expandida é convertida em duas ou mais instruções constituintes executáveis separadamente (bloco 100). Uma primeira instrução constituinte gerando um resultado intermediário recebe um PRN (bloco 102) . Em uma modalidade, o PRN é selecionado a partir de um conjunto de renomeação de registrador. 0 PRN designado é associado com uma segunda instrução constituinte recebendo o resultado intermediário (bloco 104) . A associação pode ser através de um registrador em uma tabela de renomeação de instrução constituinte 24, ou uma tabela de renomeação 20 de um sistema de renomeação de registrador.
A primeira instrução constituinte é então executada (bloco 106), e o resultado intermediário que gera é armazenado no registrador identificado pelo PRN designado. A segunda instrução constituinte é executada (bloco 108), recuperando o resultado intermediário do registrador identificado pelo PRN designado. Os versados na técnica reconhecerão que o bloco 106 e 108 pode ser implementado pelo envio de operando, utilizando o PRN designado para identificar as instruções, sem, na verdade, escrever os resultados intermediários em um registrador físico.
Depois te a segunda instrução constituinte ter recebido o resultado intermediário, o PRN é desassociado da segunda instrução constituinte (bloco 110), tal como pela remoção do registrador relevante da tabela de renomeação de instrução constituinte 24 (ou tabela de renomeação de registrador 20) . O PRN é então retornado para o bloco de renomeação de registrador (bloco 112), tal como pelo retorno do PRN para a lista livre 22. 0 PRN pode ser desassociado da segunda instrução constituinte e retornado para a lista livre 22 tão logo a segunda instrução constituinte leia o resultado intermediário durante sua execução, ou em qualquer momento depois disso.
Pela utilização dos recursos e metodologia dos sistemas de renomeação de registrador existentes, como descrito aqui, as instruções expandidas podem ser executadas como duas ou mais instruções constituintes sem a necessidade de se ter recursos de processador e lógica adicionais extensos para realizar a passagem dos resultados intermediários entre as instruções constituintes. Apesar de descrito aqui em termos de duas instruções constituintes passando um único resultado intermediário, os versados na técnica reconhecerão prontamente que a presente invenção não está limitada a essa modalidade. Em geral, um grande número de instruções constituintes pode ser gerado a partir de qualquer instrução expandida, e as instruções constituintes podem passar um grande número de resultados intermediários entre si, utilizando o sistema de renomeação de registrador, como descrito aqui.
A presente invenção pode, obviamente, ser realizada de outras formas além das especificamente apresentadas aqui sem se distanciar das características essenciais da invenção. As presentes modalidades devem ser consideradas em todos os aspectos como ilustrativas e não restritivas, e todas as mudanças que se encontrem dentro da faixa de significado e equivalência das reivindicações em anexo devem ser englobadas aqui.

Claims (19)

1. Método para executar uma instrução expandida, compreendendo: converter a instrução expandida em duas ou mais instruções constituintes executadas separadamente; designar um número de registrador físico em um conjunto de uma primeira instrução constituinte gerando um resultado intermediário; e associar o número de registrador físico designado a uma segunda instrução constituinte recebendo o resultado intermediário.
2. Método, de acordo com a reivindicação 1, compreendendo adicionalmente executar a primeira instrução constituinte para gerar o resultado intermediário.
3. Método, de acordo com a reivindicação 2, compreendendo adicionalmente executar a segunda instrução constituinte no qual o resultado intermediário é um operando encaminhado a partir da primeira instrução constituinte para a segunda instrução constituinte.
4. Método, de acordo com a reivindicação 2, compreendendo adicionalmente armazenar o resultado intermediário em um registrador identificado pelo número de registrador físico.
5. Método, de acordo com a reivindicação 4, compreendendo adicionalmente executar a segunda instrução constituinte e recuperar o resultado intermediário a partir do registrador identificado pelo número de registrador físico.
6. Método, de acordo com a reivindicação 1, em que designar um número de registrador físico a partir de um grupo para uma primeira instrução constituinte compreende criar uma entrada em uma tabela de renomeação de instrução constituinte mapeando um identificador da primeira instrução constituinte no número de registrador físico.
7. Método, de acordo com a reivindicação 6, em que o número de registrador físico é selecionado a partir de uma lista de registradores físicos disponíveis e removido da lista.
8. Método, de acordo com a reivindicação 7, em que associar o número de registrador físico designado a uma segunda instrução constituinte compreende realizar uma consulta na tabela de renomeação de instrução constituinte utilizando o primeiro identificador de instrução constituinte.
9. Método, de acordo com a reivindicação 8, compreendendo adicionalmente liberar o número de registrador físico para o grupo após a segunda instrução constituinte ler o resultado intermediário.
10. Método, de acordo com a reivindicação 9, em que liberar o número de registrador físico para o grupo compreende adicionar o número de registrador físico à lista de registradores físicos disponíveis.
11. Método, de acordo com a reivindicação 1, em que o grupo de registradores físicos é um grupo de renomeação de registrador.
12. Processador, compreendendo: um ou mais encadeamentos de execução de instrução que operam para executar uma instrução expandida pela geração de uma primeira instrução constituinte gerando resultados intermediários e uma segunda instrução constituinte recebendo os resultados intermediários; um grupo de registradores físicos, cada um possuindo um número de registrador físico; uma tabela de renomeação de instrução constituinte que opera para mapear identificadores de instrução em números de registrador físico; e uma lógica de controle que opera para criar uma entrada na tabela de renomeação de instrução constituinte para a primeira instrução constituinte e operando adicionalmente para realizar uma consulta na tabela de renomeação de instrução constituinte pela segunda instrução constituinte; no qual resultados intermediários são passados a partir da primeira para a segunda instrução constituinte através de registradores físicos identificados pelos números de registrador físico.
13. Processador, de acordo com a reivindicação -12, compreendendo adicionalmente uma lista livre de números de registrador físico disponíveis no conjunto, e em que a lógica de controle opera adicionalmente para remover registradores da tabela de renomeação de instrução constituinte e retornar números de registrador físico para a lista livre após as segundas instruções constituintes receberem os resultados intermediários.
14. Processador, de acordo com a reivindicação -12, em que a entrada na tabela de renomeação de instrução constituinte mapeia um primeiro identificador de instrução constituinte em um primeiro número de registrador físico.
15. Processador, de acordo com a reivindicação -14, em que a primeira instrução constituinte escreve resultados intermediários em um registrador físico identificado pelo primeiro número de registrador físico.
16. Processador, de acordo com a reivindicação -15, em que a segunda instrução constituinte lê resultados intermediários a partir do registrador físico identificado pelo primeiro número de registrador físico.
17. Processador, de acordo com a reivindicação -16, em que a segunda instrução constituinte recupera o primeiro número de registrador físico através de uma consulta a tabela de renomeação de instrução constituinte, utilizando o primeiro identificador de instrução constituinte.
18. Processador, de acordo com a reivindicação -12, em que o conjunto de registradores físicos é adicionalmente utilizado para registrar renomeação.
19. Processador, de acordo com a reivindicação -12, em que a tabela de renomeação de instrução constituinte é uma tabela de renomeação de registrador.
BRPI0806737-6A 2007-01-24 2008-01-24 Uso de sistema de renomeação de registrador para encaminhar resultados intermediários entre instruções constituintes de uma instrução expandida BRPI0806737B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/626,424 2007-01-24
US11/626,424 US7669039B2 (en) 2007-01-24 2007-01-24 Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction
PCT/US2008/051958 WO2008092037A1 (en) 2007-01-24 2008-01-24 Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction

Publications (3)

Publication Number Publication Date
BRPI0806737A2 true BRPI0806737A2 (pt) 2011-09-13
BRPI0806737A8 BRPI0806737A8 (pt) 2018-04-10
BRPI0806737B1 BRPI0806737B1 (pt) 2023-11-28

Family

ID=39323615

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0806737-6A BRPI0806737B1 (pt) 2007-01-24 2008-01-24 Uso de sistema de renomeação de registrador para encaminhar resultados intermediários entre instruções constituintes de uma instrução expandida

Country Status (13)

Country Link
US (1) US7669039B2 (pt)
EP (1) EP2126689B8 (pt)
JP (1) JP5275253B2 (pt)
KR (1) KR101154628B1 (pt)
CN (1) CN101601008B (pt)
AT (1) ATE481676T1 (pt)
BR (1) BRPI0806737B1 (pt)
CA (1) CA2674872C (pt)
DE (1) DE602008002568D1 (pt)
ES (1) ES2352586T3 (pt)
MX (1) MX2009007939A (pt)
RU (1) RU2431887C2 (pt)
WO (1) WO2008092037A1 (pt)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US9513915B2 (en) * 2012-03-28 2016-12-06 International Business Machines Corporation Instruction merging optimization
US9395988B2 (en) * 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
US10565670B2 (en) * 2016-09-30 2020-02-18 Intel Corporation Graphics processor register renaming mechanism
CN111638911B (zh) * 2019-03-01 2025-01-21 阿里巴巴集团控股有限公司 一种处理器、指令执行设备及方法
CN111506347B (zh) * 2020-03-27 2023-05-26 上海赛昉科技有限公司 一种基于指令写后读相关假设的重命名的方法
US11500642B2 (en) * 2020-11-10 2022-11-15 International Busines Machines Corporation Assignment of microprocessor register tags at issue time
CN112416434B (zh) * 2020-12-03 2023-02-17 海光信息技术股份有限公司 物理寄存器分配方法、物理寄存器分配装置和电子设备
CN114168197B (zh) * 2021-12-09 2023-05-23 海光信息技术股份有限公司 指令执行方法、处理器以及电子装置
JP2024025407A (ja) * 2022-08-12 2024-02-26 富士通株式会社 演算処理装置および演算処理方法
CN116662006B (zh) * 2023-06-06 2024-02-23 北京市合芯数字科技有限公司 多线程处理器重命名资源管理方法、系统、装置及介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5627985A (en) * 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5586278A (en) * 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
SG47981A1 (en) * 1994-03-01 1998-04-17 Intel Corp Pipeline process of instructions in a computer system
US5771366A (en) * 1995-06-09 1998-06-23 International Business Machines Corporation Method and system for interchanging operands during complex instruction execution in a data processing system
US5758117A (en) * 1995-12-14 1998-05-26 International Business Machines Corporation Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
US6279102B1 (en) 1997-12-31 2001-08-21 Intel Corporation Method and apparatus employing a single table for renaming more than one class of register
US6212619B1 (en) * 1998-05-11 2001-04-03 International Business Machines Corporation System and method for high-speed register renaming by counting
US7055021B2 (en) 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
JP3752493B2 (ja) * 2003-03-31 2006-03-08 東芝マイクロエレクトロニクス株式会社 レジスタ・リネーミング機能を有するプロセッサ
US7219218B2 (en) 2003-03-31 2007-05-15 Sun Microsystems, Inc. Vector technique for addressing helper instruction groups associated with complex instructions
US7373486B2 (en) * 2005-08-29 2008-05-13 P.A. Semi, Inc. Partially decoded register renamer

Also Published As

Publication number Publication date
US7669039B2 (en) 2010-02-23
KR101154628B1 (ko) 2012-06-08
JP2010517180A (ja) 2010-05-20
US20080177987A1 (en) 2008-07-24
BRPI0806737B1 (pt) 2023-11-28
RU2431887C2 (ru) 2011-10-20
BRPI0806737A8 (pt) 2018-04-10
CN101601008A (zh) 2009-12-09
ATE481676T1 (de) 2010-10-15
RU2009131714A (ru) 2011-02-27
CN101601008B (zh) 2013-05-08
ES2352586T3 (es) 2011-02-21
EP2126689B1 (en) 2010-09-15
KR20090100448A (ko) 2009-09-23
CA2674872C (en) 2013-06-25
WO2008092037A1 (en) 2008-07-31
DE602008002568D1 (de) 2010-10-28
MX2009007939A (es) 2009-08-07
EP2126689A1 (en) 2009-12-02
CA2674872A1 (en) 2008-07-31
EP2126689B8 (en) 2010-12-29
JP5275253B2 (ja) 2013-08-28

Similar Documents

Publication Publication Date Title
BRPI0806737A2 (pt) uso de sistema de renomeação de registrador para encaminhar resultados intermediários entre instruções constituintes de uma instrução expandida
JP6009608B2 (ja) 条件付き命令が無条件で出力を提供するシステム及び方法
US8612950B2 (en) Dynamic optimization for removal of strong atomicity barriers
US7711898B2 (en) Register alias table cache to map a logical register to a physical register
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
TW201403472A (zh) 最佳化暫存器初始化操作
US9354874B2 (en) Scalable decode-time instruction sequence optimization of dependent instructions
JP3745819B2 (ja) ノン・フォルティング・ロード命令をインプリメントする方法及び装置
JP7156776B2 (ja) リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法
US8812824B2 (en) Method and apparatus for employing multi-bit register file cells and SMT thread groups
JP2012514254A (ja) トランザクショナルメモリシステム内でのハードウェア属性のメモリモデル
BRPI0807405A2 (pt) Esvaziamento de encadeamento segmentado para ramificações preditas erroneamente
US8291196B2 (en) Forward-pass dead instruction identification and removal at run-time
US20180336037A1 (en) Multi-level history buffer for transaction memory in a microprocessor
Shull Making non-volatile memory programmable
Wang Architectural and Language Support for Efficient Programming on Non-Volatile Memory

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B12B Appeal against refusal [chapter 12.2 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 24/01/2008, OBSERVADAS AS CONDICOES LEGAIS. PATENTE CONCEDIDA CONFORME ADI 5.529/DF, QUE DETERMINA A ALTERACAO DO PRAZO DE CONCESSAO.