BRPI0807405A2 - Esvaziamento de encadeamento segmentado para ramificações preditas erroneamente - Google Patents

Esvaziamento de encadeamento segmentado para ramificações preditas erroneamente Download PDF

Info

Publication number
BRPI0807405A2
BRPI0807405A2 BRPI0807405-4A BRPI0807405A BRPI0807405A2 BR PI0807405 A2 BRPI0807405 A2 BR PI0807405A2 BR PI0807405 A BRPI0807405 A BR PI0807405A BR PI0807405 A2 BRPI0807405 A2 BR PI0807405A2
Authority
BR
Brazil
Prior art keywords
instructions
thread
instruction
branch
emptying
Prior art date
Application number
BRPI0807405-4A
Other languages
English (en)
Inventor
Michael Scott Mcilvaine
James Norris Dieffenderfer
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 BRPI0807405A2 publication Critical patent/BRPI0807405A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

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)

Description

"ESVAZIAMENTO DE ENCADEAMENTO SEGMENTADO PARA RAMIFICAÇÕES PREDITAS ERRONEAMENTE".
Campo da Invenção
A presente invenção refere-se em geral à predição 5 de ramificação em processadores de encadeamento (pipeline}. Especificamente, esta invenção se refere a um sistema e método para esvaziar independentemente dois segmentos do mesmo encadeamento em tempos diferentes para maximizar o desempenho e a eficiência das instruções de ramificação 10 preditas erroneamente.
Descrição da Técnica Anterior
A maioria dos processadores modernos emprega uma arquitetura de encadeamento, em que as instruções seqüenciais, sendo cada uma, dotada de múltiplas etapas de execução, são sobrepostas em execução. Para máximo desempenho, as instruções devem fluir continuamente através do encadeamento. Contudo, as instruções frequentemente se tornam paralisadas no encadeamento por várias razões, como, por exemplo, dependências de. dados entre instruções,. retardos associados aos acessos de memória, incapacidade para alocar recursos de encadeamento. suficientes para ; instruções, e , similares. Minimizar as paralisações do encadeamento e solucionar os mesmos com eficiência são fatores importantes para alcançar desempenho de processador aperfeiçoado.
A maioria dos programas do mundo real inclui instruções de ramificação condicional, cujo comportamento de, ramificação atual não é conhecido até que a instrução seja profundamente avaliada no encadeamento. A maioria dos 30 processadores modernos emprega várias formas de predição de ramificação, por meio das quais o comportamento de ramificação de instruções de ramificação condicional é predito antecipadamente no encadeamento, e o processador recupera e executa especulativamente as instruções, alocando especulativamente os recursos de encadeamento para 5 as mesmas, com base na predição de ramificação. Quando o comportamento de ramificação atual é determinado, se a ramificação for predita erroneamente, as instruções recuperadas especulativamente devem ser esvaziadas do encadeamento, recursos alocados especulativamente devem ser 10 desalocadas e retornadas ao seu estado anterior à predição de ramificação, e as novas instruções devem ser recuperadas do endereço alvo de ramificação correto.
Por um lado, idealmente, o encadeamento deveria ser esvaziado imediatamente ao detectar a predição errônea, de maneira que as instruções corretas possam .ser recuperadas e lançadas no encadeamento, diminuindo o retardo provocado pelo erro na predição de ramificação. Por outro lado, as instruções recuperadas do caminho de ramificação errôneo podem ter vários estáqios de execução especulativa, e podem ter sido alocados especulativamente vários recursos de processador. É difícil "desenrolar" imediatamente essas alocações, para restaurar os recursos para seu estado de predição de pré-ramif icação, e pode incorrer numerosos ciclos de processador e/ou requerer inúmeras. cópias duplicativas dos recursos alocados especulativamente. As penalidades incorridas . pela
esvaziamento imediato do encadeamento são adicionalmente exacerbadas nos processadores que suportam execução de instrução fora de ordem, como, por exemplo, os 30 processadores superescalares, devido ao desafio adicional de rastrear o envelhecimento de instrução relativo. Este rastreamento de envelhecimento de instrução é necessário para assegurar que apenas estas instruções que foram recuperadas após a instrução de ramificação predita erroneamente (na ordem de programa) sejam esvaziadas, e que todas as instruções adiante das instruções de ramificação (na ordem de programa) sejam executadas, mesmo se as mesmas 5 estiverem atrás das instruções de ramificação no encadeamento.
Resumo da Invenção
A partir da determinação de uma predição errada de ramificação, um processador pode facilitar a tarefa de esvaziar seu encadeamento de instruções recuperadas erroneamente e executadas especulativamente continuando a execução normal para (idealmente) apenas alguns ciclos, e utilizando o hardware existente que controla os esvaziamentos de encadeamento na eventualidade de exceções. Esse processo pode reduzir drasticamente o custo e a complexidade de esvaziamento do encadeamento em resposta ao erro de predição. Contudo, o retardo extra incorrido é um contador para o objetivo de esvaziar imediatamente o encadeamento para recuperar rapidamente as instruções do endereço alvo de ramificação correto.
De acordo com uma ou mais modalidades, uma parte superior do encadeamento - antes das instruções sairem da ordem ..de programa - é imediatamente esvaziada ao ser detectado que, a, instrução de ramificação foi predita com 25 erro, permitindo recuperação imediata das instruções do endereço alvo de ramificação correto. Cada parte inferior do encadeamento pode continuar a execução até confirmar a instrução de ramificação predita erroneamente, no momento em que todas as instruções não efetivadas são esvaziadas do 30 encadeamento inferior. Mecanismos de esvaziamento de encadeamento de exceção existente, podem ser utilizados ao adicionar um identificador de ramificação predito erroneamente, reduzindo a complexidade e custos de hardware de esvaziamento de’encadeamento inferior.
Uma modalidade refere a um método para executar instruções em um processador encadeado que permite execução 5 fora de ordem. Ao detectar uma instrução de ramificação predita erroneamente, um encadeamento superior, isto é, a parte do encadeamento anterior a um ponto no qual instruções podem estar fora da ordem do programa, é esvaziada. Ao efetivar a instrução de ramificação predita 10 erroneamente para execução, todas as instruções não efetivadas são esvaziadas do encadeamento inferior, isto é, a parte do encadeamento além da qual as instruções podem estar fora da ordem de programa.
Gutra modalidade se refere a um processador. 0 processador, inclui lógica de controle, e um encadeamento de execução de . instrução segmentado compreendendo um encadeamento superior anterior ao ponto no qual as instruções podem estar fora de ordem, e um ou mais eneadeamentos posterior ao ponto no qual as instruções podem estar fora de ordem. A lógica de controle é operativa para esvaziar todas as instruções do encadeamento superior ao detectar uma ramificação predita erroneamente, e é. também operativo para esvaziar todas as instruções não efetivadas dos eneadeamentos inferiores ao efetivar a instrução , de : ramificação predita erroneamente para execução.
Breve Descrição dos Desenhos
A Figura 1 e um diagrama em blocos funcional de uma modalidade de um processador encadeado superescalar possuindo esvaziamento de encadeamento segmentado para predições errôneas de ramificação. A Figura 2 é um fluxograma de um método de execução de instrução no processador da Figura 1.
Descrição Detalhada da Invenção
A Figura 1 descreve um diagrama em blocos 5 funcional de um processador 10 possuindo esvaziamento de encadeamento segmentado para predições errôneas de ramificação. 0 processador 10 executa instruções em um encadeamento de execução de instruções 12 de acordo com a lógica de controle 11, que inclui um Mecanismo de Ordenação 10 de Instrução (IOM) 13. 0 encadeamento 12 é dividido logicamente, como explicado aqui mais detalhadamente, em uma parte superior 14 e uma parte inferior 16. 0 encadeamento 12 pode ser um projeto superescalar, com múltiplos eneadeamentos inferiores paralelos 16a, 16b. . Os 15 eneadeamentos 14, 16 incluem vários registradores ou latches 18, organizados em estágios de canal, bem como circuitos ,lógicos ei computacionais como, por exemplo, Unidadps Lógicas Aritméticas (ALU) (não ilustradas). Um arquivo de Registrador de Propósito. . Geral (GPR) 20 20 proporciona., registradores compreendendo o topo, da hierarquia de memória. Conforme aqui comentado, o GPR 20 pode incluir uma Tabela de Renomeação Especulativa (SRT) 22 e uma Tabela de Renomeação Efetuada (CRT) 24 para alocar especulativamente os recursos GPR para as instruções.
0 encadeamento superior 14 esvazia as instruções
provenientes de um Cache de Instrução (Cache-I ou 1$) 26, com o endereçamento e permissões de memória gerenciadas por um Buffer de Tradução de Endereços ao lado de Intrução (ITLB) 28. Os dados são acessados da Cache de Dados 30 ^Caçlie-Q;; oui oRlcom o endereçamento e permi ssões de mempria gerenciadas por um Buffer de tradução de Endereços (TLB) 32. Em várias modalidades, o ITLB 28 pode compreender uma cópia de parte do TLB 32. Alternativamente, o ITLB 28 e o TLB 32 podem ser integrados. Similarmente, em várias modalidades do
processador 10, a cache-I 26 e a cache-D 30 podem ser 5 unificadas.
As falhas na cache-I 28 e/ou na cache-D 30 ocasiona um acesso à memória principal (off-chip) 34, sob o controle de uma interface de memória 36 ■ (outras caches podem ser interpostas entre o processador 10 e a memória 10 principal 34, não ilustrados). O processador 10 pode incluir interface de Entrada / Saída (I/O) 38, controlando o acesso a vários dispositivos periféricos 40, 42. Os versados na técnica irão reconhecer que inúmeras variações do processador 10 são possíveis. Por exemplo, o
processador 10 pode.incluir uma cache de segundo nível (L2) para uma s ou ambas as Caches IeD 26, 30. Além disso, um ou. mais blocos funcionais descritos no processador 10 podem ser omitidas de uma modalidade específica.
A divisão lógica do encadeamento 12 . em um
encadeamento. superior.....14 e um ou .mais eneadeamentos
inferiores 16 é determinada, pela certeza .com a . qual ag instruções podem ,ser imediatamente esvaziadas do encadeamento . superior. 14, sem efetivar a ordem de instrução. Especificamente, o encadeamento superior 14 é 25 definido como uma parte do encadeamento 12 anterior ao ponto no qual as instruções podem sair da ordem de programa. Similarmente, o encadeamento inferior 16 é definido como uma parte do encadeamento 12 posterior ou seguinte ao encadeamento superior 14. Nos processadores 30 que suportam execução fora de ordem, as instruções no encadeamento inferior 16 podem ser despachadas para estágios em cadeia em uma ordem de programa que não a sua. Na maioria das modalidades, o encadeamento superior 14 irá compreender todos os estágios de recuperação e decodificação, e o encadeamento inferior 16 inclui um estágio de emissão de instrução (no caso de um encadeamento superescalar) e um ou mais eneadeamentos de execução.
5 Essa divisão lógica do encadeamento 12 permite
que o encadeamento superior 14 seja esvaziado imediatamente ao ser detectado uma ramificação predita erroneamente, minimizando, assim, o tempo requerido para recuperar as instruções do endereço alvo de ramificação correto. Isso 10 permite adicionalmente que o, encadeamento inferior 14 continue a execução, se beneficiando, · portanto, dos mecanismos de esvaziamento de exceção existentes para esvaziar eficientemente o encadeamento inferior 14 de todas as instruções recuperadas especulativamente após a 15 ramificação predita erroneamente.
O esvaziamento do encadeamento superior 14 é direto. Devido ao fato do encadeamento superior 14 ser definido antes do ponto no qual as instruções podem sair da ordem de programa, e a determinação da ramificação predita 20 erroneamente ocorrer em um estágio de execução . no encadeamento inferior 16, é sabido que todas as instruções no encadeamento superior 4 0 no momento, da determinação; da predição errônea são mais recentes do, que a instrução da ramificação predita erroneamente.; ' Istp é,. as mesmas são 25 recuperadas com confiança na predição de .ramificação, e podem; ser seguramente esvaziadas, como, por exemplo., o ciclo; que segue, a detecção da ramificação predita erroneamente. Isso permite que o processador 10 comece a recuperar as instruções do endereço alvo de ramificação 30 correto logo que possível, minimizando a duração da paralisação do encadeamento.
O esvaziamento do encadeamento inferior 16 é mais problemático. Devido ao fato das instruções poderem sér executadas fora da ordem de programa, não é possível presumir que todas as instruções atrás da ramificação erroneamente predita no encadeamento sejam mais recentes do que a instrução de ramificação predita erroneamente e são 5 seguras para esvaziar. Por exemplo, considerando as instruções a seguir: LD, ADD, BR, onde a LD proporciona um operando para a ADD, mas a BR é independente de ambos. A operação LD requer um acesso à memória, que possa paralisar o encadeamento 16, particularmente no caso de uma falha do 10 cache-D 30. A ADD, naturalmente, deve esperar o término da LD. Contudo, a instrução BR independente pode ser despachada em um encadeamento inferior 16 para execução na frente da LD e ADD. Se a avaliação da condição BR detectar que foi predita . erroneamente, o processador não pode 15 simplesmente esvaziar o encadeamento inferior 16 atrás da instrução BR. Isso esvaziaria a LD e a ADD, ambas as quais precedem a BR na ordem de programa, e devem ser executadas.
A maioria dos processadores superes.calares 10 inclui um Gerenciador de Ordem de Instrução (IOM) como 20 parte da lógica de controle de encadeamento 11. Um IOM rastreia a ordem de execução de instrução através. do encadeamento - isto é, cujas instruções são mais antigas ou mais recentes do que uma determinada instrução - pela manutenção, das representações de instruções na ordem de 25 programa; verdadeira, como, por exemplo, em um buffer CireyiafIJ7.. FIFC, ομ gimilar... ; Através dos atributos, ou indicadores associados às representações de instrução, um IOM adicionalmente rastreia as dependências de instrução, e é; útil no controle de exceção. De acordo com uma ou mais 30 modalidades, o IOM 13 no processador 10 inclui circuitos e lógica adicionais que facilitam o esvaziamento eficiente do encadeamento inferior ao descobrir uma instrução de ramificação predita erroneamente. Uma breve revisão da regra do IOM 13 no controle de exceção irá esclarecer o esvaziamento da ramificação erroneamente predita do encadeamento inferior 16 de acordo com as modalidades aqui reivindicadas.
5 Uma exceção ocorre sempre que um estágio de canal
é incapaz de completar sua execução de uma etapa de instrução. Por exemplo, uma instrução de memória que grava dados para a memória pode ocasionar uma exceção se uma busca TLB 32 indicar que a página de memória é apenas de 10 leitura. Outros tipos de exceções são bem conhecidos na técnica. Ao encontrar uma exceção, o processador 10 deve executar todas as instruções anteriores, ou mais antigas no encadeamento ..12; -esvazia a instrução que está causando a exceção e todas as instruções mais recentes do encadeamento 15 12;, e então recupera e executa código de controle de interrupção. 0 IOM 13 auxilia nesse processo ao rastrear quais .instruções são "confirmadas" e quais são "efetivadas".
Uma instrução é confirmada quando é determinado que, nenhum risco de encadeamento irá impedir sua execução isto . é, a instrução não irá paralisar. Por exemplo, uma instrução que executa uma operação aritmética ou lógica pode ser confirmada quando ambos os operandos são conhecidos como tendo sido gerados de instruções anteriores, recuperados da memória, ou estejam de outro modo disponíveis. Uma instrução é efetivada quando essa instrução - e todas as instruções mais antigas - são confirmadas. Uma instrução efetivada é conhecida como çapaz de . completar j execução, porque,., nenhum risco de encadeamento:impede que a mesma (a própria instrução seja confirmada) ou qualquer instrução à frente da mesma (todas as instruções mais antigas são confirmadas) . Todas . as, instruções efetivadas devem ser executadas. A regra convencional durante o controle da exceção é que todas as instruções efetivadas sejam esvaziadas do encadeamento 12 quando a instrução que ocasiona a exceção é a "última instrução efetivada". Isto é, todas as instruções antes da instrução que ocasionaram'a exceção foram efetivadas para execução, exceto a instrução que ocasionou a exceção, e todas aquelas mais recentes do que a mesma não foram. As instruções não efetivadas (incluindo a que ocasionou a exceção) são esvaziadas, e as instruções efetivadas continuam a execução. Novas
instruções são recuperadas de um endereço controlador de interrupção.
Ao contrário de uma instrução que ocasiona-- uma exceção, uma instrução de ramificação predita erroneamente deve ser executada e não esvaziada. Apenas a predição. de ramificação foi errônea - a própria instrução - de ramificação deve executar, e direcionar.o fluxo de programa para o endereço alvo de ramificação apropriado. Portanto, todas ; as instruções não.efetivadas são esvaziadas dos eneadeamentos inferiores 16a, 16b quando a instrução de ramificação predita erroneamente é a "instrução efetivada mais recente". .Isto é, a instrução de ramificação, predita erroneamente ,e todas as instruções anteriores à mesma foram efetivadas para execução, mas todas as instruções seguintes à ramificação (estas recuperadas do endereço alvo da ramificação erroneamente predita) não foram efetivadas. As instruções não efetivadas são esvaziadas, e as instruções efetivadas (incluindo a instrução de ramificação predita erroneamente) continuam a execução.
Em uma ou mais modalidades, cada entrada no IOM 13 inclui um indicador de ramificação erroneamente predito (MPB), ou campo. da .bit, . que é inicializado para um estado não declarado quando a entrada do IOM 13 é criada. Uma instrução de ramificação irá normalmente confirmar, imediatamente após sua avaliação de ramificação, uma vez que esta não tem outras dependências de dados. Um estágio de canal de confirmação segue o estágio de avaliação de condição de ramificação em cada encadeamento 16a, 16b no qual as instruções de ramificação são executadas, e ajusta um indicador confirmado no IOM 13. 0 estágio de canal de confirmação adicionalmente compara a avaliação de ramificação com seu valor predito, e também ajusta o indicador MPB no IOM 13 se a ramificação foi predita erroneamente. Ao encontrar o indicador MPB ao efetivar as instruções para execução, o IOM 13 e a lógica de controle associado 11 podem implementar um esvaziamento de encadeamento inferior 16 de acordo com a regra "instrução efetivada mais recente" acima descrita.
0 retardo da detecção da predição errônea para confirmaçãp., e efetivação da instrução de ramificação predita, erroneamente nc IOM 13 deve normalmente levar apenas alguns ciclos. Nesse interim, o esvaziamento imediato, do encadeamento superior 14·.· significa que a instrução de recuperação do endereço alvo de ramificação correto já começou. Em alguns casos, como, por exemplo, o exemplo LD, ADD, BR acima descrito, pode haver um retardo significativo entre a detecção do erro de predição de ramificação e a confirmação da instrução de ramificação, que permite esvaziar o encadeamento inferior 16. Como precaução contra a possibilidade do esvaziamento do encadeamento inferior 16 levar mais ciclos do que, por exemplo, a profundidade do encadeamento superior 14, uma retenção de encadeamento pode ser ,colocada no, ou antes, do limiar entre o encadeamento superior 14 e' o encadeamento inferior 16. A retenção, que é removida quando o esvaziamento do encadeamento 16 é terminado, evita o esvaziamento errôneo de quaisquer instruções recuperadas do endereço alvo de ramificação correto. As retenções de encadeamento condicionais são bem conhecidas na técnica, e podem ser prontamente implementadas por aqueles versados na 5 técnica sem explicações adicionais.
Outra complicação no esvaziamento do encadeamento inferior 16 é restaurar o estado correto dos recursos do processador alocado especulativamente seguindo o esvaziamento. Por exemplo, a renomeação do registrador é 10 um método conhecido do gerenciamento GPR 2 0 em que os identificadores lógicos GPR (r0,rl,r2,...) são dinamicamente mapeados para um conjunto maior de registradores fisicos através do mapeamento na tabela de renomeação. Os sistemas de renomeação de registradores evitam muitos dos riscos 15 inerentes da execução de instrução fora de ordem. Em operação, um novo registrador físico é alocado, e uma nova "renomeação" lógico - para - físico é gravada na tabela de renomeação, para cada instrução que grava um registrador GPR 20. As instruções que lêem um GPR 20 traduzem seu 20 identificador GPR lógico para um número de registrador físico . através de uma tabela de busca de renomeação. 0 número de registrador físico permanece associado à instrução de leitura de registrador por toda sua parte através do. encadeamen-o. 16,.j·
Em um sistema de renomeação de registrador, o GPR
20 grava não "corromper" os valores anteriores gravados para o mesmo identificador GPR, a gravação é direcionada para um registrador físico novo, não usado. As instruções que seguem a instrução de gravação na ordem de programa são 30 direcionadas para o novo registrador físico, e obtém o valor gravado. As instruções que precedem a instrução gravada na ordem de programa foram mapeadas pela tabela de renomeação para um registrador físico diferente (antes da operação de renomeação), e irão continuar a acessar este registrador fisico. Assim, as instruções que gravam um determinado identificador GPR podera ser executadas antes das instruções que lêem um valor anterior do identificador GPR (Gravar após riscos de Leitura, ou WaR) ou gravam um resultado anterior ao mesmo (Gravam após os riscos de Gravação, ou WAW) . Dessa maneira, são evitados os riscos de dados WaR e WaW.
A renomeação dos identificadores GPR lógicos para os registradores fisicos é uma alocação especulativa dos recursos de processador. Devidos as instruções poderem ser executadas fora de ordem, uma instrução pode gravar um identificador GPR lógico (e ser alocado um novo registrador f ή-si ço). antes, ,da ;execução .de outra instrução, que preceda a instrução de gravação na ordem de programa. ' Se a instrução de ordem ocasiona uma exceção ou for uma instrução de ramificação predita erroneamente, a instrução de gravação pode ser esvaziada do encadeamento 16 e seu registrador fisico desalocado. Por outro lado, as renomeações de registros de que precedem a instrução de gravação devem ser preservados.,
Para ser capaz de esvaziar o encadeamento inferior 16 em qualquer tempo (como, por exemplo,, imediatamente ao detectar uma ramificação erroneamente predita) e recuperar, deve ser criada uma cópia separada da tabela ‘de renomeação toda vez que um identificador GPR lógico. é r,enom,eado , para, um registrador físico - isto é, toda vez que uma instrução de gravação de registrador é lançada no encadeamento 16 - e a cópia deve ser mantida até que a instrução de gravação de registrador efetive para execução. Essas tabelas de registrador podem estão ser seletivamente descartadas, com base nas quais as instruções são esvaziadas do encadeamento 16. Essa abordagem é característica, tanto na manutenção de inúmeras cópias de tabelas de renomeação, quanto no rastreamento lógico cujas tabelas de renomeação devem ser descartadas ao esvaziar o encadeamento 16.
5 Em uma ou mais modalidades, apenas duas cópias de
uma tabela de renomeação são mantidas - uma Tabela de Renomeação Especulativa (SRT) 22 e uma Tabela de Renomeação Efetivada (CRT) 24. A SRT 22 é atualizada toda vez que um identificador GPR lógico é renomeado para um novo 10 registrador físico. Os mapeamentos de renomeação de registrador no CRT 24 são apenas atualizados quando as instruções de gravação de registrador relevantes são efetivadas para execução. Quando o encadeamento inferior 16 é esvaziado devido a uma ramificação erroneamente 15 predita, uma vez que a instrução de ramificação predita erroneamente é a instrução efetivada mais recente,,é sabido que,, todas : as: .,.instruções de gravação de registrador que foram efetivadas na frente da ramificação (na ordem de programa) têm seus mapeamentos de renomeação de registrador 20 gravados na CRT 24.. Além disso, sabe-se que qualquer renomeação de registrador realizado pelas instruções de gravação de registrador que seguiu a instrução de ramificação predita erroneamente (na ordem de programa) é gravada apenas na SRT 22 e não é gravada na CRT 24. Essa 25 renomeação de registradores deve ser descartada e os registradores físicos associados desalocados como parte do esvaziamento do encadeamento inferior 16.
Em uma ou mais modalidades, quando o encadeamento inferior 16 é esvaziado devido a uma ramificação 30 erroneamente predita quando a . instrução de ramificação piredita erroneamente é a instrução efetivada mais recente, a CRT 24 é copiada para a SRT 22. Isso coloca a SRT 22, no estado correto como a instrução de ramificação predita. erroneamente, e os registradores físicos desalocados que foram alocados especulativamente para instruções de gravação de registrador esvaziadas. Ao manter apenas duas tabelas de renomeação e adiar o esvaziamento do encadeamento inferior 16 até que a instrução de ramificação predita erroneamente efetive. A tarefa de desalocar especulativamente os recursos de processador alocados é altamente simplificada.
A figura 2 descreve um método para executar instruções em um processador encadeado 10 que permite a execução fora de ordem, de acordo com uma ou mais modalidades. 0 método relevante começa quando o
processador 10 detecta uma ramificação erroneamente predita (MPB) (bloco 100). Isso ocorrerá normalmente em um estágio de execução (EXE) em um encadeamento inferior 16a, 16b. Imediatamente ao detectar a MPB, o processador 10 esvazia o encadeamento superior 14, (102),, como, por exemplo, no ciclo seguinte, e começa a recuperar as instruções do endereço alvo de ramificação correta (bloco 114). O processador 10 então coloca uma ,■retenção no encadeamento superior 14 (bloco 116) até que o encadeamento inferior 16 seja esvaziado. Quando a retenção é liberada, continua a execução normal do processador 10 (118) .,
Em paralelo, o processador 10 continua a execução no encadeamento inferior 16 até que . a instrução MPB confirme (bloco 120). Essa confirmação normalmente ocorrerá no estágio de canal seguindo imediatamente a detecção da ramificação erroneamente predita.. Quando a instrução MPB confirma (bloco 120), um indicador confirmado e um indicador MPB' são ajustados no IOM 13 (bloco 122) .; Q processamento continua normalmente até que a instrução MPB efetive. Quando a instrução MPB é a instrução efetivada mais recente, (bloco 124) , c IOM 13 dispara um esvaziamento de todas as instruções não efetivadas do encadeamento inferior 16 (bloco 126) . 0 processador 10 então copia a CRT 24 para a SRT 22, e continua a execução normal (bloco 118).
Dessa maneira, as modalidades alcançam tanto o esvaziamento imediato do encadeamento superior 14, minimizando o retardo na recuperação de instruções do endereço alvo de ramificação correto, quanto um esvaziamento eficiente do encadeamento inferior 16, evita computações complexas e hardware duplicativo para esvaziar corretamente apenas as instruções recuperadas do endereço alvo de ramificação errônea e para desalocar recursos de processador alocados especulativamente para as mesmas. Apesar das modalidades terem sido descritas aqui com referência a um IOM 13 que . implementa esvaziamento de exceção, a presente invenção não se limita a essas modalidades. Especificamente, um mecanismo de rastreamento de instrução descrito aqui para esvaziar todas , as instruções não; efetivadas do encadeamento inferior 16 quando uma instrução de ramificação predita erroneamente se torna a: instrução efetivada mais recente,também não precisa realizar o esvaziamento de exceção. Além disso, apesar da alocação especulativa dos recursos de processador 10 ,ser descrita aqui com relação a um esquema de renomeação de reqistrador, muitas outras formas de alocação de recurso especulativa são conhecidas na técnica, como por exemplo, buffer de renomeação e similares.
A presente invenção pode, naturalmente, . ser executada de outras maneiras do que estas especificamente relatadas aqui sem se afastar das características essenciais da invenção. As modalidades presentes devem ser consideradas em todos os aspectos como ilustrativas e não restritivas,. . e todas as alterações que surjam no significado e variação de equivalência das reivindicações em anexo são intencionadas para serem abrangidas nesta.

