BR102013010540A2 - operações de inicialização de registro otimizantes - Google Patents
operações de inicialização de registro otimizantes Download PDFInfo
- Publication number
- BR102013010540A2 BR102013010540A2 BR102013010540A BR102013010540A BR102013010540A2 BR 102013010540 A2 BR102013010540 A2 BR 102013010540A2 BR 102013010540 A BR102013010540 A BR 102013010540A BR 102013010540 A BR102013010540 A BR 102013010540A BR 102013010540 A2 BR102013010540 A2 BR 102013010540A2
- Authority
- BR
- Brazil
- Prior art keywords
- record
- instruction
- physical
- given
- numeric value
- Prior art date
Links
- 230000033001 locomotion Effects 0.000 claims abstract description 18
- 238000000034 method Methods 0.000 claims abstract description 17
- 230000004044 response Effects 0.000 claims description 19
- 230000000977 initiatory effect Effects 0.000 claims description 13
- 238000001514 detection method Methods 0.000 claims description 10
- 238000012546 transfer Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 239000011159 matrix material Substances 0.000 description 7
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
operações de inicialização de registro otimizantes. a presente invenção refere-se a um sistema e método para reduzir de maneira eficiente a latência de registros de inicialização. uma unidade de renomeação de registro dentro de um processador determina se antes de um estágio de pipeline de execução é sabido que uma dada instrução decodificada grava um valor numérico particular em um operando de destino. um exemplo é uma instrução imediata de movimento que grava um valor de o em seu operando de destino. outros exemplos podem também ser qualificados. se a determinação é feita, um dado identificador de registro físico é atribuido ao operando de destino, em que o dado identificador de registro físico é associado ao valor numérico particular, mas o mesmo não associado a um registro físico real em um arquivo de registro fisico. a dada instrução é sinalizada para impedir que a mesma avance para um estágio de pipeline de execução. quando o dado identificador de registro fisico é usado para ler o arquivo de registro físico, nenhum registro fisico real é acessado.
Description
Relatório Descritivo da Patente de invenção para "OPERAÇÕES DE INICIALIZAÇÃO DE REGISTRO OTIMIZANTES".
ANTECEDENTES DA INVENÇÃO CAMPO DA INVENÇÃO
Esta invenção refere-se a microprocessadores e, mais particularmente, à redução de maneira eficiente da latência de registros de inicialização.
DESCRIÇÃO DA TÉCNICA RELEVANTE
Microprocessadores tipicamente incluem a sobreposição de estágios de pipeline e execução fora de ordem de instruções. Além disso, microprocessadores podem suportar multi-threading simultâneo (múltiplas sequências de instruções executadas em um mesmo programa) para aumentar a produtividade. Essas tecnologias tiram proveito do paralelismo de nível de instrução (ILP) em código de fonte. Durante cada ciclo de relógio, um microprocessador produz de maneira ideal a execução útil de um número máximo de N instruções por thread (sequência de instruções) para cada estágio de uma pipeline, em que N é um número inteiro maior que um. Entretanto, dependências de controle e dependências de dados reduzem uma produtividade máxima do microprocessador para abaixo de N instruções por estágio.
Dependências de controle causadas por instruções de fluxo de controle condicional serializam instruções em bifurcações condicionais e une ao longo do gráfico de fluxo de controle do código de fonte. Execução especulativa de instruções é usada para realizar execução paralela de instruções apesar das dependências de controle no código de fonte.
Uma dependência de dados ocorre quando um operando de uma instrução depende de um resultado de uma instrução mais jovem em ordem de programa. Dependências de dados podem aparecer entre operan-dos de instruções subsequentes em um segmento de código em linha reta ou entre operandos de instruções que pertencem a iterações em laços subsequentes. Em código em linha reta, dependências de leitura após gravação (RAW), gravação após leitura (WAR) ou gravação após gravação (WAW) podem ser encontradas. Renomeação de registro é usada para permitir exe- cução paralela de instruções apesar das dependências de WAR e WAW Entretanto, a dependência verdadeira, ou dependência de RAW, ainda está intacta. Portanto, registros arquitetônicos usados como um registro de destino e subsequentemente como um registro de fonte causam serialização de execução de instrução para segmentos de código de fonte associados.
Um exemplo de uma dependência de RAW comum com um registro arquitetônico é a inicialização de um registro em um valor particular seguido do uso e/ou teste daquele registro em código posterior. Por exemplo, valores iniciais particulares podem ser atribuídos a sinalizadores, contadores e configurações em um aplicativo de software. Uma maneira de inicia-lizar um registro é usar uma instrução imediata de movimento. Portanto, inicializações de registro podem ocorrer frequentemente durante a execução de programas e incluem a dependência de RAW.
Em vista do que foi exposto acima, mecanismos e métodos eficientes para reduzir de maneira eficiente a latência de registros de inicialização são desejados.
SUMÁRIO DE MODALIDADES DA INVENÇÃO
Trata-se de sistemas e métodos para reduzir de maneira eficiente a latência de registros de inicialização. Em uma modalidade, um processador inclui uma unidade de renomeação de registro configurada para receber instruções decodificadas e determinar se uma dada instrução decodificada se qualifica para ser uma operação de ciclo zero. Determina-se se antes de um estágio de pipeline de execução é sabido que uma dada instrução decodificada grava um valor numérico particular em um operando de destino. Um exemplo é uma instrução imediata de movimento que grava um valor de 0 em seu operando de destino. Pelo menos outras operações de lógica booleana e operações aritméticas também podem ser qualificadas. Se a determinação é feita, a unidade de registro de renomeação pode atribuir um número de registro físico ao operando de destino, em que o número de registro físico é associado com o valor numérico particular. Além disso, o número de registro físico pode não ser associado com um registro físico real em um arquivo de registro físico. A lógica de controle na unidade de renomeação de registro pode sinalizar a dada instrução para impedir que a mesma avance na pipeline do processador. Por exemplo, a lógica de controle pode sinalizar a dada instrução de movimento para indicar a finalização no estágio de pipeline de remessa. Ademais, o arquivo de registro físico pode transferir o valor numérico particular sem acessar um registro físico real quando o mesmo recebe o número de registro de renomeação como um operando de fonte para leitura.
Essas e outras modalidades serão adicionalmente observadas mediante referência aos seguintes desenhos e descrição.
BREVE DESCRIÇÃO DOS DESENHOS A Figura 1 é um diagrama de blocos generalizado de uma modalidade de um processador que realizar execução fora de ordem e superesca-lar com operações de inicialização de registro de ciclo zero. A Figura 2 é um diagrama de blocos generalizado de uma modalidade de números de arquivo de registro físico. A Figura 3 é um diagrama de blocos generalizado que ilustra uma modalidade de um arquivo de registro físico. A Figura 4 é um diagrama de blocos generalizado que ilustra uma modalidade de renomeação de registro com operações de ciclo zero convertidas. A Figura 5 é um diagrama de fluxo generalizado que ilustra uma modalidade de um método para criar operações de inicialização de registro de ciclo zero.
Embora a invenção seja suscetível a várias modificações e formas alternativas, modalidades específicas da mesma são mostradas a título de exemplo nos desenhos e serão descritas em detalhes no presente documento. Deve-se entender, entretanto, que os desenhos e descrição detalhada dos mesmos não se destinam a limitar a invenção à forma particular revelada, mas pelo contrário, a intenção é abranger todas as modificações, equivalentes e alternativas enquadradas no espírito e escopo da presente invenção conforme definido pelas reivindicações anexas. Conforme usada ao longo deste pedido, a palavra "pode" é usada em um sentido permissivo (isto é, significando que tem o potencial para), ao invés do sentido obrigatório (isto é, significando deve). De maneira semelhante, as palavras "incluem", "que inclui" e "inclui" significam incluindo, mas sem se limitar. Várias unidades, circuitos ou outros componentes podem ser descritos como "configurados para" realizar uma tarefa ou tarefas. Em tais contextos, "configurados para" é uma recitação ampla de estrutura que geralmente significa "que tem um conjunto de circuitos que" realiza a tarefa ou tarefas durante a operação. Como tal, a unidade/circuito/componente pode ser configurada para realizar a tarefa mesmo quando a unidade/circuito/ componente não está atualmente ligada. Em general, o conjunto de circuitos que forma a estrutura que corresponde a "configurada para" pode incluir circuitos de hardware. De maneira semelhante, várias unidades/circuitos/com-ponentes podem ser descritas como realizando uma tarefa ou tarefas, para conveniência na descrição. Tais descrições devem ser interpretadas como incluindo a expressão "configurado para". Recitar uma unidade/circuito/componente que é configurada para realizar uma ou mais tarefas é expressamente destinada a invocar a interpretação do 35 U.S.C. § 112, parágrafo seis, para aquela unidade/circuito/componente.
DESCRIÇÃO DETALHADA
Na seguinte descrição, numerosos detalhes específicos são a-presentados para fornecer um entendimento minucioso da presente invenção. Entretanto, um indivíduo que tem habilidade comum na técnica deve reconhecer que a invenção pode ser praticada sem esses detalhes específicos. Em alguns casos, tecnologias, estruturas e circuitos bem conhecidos não foram mostrados em detalhes para evitar o ofuscamento da presente invenção.
Referindo-se à Figura 1, é mostrado um diagrama de blocos generalizado que ilustra uma modalidade de um processador 100 que realiza uma execução fora de ordem e superescalar com operações de inicialização de registro de ciclo zero. O núcleo de processador 100 pode utilizar uma pi-peline de estágios múltiplos para processamento das instruções. Embora blocos de controle e funcionais sejam mostrado em uma ordem particular e em um estágio de pipeline particular, outras combinações são possíveis e contempladas. Além disso, os blocos de controle e funcionais podem ocupar mais de um estágio de pipeline. Na maioria dos casos, um único estágio de pipeline é mostrado para cada bloco funcional para facilitar a ilustração.
As instruções de um aplicativo de software podem ser carregadas no cache de instrução 104 no processador 100. O aplicativo de software pode ter sido armazenado em uma memória de disco externa, DRAM externa e/ou um dentre múltiplos dispositivos periféricos. De modo geral, quando programadores de software gravam aplicativos para realizar trabalho de a-cordo com um algoritmo ou um método, os programadores utilizam variáveis para referenciar dados de resultado e temporários. Esses dados utilizam espaço alocado em memória de computador. O sistema operacional aloca regiões de memória para o aplicativo de software.
Durante o processamento do aplicativo, os dados podem ser carregados das regiões alocadas da memória para o cache de dados 162. Subsequentemente, um ou mais registros arquitetônicos no arquivo de registro físico 164 são usados para carregar e armazenar os dados de resultado e temporários. Os registros arquitetônicos são arquitetonicamente visíveis. Portanto, um programador de software e/ou um compilador pode identificar os registros arquitetônicos na aplicativo de software. Os registros arquitetônicos são associados com uma dada arquitetura de conjunto de instruções (ISA). O hardware no processador 100 inclui um conjunto de circuitos para processar instruções de acordo com a dada ISA. Em várias modalidades, a arquitetura de conjunto de instruções ARM pode ser selecionada para a dada ISA. Alternativamente, a Alpha, PowerPC, SPARC, MIPS, x86 ou qualquer outra ISA pode ser selecionada.
Em várias modalidades, a dada ISA pode ser usada para selecionar uma maneira de declarar e alocar regiões de memória. A dada ISA pode adicionalmente determinar etapas para uma reinicialização do processador e etapas para comutar entre modos de operação (por exemplo, modo de supervisor, modo de usuário). Essas etapas e aplicativos de usuário podem reinicializar ou inicializar registros arquitetônicos para um valor numéri- co particular por meio do uso de uma ou mais instruções na dada ISA. Além disso, essas etapas e aplicativos de usuário podem reinicializar qualquer porção de um arquivo de registro que pode incluir um número maior de registros que um número de registros arquitetonicamente visíveis. Tal reinicia-lização do arquivo de registro pode fazer com que o processador se comporte de uma maneira previsível após a operação de reinicialização ser finalizada. Tipicamente, uma máquina de estado é usada para inserir operações que gravam um valor numérico particular em cada registro no arquivo de registro. Em algumas modalidades, essa máquina de estado pode ser removida e substituída com uma lógica diferente conforme será descrito abaixo. Em relação a operações que gravam um valor particular em um registro, em algumas modalidades uma instrução imediata de movimento pode ser usada para mover o valor numérico particular em um dado registro no arquivo de registro. Um exemplo de um valor numérico particular é o valor zero. Outras instruções aritméticas também podem ser usadas para realizar a reinicialização ou inicialização. Alguns exemplos de reinicialização de um dado registro indicado por "r1" são mostrados a seguir: mov r1, 0 // r1 <r 0 and r1, H, 0 //r1 = r1 AND 0 xor r1,r1,r1 //r1 = r1 XOR r1 sub r1, r1, r1 // r1 = r1 - r1 mui r1, r1, 0 // r1 = r1 x 0 Nos exemplos acima, o operando de destino é listado primeiro seguido do(s) operando(s) de fonte. Entretanto, a convenção oposta é possível e contemplada. Além disso, para a maior parte das instruções, dois o-perandos de fonte são listados. Entretanto, em casos em que um registro arquitetônico particular é tanto um operando de destino quanto um operando de fonte, um operando de fonte pode ser listado com o número de registro de destino arquitetônico subentendido como o segundo operando de fonte. Nos exemplos acima, o valor intermediário é mostrado como um algarismo sem símbolos. Em outros casos, um símbolo pode acompanhar o algarismo. Por exemplo, na ISA ARM, um valor intermediário pode usar o prefixo "#", tal como "#0" ao invés de "0". As instruções acima se destinam a ser um exemplo de pseudocódigo e agnóstico de linguagem.
Conforme visto a partir das declarações de código exemplificati-vas acima, múltiplos tipos de instrução podem ser usados para inicializar o registro r1 com um valor numérico particular, tal como o valor zero. Alguns dos tipos de instrução acima podem ter latências mais baixas do que outros tipos de instrução. Em um exemplo, as operações AND e XOR lógicas podem ser finalizadas antes de outros tipos de instrução. A MUL aritmética, ou instrução de multiplicação, pode ter a latência mais longa dos tipos de instrução acima e, assim, podem não ser escolhida para inicialização de registro. Independentemente do tipo de instrução, uma porcentagem significativa das instruções de linguagem assembly usadas para implantar o aplicativo do programador de software pode incluir declarações de inicialização de registro. Além disso, pode haver declarações de aplicativo de software não usadas para inicialização, mas os resultados podem ser conhecidos antes de uma execução real da declaração. A instrução de multiplicação aritmética mostrada acima é um exemplo. A redução da latência desses tipos de declarações pode aumentar o desempenho. O processador 100 pode incluir uma lógica de iniciação de ciclo zero 124 que determina antes de um estágio de pipeline de execução associado a uma instrução decodificada particular que a instrução particular grava um dado valor numérico em seu operando de destino. Por exemplo, quando a instrução "mov r1, 0 // r1 <- 0" é decodificada, é sabido que a instrução é u tipo imediato de movimento e a instrução grava o operando de destino, r1, com o valor numérico zero. O valor numérico zero está no campo imediato da instrução imediata de movimento. Em resposta a essa determinação, a lógica de iniciação de ciclo zero 124 pode direcionar a lógica de controle de renomeação 122 para atribuir um dado número de registro de renomeação ao operando de destino, em que o dado número de registro de renomeação é associado ao dado valor numérico.
Continuando com a implantação da instrução de inicialização de registro como uma operação de ciclo zero, o arquivo de registro físico 164 pode incluir múltiplos registros físicos, cada um identificado por um número de registro de renomeação associado. Entretanto, o dado número de registro de renomeação atribuído ao operando de destino da instrução imediata de movimento acima pode não estar associado a nenhum dos múltiplos registros físicos. Ao invés disso, o dado número de registro de renomeação pode estar associado ao valor numérico no campo imediato. Nesse caso, o valor numérico é zero.
Em uma modalidade, o arquivo de registro físico 164 pode ter um índice de 8 bits, o que pode ser usado para identificar de maneira exclusiva um dentre 256 registros físicos. Em outras modalidades, uma amplitude diferente do índice e um número diferente de registros físicos podem ser u-sados. Tais outros valores são possíveis e contemplados. Em uma modalidade que utiliza um índice de 8 bits, o arquivo de registro físico pode conter menos que 256 registros físicos reais. Por exemplo, o arquivo de registro físico 164 pode incluir 120 registros físicos, ao invés de 256 registros físicos. Esses 120 registros físicos podem ser identificados por meio do uso de um índice de 8 bits com um valor entre 0 e 119 em decimal ou algum outro formato. Em formato hexadecimal, os 120 registros físicos podem ser identificados por um índice de 8 bits com um valor de hOO a h77. Em várias modalidades, o índice de 8 bits 255 pode não estar associado a qualquer um dos registros físicos no arquivo de registro físico 164. Ao invés disso, o índice de 8 bits 255, ou hFF, pode ser usado para indicar o valor numérico 0. Em outras modalidades, um índice diferente de hFF pode ser selecionado para representar um dado valor numérico e valores numéricos diferentes de 0 também podem ser representados.
Em várias modalidades, o operando de destino, que é r1, na instrução imediata de movimento acima, pode ser renomeado para P255. É sabido que o operando de destino é gravado com o valor zero, ou de outra maneira corresponde a um valor de zero. Ademais, a lógica de iniciação de ciclo zero 124 pode sinalizar a primeira instrução para impedir que a mesma avance na pipeline do processador. Por exemplo, a lógica de iniciação de ciclo zero 124 pode sinalizar a instrução imediata de movimento para indicar a finalização em um estágio de pipeline de remessa. Em tais modalidades, o consumo de potência pode ser reduzido no processador 100, visto que a instrução imediata de movimento pode não avançar para o estágio de pipeline de remessa. Além disso, a produtividade para outras instruções pode aumentar visto que a instrução imediata de movimento não utiliza recursos (filas, unidade de execução, flops de preparo e assim por diante) após o estágio de pipeline de remessa que seria de outra maneira usado. Novamente, em outras modalidades, outros valores podem ser usados para a amplitude do índice e vários registros físicos identificados pelo índice. Além disso, uma faixa de valores para o índice usado para identificar os registros físicos pode não incluir o conjunto menor de valores ou uma faixa contígua de valores.
Em algumas modalidades, a lógica de controle de renomeação 122 pode desviar o número de registro de renomeação P255 para uma ou mais instruções que são tanto mais jovens em ordem de programa que a dada instrução imediata de movimento quanto têm uma dependência de dados na instrução imediata de movimento. Ademais, em resposta à recepção do número de registro de renomeação P255 como um operando de fonte para leitura, o arquivo de registro físico 164 pode emitir o valor numérico zero sem ler qualquer um dos múltiplos registros físicos. A lógica de desvio de leitura 166 no arquivo de registro físico 164 pode detectar o número de registro de renomeação P255 que é fornecido como um operando de fonte para leitura por uma instrução mais jovem em ordem de programa do que a instrução imediata de movimento, em que essa instrução mais jovem é dependente da instrução imediata de movimento. Em resposta, nenhum registro físico real é acessado. Ao invés disso, a lógica de desvio de leitura 166 pode decodificar o número de registro de renomeação P255 e determina se o valor numérico zero deve ser transferido para uma porta de dados de leitura. Nota-se que embora a lógica no arquivo de registro seja descrita como retornando um dado valor tal como zero em resposta à recepção do número de registro P255, em outras modalidades uma lógica que não está no ou de outra maneira que não é parte do arquivo de registro pode detectar o número de registro e fornecer um dado valor. Por exemplo, em algumas modali- dades, uma lógica, tal como multiplexadores de desvio que são incluídos como parte de uma trajetória de dados de pipeline, pode detectar o número de registro e forçar um dado valor (por exemplo, zero) em resposta. Em tais modalidades, o próprio arquivo de registro pode não estar consciente do recurso especial associado ao número de registro particular. Várias de tais modalidades são possíveis e são contempladas.
As etapas acima para a instrução imediata de movimento "mov r1, 0 // r1 <- 0" também podem ser usadas para outras instruções que gra- vam em um operando de destino um valor numérico particular conhecido antes de um estágio de pipeline de execução. Os exemplos anteriores e um exemplo adicional de reinicialização de um registro arquitetônico são mostrados a seguir: mov r1, 0 // r1 <- 0 and r1, r1, 0 // r1 = r1 AND 0 xor r1,r1,r1 // r1 = r1 XOR r1 A lógica de iniciação de ciclo zero 124 pode determinar antes de um estágio de pipeline de execução associado a uma instrução decodificada particular que a instrução particular grava um dado valor numérico em seu operando de destino. Em uma modalidade, a lógica 124 determina que a instrução tem um código operacional para uma instrução imediata de movimento e o valor imediato é um valor numérico particular conforme descrito anteriormente. Em outras modalidades, a lógica de iniciação de ciclo zero 124 determina que a instrução tem um código operacional para uma operação de lógica booleana, tal como uma AND ou uma XOR. Além disso, a lógica 124 determina a partir dos operandos de fonte que um resultado de 0 será escrito no operando de destino durante um estágio de pipeline de execução posterior. Por exemplo, um operando de fonte de 0 para a operação de lógica booleana AND rende um resultado de 0.
Em outro exemplo, dois operandos de fonte iguais para a operação de lógica booleana XOR rendem um resultado de 0. Portanto, as etapas semelhantes descritas acima em relação à renomeação de registro com um número de registro de renomeação particular, tal como P255, que não é as- sociado a um registro físico real, podem ser usadas. De maneira similar, o arquivo de registro físico 164 pode transferir um valor de 0 sem acessar um registro físico quando o mesmo recebe o número de registro de renomeação P255 como um operando de fonte para leitura. Semelhante ao que foi exposto acima, outros números de registro físico disponíveis não associados a um registro físico real podem ser usados diferentes de P255.
Em modalidades adicionais, a lógica de iniciação de ciclo zero 124 determina que uma instrução decodificada tem um código operacional para uma operação aritmética e determina a partir dos operandos de fonte que um resultado de 0 será gravado no operando de destino durante um estágio de pipeline de execução posterior. Por exemplo, uma operação de subtração aritmética com dois operandos de fonte iguais rende um resultado de 0. De maneira semelhante, uma operação de multiplicação aritmética com um operando de fonte de 0 produz um resultado de 0. Portanto, as etapas semelhantes descritas acima em relação à renomeação de registro com um número de registro de renomeação particular, tal como P255, que não é associado a um registro físico real, podem ser usadas. De maneira similar, o arquivo de registro físico 164 pode transferir um valor de 0 sem acessar um registro físico quando o mesmo recebe o número de registro de renomeação P255 como um operando de fonte para leitura. Exemplos dessas operações aritméticas são novamente mostrados a seguir: sub r1, r1, r1 // Μ = M - r1 mui r1, r1, 0 // r1 = r1 x 0 mov r2, 1 // r2 1 Em ainda outras modalidades, a lógica de iniciação de ciclo zero 124 pode determinar que o valor numérico particular pode ser outro valor, tal como um. Por exemplo, a última instrução mostrada acima é uma instrução imediata de movimento que grava o valor numérico um no operando de destino "r2". Em uma modalidade, o número de registro de renomeação P255 pode ser reservado para o valor numérico 0. Outro número de registro de renomeação disponível, tal como P254, pode ser reservado para o valor numérico 1. Portanto, as etapas semelhantes descritas acima em relação à renomeação de registro com um número de registro de renomeação particular que não é associado a um registro físico real podem ser usadas.
No exemplo acima, o operando de destino r2 pode ser renomeado para o número de registro de renomeação P254, o qual indica o valor numérico 1. De maneira similar, o arquivo de registro físico 164 pode transferir um valor de 1 sem acessar um registro físico quando o mesmo recebe o número de registro de renomeação P254 como um operando de fonte para leitura. Antes de continuar com detalhes adicionais em relação à conversão de instruções de inicialização de registro e outras instruções particulares para operações de ciclo zero, uma descrição adicional dos componentes no sistema de computador 100 é fornecida.
Uma ou mais instruções de um aplicativo de software podem ser extraídas do cache de instrução 104. As uma ou mais instruções podem ser indicadas por um endereço transferido pela lógica de seleção de endereço 102. Múltiplas instruções podem ser extraídas do cache de instrução 104 por ciclo de relógio se não há quaisquer falhas de cache de instrução. O endereço pode ser incrementado por um previsor de próxima extração 106. Um previsor de direção de ramificação 108 pode ser acoplado a cada um dentre o previsor de próxima extração 106 e a lógica de avaliação de fluxo de controle 112 em um estágio de pipeline posterior. O previsor 108 pode prever informações de instruções que mudam o fluxo de um corrente de instrução de executar uma próxima instrução sequencial. A unidade de decodificação 110 decodifica os códigos operacionais das múltiplas instruções extraídas. Alternativamente, as instruções podem ser dividias em microinstruções, ou micro-operações. Conforme usados no presente documento, os termos "instruções" e "micro-operações" são in-tercambiáveis visto que a invenção pode ser usada como uma arquitetura que utiliza ambas as implantações. Em uma modalidade, o bloco de avaliação de fluxo de controle 112 pode alterar a extração das instruções no sele-tor de endereço 102. Por exemplo, um valor de endereço absoluto associado a um código operacional de ramificação incondicional pode ser enviado ao seletor de endereço 102. A lógica de detecção de dependência de grupo intermediário de renomeação 114 pode encontrar dependência dentre instruções decodificadas pela unidade de decodificação 110. Um grupo intermediário de instruções pode incluir instruções decodificadas a partir de um ou mais ciclos de relógio, ou estágios de pipeline. Dependências tais como gravação após leitura (WAR), gravação após gravação (WAW) e leitura após gravação (RAW) podem ser detectadas. Vetores de dependência que indicam dependências entre instruções podem ser gerados. O mapeador 116 pode dividir instruções dentre recursos de hardware distribuídos por meio do uso de fatores tais como simultaneidade disponível, criticídade de cadeias de dependência e penalidades de comunicação.
Além de emissão fora de ordem de instruções para unidades de execução em uma microarquitetura superescalar, o processador 100 pode realizar renomeação de registro para aumentar a produtividade. O processador 100 pode incluir um conjunto de registros físicos maior que um conjunto de registros arquitetonicamente visíveis de ponto flutuante e número inteiro, tais como o arquivo de registro físico 164. Por meio do uso de hardware, o processador 100 renomeia dinamicamente um identificador de registro arquitetônico usado para um operando de destino. Em resposta à determinação de que um operando de fonte tem um identificador de registro arquitetônico igual a um operando de destino renomeado, o processador 100 pode atribuir ao operando de fonte um identificador de registro físico igual usado para re-nomear o operando de destino. A renomeação pode ocorrer após a decodificação de instrução.
Quando um operando de destino é renomeado, um novo número de registro físico do alocador de lista livre 130 pode ser usado. Alternativamente, um número de registro físico não identificado pode ser usado, o qual não está associado a qualquer um dos múltiplos registros físicos no arquivo de registro físico 164. Ao invés disso, esse número de registro físico é associado a um valor numérico particular. Quando uma instrução é confirmada, um registro físico que armazena o valor de destino de instrução se torna um candidato para retornar para uma lista livre de números de registro de reno- meação no alocador de lista livre 130. Entretanto, se um número de registro físico não definido é usado para o operando de destino, nenhum número de registro de renomeação foi anteriormente removido da lista livre durante o estágio de pipeline de renomeação para essa instrução. De maneira semelhante, nenhum número de registro de renomeação é adicionado à lista livre durante confirmação e baixa dessa instrução.
Quando o hardware renomeia um identificador de registro arquitetônico com um identificador de registro físico, o hardware armazena o mapeamento em uma estrutura de dados, tal como uma tabela de mapeamento. Conforme usado no presente documento, um identificador para um registro arquitetônico ou um registro físico também pode ser chamado de um número. Portanto, um identificador de registro arquitetônico também pode ser chamado de um número de registro arquitetônico. De maneira semelhante, um identificador de registro físico pode ser chamado de um número de registro físico. O número de registro físico usado para renomear um número de registro arquitetônico também pode ser chamado de um número de registro de renomeação. A unidade de renomeação de registro 120 pode incluir uma matriz e lógica de controle de renomeação 122 e uma lógica de iniciação de ciclo zero 124. A unidade de renomeação de registro 120 pode determinar qual números de registro físico usar para renomear números de registro arquitetônico usados tanto em operandos de fonte quanto de destino nas instruções. A unidade de renomeação de registro pode selecionar números de registro físico candidatos a partir do alocador de lista livre 130, uma tabela de mapeamento de renomeação na lógica de controle de renomeação 122 ou a lógica de iniciação de ciclo zero 124. A unidade de renomeação de registro pode determinar que uma dada instrução se qualifica para ser convertida para uma operação de ciclo zero conforme descrito anteriormente. A unidade de renomeação de registro 120 pode atribuir ao operando de destino um número de registro de renomeação associado a um valor numérico particular e não associado a um registro físico real no arquivo de registro físico 164. Além disso, a unidade de re- nomeação de registro 120 pode sinalizar a dada instrução de maneira a impedir que a mesma avance para a execução de instrução. Por exemplo, A unidade de renomeação de registro 120 pode sinalizar a instrução de movimento como finalizada em um estágio de pipeline de remessa.
Após as instruções terem sido decodificas e renomeadas, entradas associadas podem ser alocadas na fila de remessa 140. Instruções e identificadores renomeados associados, valores de contador de programa (PC), vetores de dependência, sinalizadores para finalização e assim por diante podem ser enviados para a fila de remessa 140 e poste rio rmente para o planejador 150. Várias exceções podem ser detectadas, tais como pelo núcleo de execução 160. Exemplos incluem exceções de proteção para a-cessos de memória, nenhuma tradução de endereço e assim por diante. As exceções podem fazer com que uma rotina de manuseio de exceção correspondente seja executada, tal como pelo microcódigo 142. O planejador 150 pode planejar instruções para execução no núcleo de execução 160. Quando operandos estão disponíveis e recursos de hardware também estão disponíveis, uma instrução pode ser emitida fora de ordem a partir do planejador 150 para uma das unidades funcionais no núcleo de execução 160. O planejador 150 pode ler seus operandos de fonte a partir do arquivo de registro físico 164 após a tradução de identificadores renomeados com uma tabela de mapeamento ou a partir da lógica de desvio de operando. Quando números de registro de renomeação particulares são usados que são associados a um valor numérico particular, mas não associados a um registro físico real, então a lógica de desvio de leitura 166 pode fornecer o valor numérico particular. Em tal caso, nenhum registro físico real pode ser acessado. Os operandos de fonte podem ser fornecidos ao núcleo de execução 160. O núcleo de execução 160 pode incluir uma unidade de armaze-namento/carga. A unidade de armazenamento/carga pode ser conectada a um cache de dados (não mostrado) e ao armazenamento temporário de armazenamento 172 diretamente ou através do armazenamento temporário de reordenamento (rob) 170. O processador 100 pode incluir um armazenamen- to temporário de tradução à parte (TLB) para cada um dentre o cache de instrução 104 e o cache de dados para evitar um custo de realização de uma tradução de memória completa durante a realização de um acesso de cache. O armazenamento temporário de armazenamento 172 pode armazenar endereços que correspondem a instruções de armazenamento. O rob 170 pode receber resultados do núcleo de execução 160. Além disso, resultados podem ser desviados para estágios de pipeline anteriores para encaminhamento de dados para instruções dependentes já na pipeline. O rob 170 pode garantir baixa e confirmação em ordem de instruções.
Referindo-se à Figura 2, um diagrama de blocos generalizado de uma modalidade de uma tabela que inclui números ou identificadores de arquivo de registro 200 é mostrado. Em uma modalidade, os números de registro 200 são uma lista sequencial de números que identificam números de registro de renomeação disponíveis para uso para renomeação de registro. Em modalidades alternativas, os números de registro não precisam ser sequenciais. Em uma modalidade, os números de registro 200 incluem tanto identificadores para registros físicos reais 202a a 202m quanto identificadores reservados 202n a 202v que não identificam registros físicos reais. Por exemplo, o número de registro 202a pode ter um identificador "0", o número de registro físico 202b pode tem um identificador "1", e assim por diante.
Os números de registro 202a a 202m podem ser usados para um arquivo de registro que inclui tanto registros arquitetônicos físicos quanto registros físicos não arquitetônicos (especulativos). Os registros arquitetônicos podem ter identificadores que são arquitetonicamente visíveis. Os identificadores para os registros não arquitetônicos (especulativos) podem não ser arquitetonicamente visíveis. Em algumas modalidades, os registros físicos tanto para os registros arquitetônicos físicos quanto para os registros não arquitetônicos (especulativos) físicos podem ser interligados entre si no arquivo de registro. Um mecanismo de mapeamento pode então ser usado para determinar o local de um dado registro arquitetônico no arquivo de registro. Por exemplo, um dado registro arquitetônico com o identificador r7 pode ser mapeado para um registo não arquitetônico (especulativo) com o identificador P23. Em um momento posterior, o registro r7 pode ser mapeado para um registo não arquitetônico (especulativo) diferente tal como P12.
Em uma modalidade, um dado arquivo de registro físico pode incluir 120 registros físicos, e uma dada arquitetura de conjunto de instruções (ISA) associada ao arquivo de registro físico pode ter 35 registros arquitetonicamente visíveis. Em tal caso, o arquivo de registro inclui 85 registros físicos adicionais aos 35 registros arquitetonicamente visíveis. Nesse exemplo, os números de registro associados aos 85 registros físicos são incluídos nos números de registro não arquitetônico 212. Em um exemplo, os números de registro físico arquitetônico e não arquitetônico (especulativo) 202a a 202m podem representar números de registro de renomeação contíguos 0 a 119, ou hO a h77. Novamente, os números de registro arquitetônico 210 e os números de registro não arquitetônico 212 são associados a registros físicos reais.
Em uma modalidade, um índice de 8 bits pode ser usado para acessar o arquivo de registro físico. Em tal caso, o índice pode suportar o acesso de um máximo de 256 registros físicos. Entretanto, devido ao consumo de potência, restrições imobiliárias no núcleo, simulações de microar-quitetura e/ou outros fatores, o arquivo de registro físico pode ser dimensionado para ser menor que o tamanho suportado de índice máximo. Em uma modalidade, embora o arquivo de registro físico seja menor que o tamanho de índice suportado, um ou mais índices que de outra maneira podem não estar associados a um registro físico real ainda podem ser usados. Conforme descrito anteriormente, um dado número de registro de renomeação não associado a um registro físico real pode ser associado a um valor numérico particular. No exemplo acima, os índices 120 a 255 (por exemplo, que correspondem aos números de registro 202n a 202v) não identificam registros físicos reais. Portanto, esses números de registro de renomeação disponíveis podem ser usados para renomear um operando de destino que é sabido por ser gravado antes de um estágio de pipeline de execução com um valor numérico particular. Por exemplo, o número de registro físico 255, ou hFF, pode ser associado ao valor numérico 0. O número de registro físico 254, ou hFE, pode ser associado ao valor numérico 1. Embora os números de registro físico sejam apresentados como valores contíguos como uma faixa entre 0 e um valor máximo representado por um índice de bits múltiplos, outras combinações de números de registro físico nos números de registro reservados 214 e valores numéricos são possíveis e contempladas.
Voltando-se agora para a Figura 3, um diagrama de blocos generalizado de uma modalidade de um arquivo de registro físico 300 é mostrado. Conforme mostrado, o arquivo de registro físico 300 inclui uma matriz 320, decodificadores múltiplos 310, acionadores de dados e lógica de leitura 370 e uma lógica de desvio de leitura 380. A matriz 320 inclui múltiplas células, em que cada célula 330 pode armazenar um bit de informações para um registro associado. As informações podem incluir informações de condição e dados que correspondem a um operando. Em relação à microarquitetura de um processador, o arquivo de registro físico 300 é um grande agrupamento de registros. Conforme descrito anteriormente, uma porção desses registros são registros arquitetônicos visíveis para um programador de software e um compilador. Os registros restantes podem ser registros não arquitetônicos usados durante o processo de renomeação de registro.
Conforme pode ser visto na Figura 3, o arquivo de registro físico 300 contém muitos conjuntos de circuitos e um acesso do arquivo de registro físico 300 pode consumir uma quantidade notável de potência. Além disso, o acesso pode incluir um atraso notável antes da recepção de uma resposta ou saída associada. Entretanto, para determinadas operações de leitura, a lógica de desvio de leitura 380 pode fornecer os dados de leitura 384 sem o conjunto de circuitos correspondente nos decodificadores 310, os acionadores de linha de palavra 318, a matriz 320 e a lógica de leitura 370 serem u-sados. Por exemplo, em resposta à lógica de leitura de desvio 380 receber um identificador de registro de leitura 382 que identifica um número de registro físico reservado não associado a um registro físico real, mas associado a um número numérico particular, a lógica de leitura de desvio fornece o número numérico particular nas linhas de saída indicadas pelos dados de leitura 372. O conjunto de circuitos nos decodificadores 310, os acionadores de linha de palavra 318, a matriz 320 e a lógica de leitura 370 não são usados. Portanto, tanto o consumo de potência quanto a latência são reduzidos para esse tipo de acesso.
Durante a operação, o arquivo de registro físico 300 pode receber um identificador de registro de leitura 382. O identificador de registro de leitura 382 pode ser um número de registro de renomeação (número de registro físico) para um operando de fonte de uma operação de leitura ou um operando de destino para uma operação de gravação. Os decodificadores 310 e os acionadores de linha de palavra 318 podem receber sinais de controle (não mostrados) que indicam se um acesso é para uma operação de leitura ou uma operação de gravação. Além disso, os decodificadores 310 e os acionadores de linha de palavra 318 podem receber o identificador de registro de leitura na linha 382 através da lógica de desvio de leitura 380. Altemativamente, os decodificadores 310 e os acionadores de linha de palavra 318 podem receber diretamente o identificador de registro de leitura na linha 382. Entretanto, a lógica de desvio de leitura 380 pode enviar sinais de controle para os decodificadores 310 e para os acionadores de linha de palavra 318 que determinam se esse conjunto de circuitos produz saída válida para enviar para a matriz 320. Por exemplo, se a lógica de desvio de leitura 380 determina que um identificador de registro de leitura na linha 382 corresponde a uma operação de inicialização de registro de ciclo zero, então a lógica 380 pode impedir que o conjunto de circuitos nos componentes 310 a 370 seja usado para o acesso. Ao invés disso, a lógica 380 fornece os dados de leitura associados na linha 384. A matriz 320 é tipicamente implantada como uma memória de acesso aleatório estática no núcleo (RAM) com portas de gravação e leitura dedicadas. Uma implantação da célula 330 é ilustrada na Figura 3. Tipicamente, cada um dos decodificadores 312 a 316 inclui uma série de portões de lógica booleana AND que acionam uma lógica de linha de palavra apropriada com os acionadores de linha de palavra 318. Na modalidade mostrada, os decodificadores 310 incluem dois decodificadores de leitura 312 e 314 e um decodificador de gravação 316. Consequentemente, uma dada célula 330 na matriz 320 inclui duas linhas de palavras de leitura, que são a linha de palavra 0 na linha 358 e a linha de palavra 1 na linha 360. Além disso, a célula 330 inclui duas portas de leitura, que são a porta de leitura 0 na linha 350 e a porta de leitura 1 na linha 352. De maneira semelhante, a célula 330 inclui uma linha de palavra de gravação única na linha 356. Em outras modalidades, um número diferente de decodificadores de leitura, portas de leitura, decodificadores de gravação e linhas de palavra de gravação podem ser usados.
Conforme mostrado, cada célula 330 tem inversores casados 332 e 334 para armazenar informações na célula 330. A saída de cada um dos inversores 332 e 334 pode fornecer o valor de bit associado para a célula ou uma versão invertida do valor de bit. Um valor alto de lógica pode ser equivalente ao valor de uma referência de potência. Um valor baixo de lógica pode se equivalente ao valor de uma referência de aterramento.
Durante uma operação de gravação, a linha de palavra de gravação é declarada para um valor alto de lógica na linha 356 para uma fileira particular. Os acionadores de linha de palavra 318 declaram a linha de palavra de gravação. Valores de dados valores apropriados são colocados em cada um dentre o bit de gravação 0 na linha 348 e o bit de gravação 1 na linha 354 através de dados que acionam o conjunto de circuitos no bloco 370. Esses valores fazem com que um dos dois nós ligados ao par de inversores 332 e 334 sejam descarregados para um valor baixo de lógica através da pilha de transistor que inclui os transistores nmos 340 e 342 ou a pilha de transistor que inclui os transistores nmos 344 e 346.
Quando uma operação de leitura não é manuseada pela lógica de desvio de leitura 380, o conjunto de circuitos nos componentes 310 a 370 é usado. Durante tal operação de leitura, uma ou ambas as linhas de palavra de leitura nas linhas 358 e 360 são declaradas para um valor alto de lógica. Um ou ambos os transistores nmos 336 e 338 são ligados. Consequentemente, o estado armazenado pelo par de inversores 332 e 334 é fornecido a uma ou ambas as portas de leitura nas linhas 350 e 352. Os valores nas linhas 350 e 352 são fornecidos à lógica de leitura no conjunto de circuitos bloco 370. Essa lógica de leitura pode incluir um ou mais de travas, flip flops e amplificadores de detecção. Conforme pode ser visto a partir da descrição de circuito e diagrama de blocos para o arquivo de registro físico 300, quando a lógica de desvio de leitura 380 é capaz de fornecer dados de leitura para operações de inicialização de registro de ciclo zero, o consumo de potência associado aos componentes de conjunto de circuitos 310 a 370 pode ser evitado. Além disso, a latência para a operação de leitura pode ser reduzida.
Voltando-se agora para a Figura 4, um diagrama de blocos generalizado que ilustra uma modalidade de renomeação de registro 400 com operações de inicialização de registro de ciclo zero é mostrado. Um exemplo simplificado de um laço desenrolado inclui as instruções 410a. Nesse exemplo, um operando de destino é listado primeiro após um mnemônico de instrução seguido de um ou mais operandos de fonte. Registros usam a nomenclatura geral de "r" seguida de um identificador de registro. Por exemplo, o registro 1 é representado por "r1". O laço original usado para derivar o código desenrolado com instruções 410a é mostrado a seguir: mov r1,0 mov r2, 1 mov r3, 10 xor r4, r4, r4 mov r5, 0 loop: add r1, r1, r2 add r4, r4, r3 add r5, r1, r5 add r2, r2, 1 sub r3, r3, 1 jnz loop Embora um laço seja usado aqui, um laço é desnecessário para determinar que as operações de inicialização de registro podem ser operações de inicialização de registro de ciclo zero. Essa determinação e uma criação subsequente de uma operação de ciclo zero podem ser usadas para vários tipos de código. As instruções 410a utilizam cinco registros arquitetônicos rotulados r1 a r5. Esses números de registro físico são associados a registros físicos reais. As instruções 410a são destinadas a ser um exemplo de pseudocódigo e agnóstico de linguagem. A tabela de mapeamento 420a geralmente mostra uma estrutura de dados para armazenara mapeamentos entre números de registro arquitetônico e números de registro físico. A lista livre 430a mostra uma estrutura de dados para indicar os números de registro físico não arquitetônico disponíveis para fins de reno-meação. Esses números de registro físico também são associados a registros físicos reais. Nesse exemplo, há 14 nomes de registro físico que usam a nomenclatura geral de "p" seguida de um identificador de registro. A lista livre 430a mostra que cada um dos registros físicos p1 a p14 é disponível para renomeação de registro. A lista reservada 432 mostra um agrupamento de pelo menos um número de registro físico para fins de renomeação. Nesse exemplo, há 4 nomes de registro físico que usam a nomenclatura geral de "p" seguida de um identificador de registro. Nesse exemplo, esses identificadores de registro são numerados mais altos do que os nomes de registro físico na lista livre 430a. Diferentemente dos nomes de registro físico na lista livre 430a, nenhum dos nomes de registro físico na lista reservada 432 é associado a um registro físico real. Ao invés disso, os nomes de registro físico na lista reservada 432 são associados aos valores numéricos particulares. Por exemplo, o nome de registro físico p15 pode ser associado ao valor numérico 0. De maneira semelhante, o nome de registro físico p16 pode ser associado ao valor numérico 1.
Em um exemplo, um índice de 4 bits pode ser usado para identificar números de registro físico. Portanto, 16 números de registro físico distintos podem ser identificados por um índice de 4 bits tais como os nomes de registro físico p1 a p16. Entretanto, pode haver apenas 14 registros físicos reais em um arquivo de registro físico. Processadores modernos usam números maiores do que os fornecidos nesse exemplo. Esse exemplo simplifi- cado é usado para fins ilustrativos. Com 5 registros arquitetônicos, tais como r1 a r5, uma renomeação de um a um pode ocorrer com os cinco primeiros nomes de registro físico p1 a p5. Há mais 9 registros físicos Portanto, os nomes de registro físico p6 a p14 são nomes de registro físico não arquitetônicos, mas cada um é associado a um registro físico real. Os 2 nomes de registro físico restantes, que são p15 e p16, podem ser usados para representar valores numéricos particulares. Nesse exemplo, os valores numéricos são 0 e 1, respectiva mente.
Referindo-se às instruções 410b, essas instruções são iguais às instruções 410a, entretanto, a renomeação de registro ocorreu para cada uma das instruções. O processo de renomeação pode renomear uma ou mais instruções em um dado estágio de pipeline. Qualquer número de instruções por estágio de pipeline pode ser escolhido para processamento simultâneo. A tabela de mapeamento 420b armazena os mapeamentos para cada uma das instruções. A tabela de mapeamento 420b mostra os mapeamentos armazenados entre números de registro arquitetônico e números de registro físico e números de registro reservados para cada uma das instruções. A lista livre 430b mostra que cada um dos registros físicos p7 a p14 ainda está disponível após cada uma das instruções 410b ter sido renomeada. Cada um dos registros físicos p1 a p6 foi usado para renomear os registros arquitetônicos r1 a r5 nas instruções 410b. A lista reservada 432 mostra que cada um dos números físicos reservados p15 a p16 ainda está disponível após cada uma das instruções 410b terem sido renomeadas. Entretanto, a tabela de mapeamento 420b mostra que cada um dos números físicos reservados p15 e p16 foi usado para renomear um ou mais dos registros arquitetônicos r1 a r5. Cada um dos números físicos reservados p15 a p16 é associado a um valor numérico, ao invés de um registro físico real. Portanto, cada um dos números físicos reservados p15 a p16 não muda de estar disponível para estar indisponível para fins de renomeação. Qualquer um dentre os dados números físicos reservados p15 a p16 pode ser usado para renomear um primeiro registro arquitetônico em uma primeira instrução seguido de ser usado para renomear um segundo registro arquitetônico em uma segunda instrução mais jovem embora a primeira instrução possa não ter sido confirmada ainda.
Observando as instruções 410b, a primeira instrução se qualifica para ser convertida a uma operação de inicialização de registro de ciclo zero. Essa instrução de movimento é uma operação imediata de movimento e grava o valor numérico 0 no operando de destino, que é o registro r1. O número de registro físico reservado p15 é associado ao valor numérico 0. Portanto, o registro r1 é renomeado para p15. Esse mapeamento é mostrado na tabela de mapeamento 420b. Essa instrução de movimento pode ser sinalizada para impedir a mesma avance para um estágio de pipeline de execução no processador. Por exemplo, a instrução de movimento pode ser sinalizada como finalizada em um estágio de pipeline de remessa. Em tais modalidades, o consumo de potência pode ser reduzido no processador visto que a instrução de movimento pode não avançar para o estágio de pipeline de remessa. Além disso, a produtividade para outras instruções pode aumentar visto que a instrução de movimento não utiliza recursos múltiplos após o estágio de pipeline de remessa que de outra maneira seria usados. Ademais, o tamanho da lista livre 430b aumenta, visto que cada um dos registros físicos p1 a p14 ainda está disponível para renomeação de registro. Um tamanho de lista livre aumentado também pode contribuir para um aprimoramento de desempenho. A lógica de renomeação pode atribuir o número de registro físico reservado p15 para operandos de fonte com um identificador igual ao registro r1 em instruções mais jovens em ordem de programa do que sua primeira instrução de movimento. Esse desvio do número de registro físico p15 pode ocorrer até que uma instrução mais jovem use o registro r1 como um operando de destino que é sabido por ser gravado com o valor numérico 0. Quando essas instruções mais jovens acessam o arquivo de registro físico para os operandos de fonte renomeados para p15, a lógica de desvio de leitura no arquivo de registro físico pode transferir o valor numérico 0 em linhas de saída de dados. Nenhum registro físico real pode ser acessado durante as operações de leitura que correspondem aos operandos de fonte renomeados para p15.
De maneira semelhante, a segunda instrução é se qualifica para ser convertida para uma operação de inicialização de registro de ciclo zero. Essa instrução de movimento é uma operação imediata de movimento e grava o valor numérico 1 no operando de destino, que é o registro r2. O número de registro físico reservado p16 é associado ao valor numérico 1. Portanto, o registro r2 é renomeado para p16. Esse mapeamento é mostrado na tabela de mapeamento 420b. Essa segunda instrução de movimento pode ser sinalizada para impedir que a mesma avance para um estágio de pipeli-ne de execução no processador. Semelhante à renomeação para o registro r1 discutido acima, vários benefícios tais como consumo de potência reduzido e produtividade de instrução aumentada podem ser obtidos visto que a segunda instrução de movimento não avança através do estágio de pipeline de execução. A lógica de renomeação pode atribuir o número de registro físico reservado p16 para operandos de fonte com um identificador igual ao registro r2 em instruções mais jovens em ordem de programa do que essa segunda instrução de movimento. Esse desvio do número de registro físico p16 pode ocorrer até que uma instrução mais jovem use o registro r2 como um operando de destino que é sabido por ser gravado com o valor numérico 1. Quando essas instruções mais jovens acessam o arquivo de registro físico para os operandos de fonte renomeados para p16, a lógica de desvio de leitura no arquivo de registro físico pode transferir o valor numérico 1 nas linhas de saída de dados. Nenhum registro físico real pode ser acessado durante as operações de leitura que correspondem aos operandos de fonte renomeados para p16. A terceira instrução é uma operação imediata de movimento, mas nesse exemplo, a mesma não se qualifica para ser convertida a uma operação de inicialização de registro de ciclo zero. A terceira instrução grava o valor numérico 10 no registro r3. Nesse exemplo, nenhum dos números de registro reservados físico p15 a p93 é associado ao valor numérico 10. Portanto, o registro r3 é renomeado para o número de registro físico p1. Esse mapeamento é mostrado na tabela de mapeamento 420b. A quarta instrução é uma operação de lógica booleana XOR. Cada um dos operandos de fonte tem um nome de registro arquitetônico igual, que é r4. Portanto, é sabido que o resultado é 0 e o operando de destino será gravado com o valor numérico 0. Às vezes um programador de software pode intencionalmente usar uma operação de lógica booleana XOR para reinicializar um dado registro, ao invés de usar uma operação imediata de movimento. Em algumas implantações de hardware, é sabido que a operação de lógica booleana XOR tem uma latência menor que uma operação imediata de movimento. Para a quarta instrução, o operando de destino tem o nome de registro arquitetônico igual aos operandos de fonte, mas a instrução foi qualificada para ser uma operação de ciclo zero fora de sua característica. O número de registro físico reservado p15 é associado ao valor numérico 0. Portanto, o registro r4 é renomeado para p15. Esse mapeamento é mostrado na tabela de mapeamento 420b. Além disso, a instrução de lógica booleana XOR também pode ser sinalizada para impedir que a mesma a-vance para um estágio de pipeline de execução no processador. O desvio do número de registro renomeado e o uso da lógica de desvio de leitura durante o acesso do arquivo de registro físico pode ocorrer conforme descrito anteriormente em relação ao registro físico reservado p15 para a primeira instrução de movimento. A quinta instrução se qualifica para ser convertida para uma operação de inicialização de registro de ciclo zero. Essa instrução de movimento é uma operação imediata de movimento e grava o valor numérico 0 no operando de destino, que é o registro r5. As etapas de renomeação, sinalização, desvio e acesso de arquivo de registro físico descritas anteriormente para a primeira instrução de movimento se aplica aqui para essa quinta instrução. A sexta instrução é uma operação aritmética ADD. Essa instrução não se qualifica para ser convertida para uma operação de ciclo zero. Cada um dos operandos de fonte r1 e r2 são renomeados para p15 e p16 devido ao acesso da tabela de mapeamento 420b e ao desvio dos valores de renomeação. O operando de destino é renomeado para p2. Para cada uma dentre a sétima à décima instruções, etapas semelhantes são tomadas conforme para a sexta instrução. Nenhuma dentre a sétima à décima instruções se qualifica para ser convertida para uma operação de ciclo zero.
Referindo-se agora à Figura 5, um diagrama de fluxo generalizado de uma modalidade de um método 500 para criar operações de ciclo zero é mostrado. No bloco 502, um dado identificador de registro não associado a um registro físico real é selecionado para corresponder a um valor numérico particular (por exemplo, é atribuído para representar o valor numérico particular). Se o último valor numérico particular foi alcançado (bloco condicional 504), então no bloco 506, as instruções de programa podem ser processadas. As instruções podem ser compiladas, extraídas da memória, decodificadas e executadas. Para fins de discussão, as etapas nessa modalidade são mostradas em uma ordem particular. Entretanto, em outras modalidades algumas etapas podem ocorrer em uma ordem diferente da mostrada, algumas etapas podem ser realizadas concomitantemente, algumas etapas podem ser combinadas com outras etapas e algumas etapas podem estar ausentes.
Após decodificação, uma dada instrução pode ser determinada para ser uma operação de inicialização de registro para um valor numérico qualificado. Um código operacional e operandos de fonte podem ser verificados para fazer essa determinação. Uma lógica de controle pode determinar antes de um estágio de pipeline de execução associado a uma instrução decodificada particular que a instrução particular grava um valor numérico qualificado em seu operando de destino. Em uma modalidade, a lógica que determina a instrução tem um código operacional para uma instrução imediata de movimento e o valor imediato é um valor numérico qualificado.
Em algumas modalidades, um dentre os um ou mais valores numéricos qualificados é o valor 0. Em tal caso, a lógica de controle pode determinar que uma instrução tem um código operacional para uma operação de lógica booleana, tal como uma AND ou uma XOR. Além disso, a lógica determina a partir dos operandos de fonte que um resultado de 0 será gravado no operando de destino durante um estágio de pipeline de execu- ção posterior. Por exemplo, um operando de fonte de 0 para a operação de lógica booleana AND rende um resultado de 0. De maneira semelhante, dois operandos de fonte iguais para a operação de lógica booleana XOR rendem um resultado de 0. Ademais, a lógica de controle pode determinar que uma instrução decodificada tem um código operacional para uma operação aritmética particular e valores particulares para os operandos de fonte podem fazer com que um resultado de 0 seja gravado no operando de destino durante um estágio de pipeline de execução posterior. Por exemplo, uma operação de subtração aritmética com dois operandos de fonte iguais rende um resultado de 0. De maneira semelhante, uma operação de multiplicação a-ritmética com um operando de fonte de 0 produz um resultado de 0.
Para pelo menos cada um dos casos acima de determinação de que um resultado de 0 deve ser gravado no operando de destino em um estágio de pipeline de execução posterior, as etapas semelhantes descritas anteriormente em relação à renomeação de registro com um identificador de registro de renomeação particular que não é associado a um registro físico real podem ser usadas. Se uma dada instrução não é determinada para ser uma operação de inicialização de registro para um valor numérico qualificado (bloco condicional 508), então o fluxo de controle do método 500 pode retornar para o bloco 506. Por exemplo, os operandos de destino e de fonte da dada instrução podem ser renomeados com identificadores de registro de renomeação associados a registros físicos reais em um arquivo de registro físico. O processamento de instruções de programa continua.
Se uma dada instrução é determinada para ser uma operação de inicialização de registro para um valor numérico qualificado (bloco condicional 508), então no bloco 510 o registro de destino arquitetônico identificador pode ser renomeado com um identificador de registro atribuído ao valor numérico qualificado. Esse identificador de registro pode não estar associado a um registro físico real em um arquivo de registro físico. Em um estágio de pipeline posterior, o arquivo de registro físico pode transferir um valor do valor numérico qualificado sem acessar um registro físico real quando o mesmo recebe esse identificador de registro de renomeação particular como um operando de fonte para leitura. Em uma modalidade, o valor numérico qualificado é zero. Entretanto, outros valores numéricos são possíveis e são contemplados como valores qualificados. No bloco 512, a operação de inicialização de registro pode ser sinalizada para impedir que a mesma avance na pipeline do processador. Por exemplo, a operação pode ser sinalizada como finalizada em um estágio de pipeline de remessa. Conforme discutido acima, o consumo de potência pode ser reduzido no processador visto que a inicialização de registro operação não avança através da pipeline. Além disso, a produtividade para outras instruções pode aumentar visto que a operação de inicialização de registro não utiliza recursos múltiplos (filas, unidade de execução, flops de preparo e assim por diante) em estágios posteriores da pipeline. Além disso, o tamanho da lista livre aumenta visto que nenhum dos registros físicos é usado para renomeação de registro nesse caso. Um tamanho de lista livre aumentado também pode contribuir para um aprimoramento de desempenho.
Embora as modalidades acima tenham sido descritas em detalhes consideráveis, inúmeras variações e modificações se tornarão evidentes àqueles versados na técnica uma vez que a revelação acima seja completamente observada. Pretende-se que as seguintes reivindicações sejam interpretadas como abrangendo tais variações e modificações.
Claims (21)
1. Processador que compreende: um decodificador configurado para decodificar instruções extraídas; e uma unidade de renomeação de registro configurada para receber instruções decodificadas; em que em resposta à detecção, uma instrução é configurada para gravar um dado valor numérico em um destino identificado por um operando de destino da instrução, sendo que a unidade de renomeação de registro é configurada para atribuir um dado registro de renomeação que é associado ao dado valor numérico ao operando de destino.
2. Processador, de acordo com a reivindicação 1, em que em resposta à dita detecção, uma indicação é armazenada, o que indica uma finalização de instrução.
3. Processador, de acordo com a reivindicação 2, em que o processador compreende ainda um arquivo de registro físico que inclui uma pluralidade de registros físicos, sendo que cada um é identificado por um registro de renomeação associado, e em que o dado registro de renomeação não é associado a qualquer uma dentre a pluralidade de registros físicos.
4. Processador, de acordo com a reivindicação 1, em que a unidade de renomeação de registro é configurada para atribuir o dado registro de renomeação para uso por múltiplas instruções concomitantemente.
5. Método que compreende: decodificar instruções extraídas; e em resposta à detecção, uma instrução é configurada para gravar um valor numérico em um local identificado por um operando de destino, atribuindo um dado identificador de registro de renomeação ao operando de destino, em que o dado identificador de registro de renomeação é associado ao valor numérico.
6. Processador de acordo com a reivindicação 1 ou método de acordo com a reivindicação 5, em que em resposta à dita detecção, impede que a dita instrução seja executada em um estágio de pipeline de execução.
7 Método, de acordo com a reivindicação 5, em que a dita detecção compreende detectar (i) um código operacional para uma instrução de movimento e (ii) um operando de fonte imediata da instrução de movimento que tem um mesmo valor como o valor numérico.
8. Método, de acordo com a reivindicação 5, em que o dado i-dentificador de registro de renomeação não é associado a um registro físico.
9. Processador de acordo com a reivindicação 1 ou método de acordo com a reivindicação 9, em que em resposta à detecção do dado identificador de registro de renomeação, transfere o dado valor numérico sem ler qualquer um dentre a pluralidade de registros físicos.
10. Processador de acordo com a reivindicação 1 ou método de acordo com a reivindicação 9, em que em resposta à recepção de uma indicação correspondente ao dado registro de renomeação, o arquivo de registro fornece o dado valor numérico.
11. Método, de acordo com a reivindicação 5, em que a detecção da dita instrução que é configurada para gravar o valor numérico no operando de destino compreende detectar (i) cada um dentre os identificadores de operando de fonte com um mesmo valor e (ii) um código operacional que corresponde a uma operação predeterminada.
12. Unidade de renomeação de registro que compreende: uma primeira interface configurada para receber instruções decodificadas; uma segunda interface para uma unidade de remessa configurada para remeter instruções a um planejador; e uma lógica de iniciação de ciclo zero; em que em resposta à detecção, uma instrução é configurada para gravar um valor numérico em um operando de destino, sendo que a lógica de iniciação de ciclo zero é configurada para atribuir um dado identificador de registro de renomeação ao operando de destino, em que o dado identificador de registro de renomeação é associado ao valor numérico.
13. Unidade de renomeação de registro, de acordo com a reivindicação 12, em que em resposta à dita detecção, a lógica de iniciação de ciclo zero é configurada adicionalmente para impedir que a dita instrução seja executada em um estágio de pipeline de execução.
14. Unidade de renomeação de registro, de acordo com a reivindicação 12, em que o dado identificador de registro de renomeação não é associado a um registro físico.
15. Unidade de renomeação de registro, de acordo com a reivindicação 12, em que a detecção da dita instrução que é configurada para gravar o valor numérico compreende detectar (i) um código operacional para uma instrução de movimento e (ii) um operando de fonte imediata da instrução de movimento que tem um mesmo valor como o valor numérico.
16. Unidade de renomeação de registro, de acordo com a reivindicação 12, em que a detecção da dita instrução que é configurada para gravar o valor numérico no operando de destino compreende detectar (i) cada um dentre os identificadores de operando de fonte com um mesmo valor e (ii) um código operacional que indica uma operação predeterminada.
17. Unidade de renomeação de registro, de acordo com a reivindicação 14, em que a detecção da dita instrução, que é configurada para gravar o valor numérico no operando de destino, compreende detectar (i) um operando de fonte imediata com um mesmo valor como o dado valor numérico e (ii) um código operacional que indica pelo menos uma dentre as operações a seguir: uma multiplicação aritmética, uma movimentação e uma lógica booleana AND.
18. Aparelho que compreende: uma lógica de controle; e um arquivo de registro físico que inclui uma pluralidade de registros físicos, sendo que cada um é identificado por um identificador de registro de renomeação associado; em que em resposta à detecção, uma instrução é configurada para gravar um valor numérico em um operando de destino, sendo que a lógica de controle é configurada para atribuir um dado identificador de registro de renomeação ao operando de destino, em que o dado identificador de registro de renomeação é mapeado para o valor numérico.
19 Aparelho, de acordo com a reivindicação 18, em que em resposta à dita detecção, a lógica de controle é configurada adicionalmente para impedir que a dita instrução seja executada em um estágio de pipeline de execução.
20. Aparelho, de acordo com a reivindicação 19, em que em resposta à recepção do dado identificador de registro de renomeação, o arquivo de registro físico é configurado para fornecer o dado valor numérico sem ler qualquer uma dentre a pluralidade de registros físicos.
21. Aparelho, de acordo com a reivindicação 19, que compreende ainda uma lógica de desvio que é configurada para detectar a dita instrução e fornecer o dito valor numérico sem acessar o arquivo de registro.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/460,268 US9430243B2 (en) | 2012-04-30 | 2012-04-30 | Optimizing register initialization operations |
US13/460,268 | 2012-04-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
BR102013010540A2 true BR102013010540A2 (pt) | 2015-10-13 |
BR102013010540B1 BR102013010540B1 (pt) | 2021-07-06 |
Family
ID=48190184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
BR102013010540-6A BR102013010540B1 (pt) | 2012-04-30 | 2013-04-29 | processador e método para operações de inicialização de registro otimizantes |
Country Status (8)
Country | Link |
---|---|
US (1) | US9430243B2 (pt) |
EP (1) | EP2660715B1 (pt) |
JP (1) | JP5853303B2 (pt) |
KR (1) | KR101502682B1 (pt) |
CN (1) | CN103377037B (pt) |
BR (1) | BR102013010540B1 (pt) |
TW (1) | TWI507980B (pt) |
WO (1) | WO2013165752A1 (pt) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112012007058T5 (de) * | 2012-12-19 | 2015-08-06 | Intel Corporation | Vektormaskengesteuertes Clock-Gating für Leistungseffizenz eines Prozessors |
US9251300B2 (en) * | 2013-10-25 | 2016-02-02 | Altera Corporation | Methods and tools for designing integrated circuits with auto-pipelining capabilities |
US20170083313A1 (en) * | 2015-09-22 | 2017-03-23 | Qualcomm Incorporated | CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs) |
US10528355B2 (en) * | 2015-12-24 | 2020-01-07 | Arm Limited | Handling move instructions via register renaming or writing to a different physical register using control flags |
US10949202B2 (en) | 2016-04-14 | 2021-03-16 | International Business Machines Corporation | Identifying and tracking frequently accessed registers in a processor |
US10007590B2 (en) | 2016-04-14 | 2018-06-26 | International Business Machines Corporation | Identifying and tracking frequently accessed registers in a processor |
US10255072B2 (en) * | 2016-07-01 | 2019-04-09 | Intel Corporation | Architectural register replacement for instructions that use multiple architectural registers |
GB2563582B (en) * | 2017-06-16 | 2020-01-01 | Imagination Tech Ltd | Methods and systems for inter-pipeline data hazard avoidance |
US10915317B2 (en) * | 2017-12-22 | 2021-02-09 | Alibaba Group Holding Limited | Multiple-pipeline architecture with special number detection |
JP7131236B2 (ja) * | 2018-09-20 | 2022-09-06 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
CN111638911A (zh) * | 2019-03-01 | 2020-09-08 | 阿里巴巴集团控股有限公司 | 一种处理器、指令执行设备及方法 |
US10896041B1 (en) * | 2019-09-25 | 2021-01-19 | Microsoft Technology Licensing, Llc | Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices |
US11119772B2 (en) * | 2019-12-06 | 2021-09-14 | International Business Machines Corporation | Check pointing of accumulator register results in a microprocessor |
CN111414196B (zh) * | 2020-04-03 | 2022-07-19 | 中国人民解放军国防科技大学 | 一种零值寄存器的实现方法及装置 |
US11113067B1 (en) * | 2020-11-17 | 2021-09-07 | Centaur Technology, Inc. | Speculative branch pattern update |
CN112416434B (zh) * | 2020-12-03 | 2023-02-17 | 海光信息技术股份有限公司 | 物理寄存器分配方法、物理寄存器分配装置和电子设备 |
US11531546B2 (en) | 2021-03-08 | 2022-12-20 | International Business Machines Corporation | Hexadecimal floating point multiply and add instruction |
CN113703832B (zh) * | 2021-09-10 | 2024-06-11 | 中国人民解放军国防科技大学 | 一种立即数转移指令的执行方法、装置及介质 |
CN114116229B (zh) * | 2021-12-01 | 2023-03-31 | 北京奕斯伟计算技术股份有限公司 | 调节指令流水线的方法及装置、存储器和存储介质 |
CN115640047B (zh) * | 2022-09-08 | 2024-01-19 | 海光信息技术股份有限公司 | 指令操作方法及装置、电子装置及存储介质 |
CN116339830B (zh) * | 2023-05-26 | 2023-08-15 | 北京开源芯片研究院 | 一种寄存器管理方法、装置、电子设备及可读存储介质 |
CN117289995B (zh) * | 2023-10-11 | 2024-05-10 | 海光信息技术股份有限公司 | 指令处理方法以及处理器 |
CN117555600B (zh) * | 2023-10-20 | 2024-08-23 | 海光信息技术(成都)有限公司 | 用于数据通路的操作方法、计算装置及存储介质 |
CN117931294B (zh) * | 2024-03-22 | 2024-07-16 | 芯来智融半导体科技(上海)有限公司 | 指令处理设备和处理系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4435753A (en) | 1980-10-31 | 1984-03-06 | International Business Machines Corporation | Register allocation system using recursive queuing during source code compilation |
DE69130588T2 (de) | 1990-05-29 | 1999-05-27 | National Semiconductor Corp., Santa Clara, Calif. | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
US5696957A (en) | 1991-05-17 | 1997-12-09 | Ricoh Company, Ltd | Integrated circuit comprising a central processing unit for executing a plurality of programs |
JP3206960B2 (ja) | 1991-05-17 | 2001-09-10 | 株式会社リコー | 拡張中央演算処理装置 |
US5452426A (en) | 1994-01-04 | 1995-09-19 | Intel Corporation | Coordinating speculative and committed state register source data and immediate source data in a processor |
US5768610A (en) * | 1995-06-07 | 1998-06-16 | Advanced Micro Devices, Inc. | Lookahead register value generator and a superscalar microprocessor employing same |
US6112019A (en) | 1995-06-12 | 2000-08-29 | Georgia Tech Research Corp. | Distributed instruction queue |
GB2317464A (en) | 1996-09-23 | 1998-03-25 | Advanced Risc Mach Ltd | Register addressing in a data processing apparatus |
US6122725A (en) | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6094716A (en) * | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
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 |
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 |
US6553483B1 (en) | 1999-11-29 | 2003-04-22 | Intel Corporation | Enhanced virtual renaming scheme and deadlock prevention therefor |
US7631207B1 (en) * | 2006-04-21 | 2009-12-08 | Sun Microsystems, Inc. | Reducing power consumption for processing of common values in microprocessor registers and execution units |
US20100274961A1 (en) | 2009-04-22 | 2010-10-28 | Golla Robert T | Physically-indexed logical map table |
GB2478726B (en) | 2010-03-15 | 2013-12-25 | Advanced Risc Mach Ltd | Mapping between registers used by multiple instruction sets |
-
2012
- 2012-04-30 US US13/460,268 patent/US9430243B2/en active Active
-
2013
- 2013-04-23 WO PCT/US2013/037793 patent/WO2013165752A1/en active Application Filing
- 2013-04-24 EP EP13165090.5A patent/EP2660715B1/en active Active
- 2013-04-28 CN CN201310233474.6A patent/CN103377037B/zh active Active
- 2013-04-29 BR BR102013010540-6A patent/BR102013010540B1/pt active IP Right Grant
- 2013-04-29 TW TW102115293A patent/TWI507980B/zh active
- 2013-04-30 KR KR1020130048660A patent/KR101502682B1/ko active IP Right Grant
- 2013-04-30 JP JP2013095092A patent/JP5853303B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP2660715A3 (en) | 2014-05-21 |
CN103377037B (zh) | 2016-08-10 |
EP2660715B1 (en) | 2015-10-07 |
KR20130122587A (ko) | 2013-11-07 |
KR101502682B1 (ko) | 2015-03-13 |
TWI507980B (zh) | 2015-11-11 |
JP2013232196A (ja) | 2013-11-14 |
US20130290680A1 (en) | 2013-10-31 |
WO2013165752A1 (en) | 2013-11-07 |
BR102013010540B1 (pt) | 2021-07-06 |
JP5853303B2 (ja) | 2016-02-09 |
TW201403472A (zh) | 2014-01-16 |
US9430243B2 (en) | 2016-08-30 |
CN103377037A (zh) | 2013-10-30 |
EP2660715A2 (en) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
BR102013010540A2 (pt) | operações de inicialização de registro otimizantes | |
US10534616B2 (en) | Load-hit-load detection in an out-of-order processor | |
US10977047B2 (en) | Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses | |
US10963248B2 (en) | Handling effective address synonyms in a load-store unit that operates without address translation | |
US10642617B2 (en) | Processor with an expandable instruction set architecture for dynamically configuring execution resources | |
JP5894120B2 (ja) | ゼロサイクルロード | |
US9311084B2 (en) | RDA checkpoint optimization | |
US20170097891A1 (en) | System, Method, and Apparatus for Improving Throughput of Consecutive Transactional Memory Regions | |
US8938605B2 (en) | Instruction cracking based on machine state | |
US10572257B2 (en) | Handling effective address synonyms in a load-store unit that operates without address translation | |
US9317285B2 (en) | Instruction set architecture mode dependent sub-size access of register with associated status indication | |
US10235177B2 (en) | Register reclamation | |
US11599359B2 (en) | Methods and systems for utilizing a master-shadow physical register file based on verified activation | |
WO2019069255A1 (en) | MANAGING EFFECTIVE ADDRESS SYNONYMS IN A LOADING-STORAGE UNIT OPERATING WITHOUT ADDRESS TRANSLATION | |
US20190179641A1 (en) | Effective address based instruction fetch unit for out of order processors |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
B03A | Publication of a patent application or of a certificate of addition of invention [chapter 3.1 patent gazette] | ||
B06F | Objections, documents and/or translations needed after an examination request according [chapter 6.6 patent gazette] | ||
B06U | Preliminary requirement: requests with searches performed by other patent offices: procedure suspended [chapter 6.21 patent gazette] | ||
B06A | Patent application procedure suspended [chapter 6.1 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 29/04/2013, OBSERVADAS AS CONDICOES LEGAIS. |