Claims (16)

1. Método para executar instruções em um processador de encadeamento que permite execução fora de ordem, compreendendo: detectar uma predição errônea de instrução de ramificação, esvaziar um encadeamento superior, antes do ponto mais antecipado em que as instruções possam estar fora da ordem do programa; e efetivar a instrução de ramificação predita erroneamente para execução, esvaziar todas as instruções não efetivadas de um encadeamento inferior, além do ponto em que as instruções possam estar fora da ordem do programa.
2. Método, de acordo com a reivindicação 1, compreendepdo l sa4iç4pn 2niente(., iridiçar _,a.. instrução de ramificação predita erroneamente como tal em um mecanismo de, ordenação, de instrução ao confirmar a mesma.
3 . Método, de. acordo com a . reivindicação 2, em que todas as instruções não efetivadas do encadeamento inferior compreendem esvaziar as instruções em resposta ao indicador de instrução de ramificação predita erroneamente no mecanismo de ordenação de instrução quando a instrução de ramificação predita erroneamente é a instrução efetivada mais recente.
4. Método, de acordo com a reivindicação 2,, em que o processador inclui dois ou mais encadeamentos, e em que cada encadeamento que realiza a execução de instrução de ramificação inclui um, estágio ce confirmação operativo para" ajustar , o indicador de instrução de ramificação predita erroneamente no mecanismo de ordenação de instrução.
5. Método, de acordo com a reivindicação 1, compreendendo adicionalmente, após esvaziar o encadeamento superior, recuperar as instruções de um endereço alvo de instrução de ramificação correto.
6. Método, de acordo com a reivindicação 5, compreendendo adicionalmente, após esvaziar o encadeamento superior, interromper o encadeamento superior no, ou antes, do ponto em que as instruções podem sair de ordem até que todas as instruções efetivadas do encadeamento inferior estejam esvaziadas.
7. Método, de acordo com a reivindicação 6, em que os recursos alocados especulativamente incluem recursos de renomeação de registrador.
8. Método, de acordo com a reivindicação 1, compreendendo adicionalmente, ao esvaziar as instruções não efetivadas do encadeamento inferior, desalocar os recursos alocados especulativamente para as instruções não efetivadas,.:,
9. Método, de acordo com a reivindicação 8, em que de s a 1 o ca r , q s recursos alocados , especulativamente para as instruções não efetivadas inclui copiar os conteúdos de uma tabela de renomeação do registrador comprometido para uma tabela de renomeação do registrador especulativo.
10. Processador, compreendendo: . lógica de controle; e um encadeamento de execução de instrução segmentada compreendendo um encadeamento superior antes do ppnto no qual as instruções do programa podem estar fora da ordem e um ou mais encadeamentos inferiores além. do ponto no qual as instruções do programa podem estar fora da ordem; em que a lógica de controle é operativa para esvaziar , tqdas as áns.truções .do .encadeamento superior ao detectar uma , ramificação erroneamente .predita,. e é adicionalmente operativa para esvaziar todas as instruções não efetivadas dos encadeamentos inferiores ao efetivar a instrução de ramificação predita erroneamente para execução.
11. Processador, de acordo com a reivindicação10, em que a lógica de controle é adicionalmente operativa para recuperar instruções de um endereço alvo de ramificação correto no ciclo que segue ao esvaziamento do encadeamento superior.
12. Processador, de acordo com a reivindicação11, em que a lógica de controle é adicionalmente operativa para colocar uma retenção na extremidade do encadeamento superior em seguida ao esvaziamento do encadeamento superior, e para remover a retenção ao esvaziar todas as instruções não efetivadas dos encadeamentos inferiores.
13. Processador, de acordo com a reivindicação10, em que a lógica de controle inclui um mecanismo de ordenação de instrução operativo para rastrear o status confirmado, e efetivado das instruções, e adicionalmente operativo para esvaziar, todas as instruções não efetivadas 20 dos encadeamentos inferiores quando a instrução, de j"^jniíip^çãç>0 predita:, erroneamente é a instrução confirmada mais recente.
14. Processador, de acordo com a reivindicação13, . em que çada entrada no mecanismo de ordenação de instrução inclui uma indicação se a instrução associada for uma instrução de ramificação predita erroneamente.
15. Processador, de acordo com a reivindicação14, em que cada encadeamento inferior que . executa instruções de ramificação inclui um estado de confirmação operativo para ajustar uma indicação de ramificação erroneamente predita no mecanismo de ordenação de instrução quando uma instrução de ramificação for determinada como erroneamente predita.
16. Processador, de acordo com a reivindicação10, compreendendo adicionalmente: um arquivo Registrador de Propósito Geral (GPR) operativo para associar dinamicamente os identificadores lógicos GPR aos registradores fisicos, compreendendo: uma pluralidade de registradores físicos; uma Tabela de Renomeação Especulativa (SRT) contendo mapeamentos de todos os identificadores lógicos GPR para os registradores físicos; e uma Tabela de Renomeação Efetivada (CRT) contendo mapeamentos dos identificadores lógicos GPR para registradores físicos apenas para as instruções efetivadas; em que a lógica de controle é operativa para s; . , copiar os conteúdos da CRT para a SRT ao esvaziar todas as instruções não efetivadas dos. encadeamentos inferiores.
BRPI0807405-4A 2007-01-24 2008-01-24 Esvaziamento de encadeamento segmentado para ramificações preditas erroneamente BRPI0807405A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/626,443 2007-01-24
US11/626,443 US7624254B2 (en) 2007-01-24 2007-01-24 Segmented pipeline flushing for mispredicted branches
PCT/US2008/051966 WO2008092045A1 (en) 2007-01-24 2008-01-24 Segmented pipeline flushing for mispredicted branches

Publications (1)

Publication Number Publication Date
BRPI0807405A2 true BRPI0807405A2 (pt) 2014-07-08

Family

ID=39327442

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0807405-4A BRPI0807405A2 (pt) 2007-01-24 2008-01-24 Esvaziamento de encadeamento segmentado para ramificações preditas erroneamente

Country Status (10)

Country Link
US (1) US7624254B2 (pt)
EP (1) EP2115572B1 (pt)
JP (4) JP2010517183A (pt)
KR (1) KR101107812B1 (pt)
CN (1) CN101601009B (pt)
BR (1) BRPI0807405A2 (pt)
CA (1) CA2674720C (pt)
MX (1) MX2009007949A (pt)
RU (1) RU2427889C2 (pt)
WO (1) WO2008092045A1 (pt)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624254B2 (en) * 2007-01-24 2009-11-24 Qualcomm Incorporated Segmented pipeline flushing for mispredicted branches
US9384003B2 (en) * 2007-10-23 2016-07-05 Texas Instruments Incorporated Determining whether a branch instruction is predicted based on a capture range of a second instruction
US7877586B2 (en) * 2008-02-01 2011-01-25 International Business Machines Corporation Branch target address cache selectively applying a delayed hit
US8099586B2 (en) * 2008-12-30 2012-01-17 Oracle America, Inc. Branch misprediction recovery mechanism for microprocessors
US20110320787A1 (en) * 2010-06-28 2011-12-29 Qualcomm Incorporated Indirect Branch Hint
WO2012003007A1 (en) 2010-06-29 2012-01-05 Exxonmobil Upstream Research Company Method and system for parallel simulation models
US8886920B2 (en) 2011-05-13 2014-11-11 Oracle International Corporation Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage
US8862861B2 (en) 2011-05-13 2014-10-14 Oracle International Corporation Suppressing branch prediction information update by branch instructions in incorrect speculative execution path
CN102360282A (zh) * 2011-09-26 2012-02-22 杭州中天微系统有限公司 快速处置分支指令预测错误的流水线处理器装置
US9738197B2 (en) 2011-11-29 2017-08-22 Ts Tech Co., Ltd. Mounting member and airbag module-equipped seat
US9268569B2 (en) * 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
KR101697038B1 (ko) * 2013-05-30 2017-01-16 인텔 코포레이션 파이프라이닝된 소프트웨어의 동적 최적화
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10255074B2 (en) 2015-09-11 2019-04-09 Qualcomm Incorporated Selective flushing of instructions in an instruction pipeline in a processor back to an execution-resolved target address, in response to a precise interrupt

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694564A (en) * 1993-01-04 1997-12-02 Motorola, Inc. Data processing system a method for performing register renaming having back-up capability
DE69425311T2 (de) 1993-10-18 2001-03-15 Nat Semiconductor Corp Mikroprozessor mit spekulativer Befehlsausführung
SG52391A1 (en) 1994-01-03 1998-09-28 Intel Corp Method and apparatus for implementing a four stage branch resolution system in a computer processor
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
US7496734B1 (en) * 2000-04-28 2009-02-24 Stmicroelectronics, Inc. System and method for handling register dependency in a stack-based pipelined processor
JP3667703B2 (ja) * 2002-03-18 2005-07-06 エヌイーシーコンピュータテクノ株式会社 エラー訂正制御回路
US7152155B2 (en) * 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction
US7624254B2 (en) * 2007-01-24 2009-11-24 Qualcomm Incorporated Segmented pipeline flushing for mispredicted branches

Also Published As

Publication number Publication date
EP2115572A1 (en) 2009-11-11
JP2012230687A (ja) 2012-11-22
EP2115572B1 (en) 2015-03-11
CA2674720C (en) 2015-02-03
CN101601009B (zh) 2015-09-16
CA2674720A1 (en) 2008-07-31
WO2008092045A1 (en) 2008-07-31
US7624254B2 (en) 2009-11-24
RU2427889C2 (ru) 2011-08-27
JP5866259B2 (ja) 2016-02-17
KR101107812B1 (ko) 2012-01-25
MX2009007949A (es) 2009-08-07
US20080177992A1 (en) 2008-07-24
JP2010517183A (ja) 2010-05-20
CN101601009A (zh) 2009-12-09
JP2014211881A (ja) 2014-11-13
RU2009131712A (ru) 2011-02-27
JP6370829B2 (ja) 2018-08-08
JP2016167284A (ja) 2016-09-15
KR20090102871A (ko) 2009-09-30
JP6208084B2 (ja) 2017-10-04

Similar Documents

Publication Publication Date Title
BRPI0807405A2 (pt) Esvaziamento de encadeamento segmentado para ramificações preditas erroneamente
US9043559B2 (en) Block memory engine with memory corruption detection
KR102659813B1 (ko) 레지스터 리네이밍을 사용한 무브 명령어 처리
KR101025354B1 (ko) 가상 트랜잭션 메모리를 위한 글로벌 오버플로우 방법
US20180011748A1 (en) Post-retire scheme for tracking tentative accesses during transactional execution
US7711898B2 (en) Register alias table cache to map a logical register to a physical register
US7155599B2 (en) Method and apparatus for a register renaming structure
US20130086364A1 (en) Managing a Register Cache Based on an Architected Computer Instruction Set Having Operand Last-User Information
BR102013014996B1 (pt) processador, método e unidade de renomeação de registrador
EP3198448B1 (en) Hardware assisted object memory migration
JP2004503870A (ja) 変換索引バッファのフラッシュフィルタ
US10977038B2 (en) Checkpointing speculative register mappings
US11599359B2 (en) Methods and systems for utilizing a master-shadow physical register file based on verified activation
US10223266B2 (en) Extended store forwarding for store misses without cache allocate
US9367312B2 (en) Processor efficiency by combining working and architectural register files
US6625726B1 (en) Method and apparatus for fault handling in computer systems
US10255071B2 (en) Method and apparatus for managing a speculative transaction in a processing unit
US20180253299A1 (en) Defer buffer

Legal Events

Date Code Title Description
B06T Formal requirements before examination [chapter 6.20 patent gazette]

Free format text: PARECER 6.20

B11E Dismissal acc. art. 34 of ipl - requirements for examination incomplete
B11T Dismissal of application maintained [chapter 11.20 patent gazette]