BRPI0611643A2 - método e equipamento para gerenciar decarga de instrução em um encadeamento de instruções de microprocessador - Google Patents

método e equipamento para gerenciar decarga de instrução em um encadeamento de instruções de microprocessador Download PDF

Info

Publication number
BRPI0611643A2
BRPI0611643A2 BRPI0611643-4A BRPI0611643A BRPI0611643A2 BR PI0611643 A2 BRPI0611643 A2 BR PI0611643A2 BR PI0611643 A BRPI0611643 A BR PI0611643A BR PI0611643 A2 BRPI0611643 A2 BR PI0611643A2
Authority
BR
Brazil
Prior art keywords
branch
instruction
instructions
prediction
indicator
Prior art date
Application number
BRPI0611643-4A
Other languages
English (en)
Inventor
Michael Scott Mcilvaine
James Norris Dieffenderfer
Thomas Andrew Satorius
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 BRPI0611643A2 publication Critical patent/BRPI0611643A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

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

MéTODO E EQUIPAMENTO PABA GERENCIAR DESCARGA DE INSTRUçãO EM UM ENCADEAMENTO DE INSTRUçõES DE MICROPROCESSADOR. Em uma ou mais modalidades, um processador inclui um ou mais circuitos para descarregar instruções de um encadeamento de instruções em uma base seletiva em resposta à detecção de uma predição de ramificação incorreta, de modo que as instruções marcadas como sendo dependentes da instrução de ramificação associada à predição de ramificação incorreta sejam descarregadas. Assim, o circuito ou circuitos podem ser configurados para marcar instruções buscadas no(s) encadeamento(s) de instruções do processador para indicar suas dependências de predição de ramificação e detectar, direta ou indiretamente, predições de ramificação incorretas e descarregar, direta ou indiretamente, as instruções no(s) encadeamento(s) de instruções que estão marcadas como sendo dependentes de uma predição de ramificação incorreta.

Description

"MÉTODO E EQUIPAMENTO PARA GERENCIAR DESCARGA DE INSTRUÇÃOEM UM ENCADEAMENTO DE INSTRUÇÕES DE MICROPROCESSADOR".
Campo da Invenção
A presente invenção refere de maneira geral amicroprocessadores e, especificamente, ao gerenciamento dadescarga de instruções em um encadeamento de instruções demicroprocessador.
Descrição da Técnica Anterior
Microprocessadores encontram utilização em umaampla variedade de produtos, que vão de sistemascomputacionais de topo de linha, nos quais a potência deprocessamento representa uma consideração de projetopredominante, a sistemas embutidos inferiores, nos quaiscusto, tamanho e consumo de energia constituem asconsiderações de projeto básicas. Processadores destinadospara aparelhos portáteis acionados por bateria tais como,aparelhos de música, computadores palmtop, AssistentesDigitais Portáteis (PDAs) e semelhantes, representam umamistura particularmente complexa de considerações deprojeto competitivas. Por um lado, o desempenho doprocessador deve ser suficiente para suportar afuncionalidade pretendida do aparelho e proporcionar uma"experiência" satisfatória ao usuário. Por outro lado, obaixo consumo de energia do processador ajuda a permitir autilização de sistemas de bateria de tamanho razoável,enquanto obtém tempo de vida útil aceitável de bateria.
A mistura acima de compensações de projeto temresultado em numerosos avanços no desempenho e na eficáciado processador. Por exemplo, processadores encadeadosmodernos, tais como os baseados em uma arquitetura deComputador com Conjunto Reduzido de Instruções (RISC),utilizam freqüentemente métodos de predição de ramificaçãopara impedir "paralisações" no encadearaento de instruções.Com um encadeamento de instruções, diferentes aspectos deprocessamento seqüencial de instruções ocorrem geralmenteem diferentes estágios do encadeamento. Por exemplo, umdado encadeamento de instruções pode incluir estágios debusca, decodificação, emissão e execução dispostossucessivamente. Cada estágio opera geralmente de acordo comuma instrução ou instruções diferentes, em cada ciclo derelógio de instrução. Por exemplo, à medida que umainstrução está sendo completa no estágio de execução,outras instruções estão sendo buscadas, decodificadas,emitidas, etc. A execução em estágios permite que oprocessador encadeado execute em média uma instrução porciclo de relógio.
Entretanto, a manutenção dessa média de umainstrução por ciclo de relógio depende de manter oencadeamento cheio de instruções. Por sua vez, manter oencadeamento cheio de instruções significa que oprocessador encadeado geralmente não pode permitirinterromper a busca de instruções de programa enquantodetermina se uma dada ramificação de programa será ou nãoexecutada. Ou seja, o processador em geral deve calcular(uma predição) se uma dada ramificação de programa será ounão executada. Se a predição for "executada", então a buscade instruções continua a partir do endereço alvo deramificação. Se a predição não for executada, então a buscade instruções continua a partir do endereço de instruçãoseguinte após a instrução de ramificação.
Neste caso, as instruções buscadas noencadeamento subseqüente a tal predição serão as instruções"erradas" se esta predição for incorreta. 0 encadeamentopode ter múltiplas predições importantes em qualquer dadomomento, isto é, pode ter múltiplas instruções deramificação indeterminadas em progresso dentro de diversosde seus estágios de encadeamento. Assim, qualquer dadainstrução das instruções em progresso dentro doencadeamento pode depender de uma ou mais das predições deramificação importantes, ou pode não depender de qualqueruma delas.
Tais possibilidades introduzem uma complexidadede processamento no contexto das predições de ramificaçãoincorretas. Geralmente, pelo menos algumas das instruçõesem progresso dependerão de pelo menos uma das predições deramificação importantes e, portanto, não devem serdescarregadas do encadeamento de instruções em resposta àdetecção de uma predição de ramificação incorretacorrespondente. O desafio surge da dificuldade emidentificar ou rastrear com precisão as dependências daspredições de ramificação das instruções em progresso,especificamente porque algumas instruções podem serexecutadas fora da ordem programada original.
Por exemplo, uma dada instrução pode ter queaguardar em dados por causa de uma falha de cache e, em vezde parar o encadeamento enquanto os dados são recuperadosda memória externa, a execução desta instrução pode sersuspensa enquanto o encadeamento continua processandooutras instruções em progresso. De maneira mais geral, aexecução de instruções fora da ordem programada representauma das vantagens do desempenho de processamento deencadeamentos de instruções super-escalares que compreendemconjuntos paralelos de estágios de encadeamento. Taisencadeamentos super-escalares podem ter um grande número deinstruções em progresso, com muitas delas sendo executadasfora da ordem programada.
Assim, a descarga seletiva apenas das instruçõesdependentes de uma predição de ramificação incorretarepresenta um desafio potencialmente significativo emtermos da capacidade de identificar com precisão taisdependências sem introduzir complexidade de rastreamento emdemasia. Evidentemente, a alternativa à descarga seletivade instruções é a descarga de todas as instruções doencadeamento quando uma predição de ramificação incorretafor detectada, sem considerar se instruções individuaisdestas instruções dependem realmente da instrução deramificação predita incorretamente. 0 lado negativo destaabordagem é a perda de desempenho e eficiência associada àdescarga de instruções válidas do encadeamento que já forambuscadas e processadas pelo menos parcialmente.
Resumo da Invenção
A presente invenção compreende um método eequipamento para gerenciar a descarga de instruções noencadeamento de instruções de um microprocessador. Em pelomenos uma modalidade, um ou mais circuitos incluídos nomicroprocessador são configurados para gerenciar a descargade instruções com base em instruções de marcação buscadasno encadeamento de instruções para indicar suasdependências da predição de ramificação, detectar prediçõesde ramificação incorretas, e descarregar instruções noencadeamento de instruções que são marcadas como sendodependentes de uma predição de ramificação incorreta.
A marcação de instruções buscadas no encadeamentode instruções para indicar suas dependências da predição deramificação compreende, em pelo menos uma modalidade,ativar indicadores de bits em resposta à realização depredições de ramificação, deixar o indicador de bits ativopara uma predição de ramificação específica até que estapredição de ramificação seja resolvida, e marcar cadainstrução buscada no encadeamento de instruções com umaagregação dos indicadores de bits ativos. Por exemplo, adescarga de instruções no encadeamento de instruções quesão marcadas como sendo dependentes de uma predição deramificação incorreta pode compreender efetuar broadcast deum sinal de descarga com base no indicador de bits quecorresponde à predição de ramificação incorreta, edescarregar as instruções no encadeamento de instruções queestão marcadas com este indicador de bits. De maneirasimilar, um sinal de liberação pode ser efetuado broadcastcom base no indicador de bits que corresponde a umapredição de ramificação correta para liberar o indicador debits correspondente das instruções no ' encadeamento deinstruções que foram marcadas como sendo dependentes destapredição de ramificação. A liberação permite que osindicadores de bits sejam reutilizados no processo demarcação de dependência.
Em uma oü mais modalidades, a marcação dasinstruções buscadas no encadeamento de instruções paraindicar suas dependências de predição de ramificaçãocompreende atribuir um "indicador de descarga deramificação" pelo menos para cada instrução de ramificaçãocondicional buscada no encadeamento de instruções, e anexarum "indicador de percurso de ramificação" com base nosindicadores de descarga de ramificação atribuídosanteriormente para cada instrução buscada no encadeamentode instruções. No contexto desta modalidade, a descarga deinstruções no encadeamento de instruções que são marcadascomo sendo dependentes de uma predição de ramificaçãoincorreta pode ser baseado na resolução de condições deramificação em um estágio de execução do encadeamento deinstruções para detectar predições de ramificação corretase incorretas e, para uma predição de ramificação incorreta,ao efetuar broadcast de um sinal de descarga noencadeamento de instruções com base no indicador dedescarga de ramificação da instrução de ramificaçãocondicional associada. As instruções no encadeamento deinstruções cujos indicadores de percurso de ramificação sãomarcados com o indicador de descarga de ramificação dainstrução de ramificação condicional associada podem serdescarregadas em resposta ao broadcast.
Por conseguinte, uma ou mais modalidades deprocessador incluem um circuito de controle de descargaconfigurado para marcar instruções buscadas no encadeamentode instruções para indicar suas dependências da predição deramificação, detectar predições de ramificação incorretas,e descarregar as instruções no encadeamento de instruçõesque estão marcadas como sendo dependentes de uma prediçãode ramificação incorreta. O circuito de controle dedescarga pode, ao executar estas operações, gerar e manterindicadores de descarga de ramificação e indicadores depercurso de ramificação, e pode incluir um conjunto decircuitos para cooperar com um ou mais dos estágios deencadeamento de instruções, para executar as operações deliberação e descarga descritas acima, ou para executarvariações destas operações.
Breve Descrição das Figuras
A Figura 1 é um diagrama em blocos que mostra ummicroprocessador, que inclui um encadeamento de instruçõese um circuito de controle de descarga associado.
A Figura 2 é um diagrama em blocos de umamodalidade de um encadeamento de instruções e de seucircuito de controle de descarga associado.
A Figura 3 é um fluxograma lógico de uma lógicade processamento que suporta uma modalidade da descarga deinstruções de um encadeamento de instruções com base namarcação e no rastreamento das dependências de predição deramificação.A Figura 4 é um fluxograma de instruções deprograma que mostra seis instruções buscadas em umencadeamento de instruções na ordem de fluxo de programa.
A Figura 5 é um diagrama em blocos de umencadeamento de instruções super-escalar que suportaexecução de instruções fora de ordem.
A Figura 6 é uma tabela que mostra a geração e aanexação de indicadores de descarga de ramificaçãoespecificamente para instruções de ramificação buscadas emum encadeamento de instruções e a anexação de indicadoresde percurso de ramificação geralmente para todos os tiposde instruções buscadas no encadeamento de instruções.
A Figura 7 é um diagrama em blocos de um conjuntorepresentativo de indicadores de descarga de ramificaçãoque corresponde a um dado número de predições deramificação importantes, e um indicador de percurso deramificação correspondente que agrega logicamente osindicadores de descarga de ramificação individuais.
A Figura 8 é um fluxograma lógico que mostra umamodalidade de geração de indicadores de descarga deramificação, marcação de instruções com indicadores depercurso de ramificação correspondentes, e descarga ouliberação de instruções em um encadeamento de instruções,com base na realização do broadcast de sinais dedescarregar ou liberar.
Descrição Detalhada da Invenção
A Figura 1 mostra, pelo menos parcialmente, ummicroprocessador 10, o qual compreende um núcleo deprocessador 12, uma unidade de pré-busca de instruções 14,uma cache de instruções 16, um controlador de cache deinstruções 18, uma unidade de carga/armazenagem 20, umacache de dados 22, um controlador de cache de dados 24, eum buffer de tradução de endereços principal 26. Em uma oumais modalidades do processador 10, um encadeamento deinstruções 30 do núcleo de processador 12 inclui, ou éassociado a, um circuito de controle de descarga 32. Ocircuito de controle de descarga 32 suporta descarga deinstruções em progresso do encadeamento de instruções 30,como parte do gerenciamento de predições de endereço alvode instruções de ramificação.
A titulo de exemplo não-limitativo, o processadorpode ser um processador encadeado baseado em umaarquitetura de Computador com Conjunto Reduzido deInstruções (RISC) . Em pelo menos uma modalidade doprocessador 10, o encadeamento de instruções 30 suportaexecução de programa fora de ordem, e pode compreender umencadeamento de instruções super-escalar que inclui umapluralidade de estágios de execução paralelos (nãomostrados).
Se ou não o processador 10 incorporacaracterísticas super-escalares, o núcleo 12 executainstruções de programa e executa operações decarga/armazenagem de dados. 0 buffer de tradução deendereços 26 aceita entradas do núcleo 12 e fornece saídasao núcleo 12. Mais especificamente, o buffer de tradução deendereços 26 faz interface com o núcleo 12 com as caches deinstruções e dados 16 e 22, respectivamente. As caches deinstruções e dados 16 e 22 compreendem memória embutidarápida, e o processador 10 utiliza pré-busca de instruçõese dados por meio dos controladores de cache de instruções edados 18 e 24 para manter as caches preenchidas cominstruções e dados necessários seguintes.
Sob um aspecto da pré-busca de instruções, oprocessador 10 utiliza predição de ramificação paraacelerar seu desempenho total. Com predição de ramificação,o processador de ramificação 10 geralmente não interrompeas operações de busca de instruções do núcleo quandoinstruções de ramificação condicional são reconhecidas nofluxo de programa, mas, em vez disso, continua a busca deinstruções dos endereços de instrução seqüenciais seguintesou dos endereços alvo de ramificação, na dependência dapredição das ramificações de programa como executadas ounão executadas. À guisa de exemplo não-limitativo, o núcleo12 pode ser configurado para efetuar predição deramificação "estática", e a unidade de pré-busca 14 podeser configurada para efetuar predição de ramificaçãodinâmica, com base na acumulação de estatísticas depredição de ramificação, etc. Outras configurações decircuito podem ser utilizadas para suportar tais operações,e os versados na técnica reconhecerão que o ponto geral amanter em mente é que o processador 10 é um processador depredição de ramificação, em que pelo menos algumas dasinstruções buscadas no encadeamento de instruções 30dependem da realização das predições de ramificação peloprocessador 10 durante a execução do programa.
Geralmente, para uma ramificação de programaexecutada predita, a busca de instruções continua doendereço de instrução alvo pela instrução de ramificação e,para uma ramificação não executada predita, a busca deinstruções continua do endereço de instrução seguinte àinstrução de ramificação na seqüência de instruções. Assim,na medida em que algumas ramificações são incorretamentepreditas como executadas ou não executadas, as instruçõesde programa "erradas" serão buscadas no encadeamento deinstruções 30 do processador.
Com esse ponto em mente, o circuito de controlede descarga 32 é configurado para descarregar, direta ouindiretamente, as instruções já no encadeamento 30 queestão "marcadas" como sendo dependentes de uma predição deramificação incorreta. Tais operações de descarga são maisbem descritas no contexto do encadeamento de instruções 30,e a Figura 2 mostra uma modalidade do encadeamento deinstruções 30 e do circuito de controle de descarga 32. Oencadeamento de instruções 30 mostrado compreende umestágio de busca 40, um estágio de decodificação deinstruções 42, um estágio de emissão de instruções 44, e umestágio de execução de instruções 46. O estágio de execução46 inclui, ou é associado com, um circuito de determinaçãode condição 48, que avalia as condições associadas com asinstruções de ramificação condicional. Em outras palavras,o circuito de determinação de condição 48 "resolve" asinstruções de ramificação indeterminadas, determinando suascondições de ramificação. A determinação das condições deramificação associadas às instruções de ramificaçãocondicional permite determinar se as predições deramificação feitas para essas instruções de ramificaçãoestavam corretas ou incorretas.
Por exemplo, um circuito de predição deramificação 50 que é associado ao encadeamento deinstruções 30 pode ser configurado para reconhecerinstruções de ramificação depois de serem decodificadaspelo estágio de decodif icação de instruções 42, e parafazer predições quanto a se estas ramificações serão ou nãoexecutadas. Tais predições são feitas antes da resoluçãodas condições de ramificação, e a correção da prediçãofeita para uma dada instrução de ramificação não éconhecida até que a condição desta instrução de ramificaçãoseja avaliada pelo circuito de avaliação de condição 48,que pode ser configurado para fornecer uma salda que indicaa resolução de condição de cada instrução de ramificaçãocondicional executada pelo estágio de execução 46. Assim, ocircuito de predição de ramificação 50 e/ou o circuito decontrole de descarga 32 podem ser configurados para receberos resultados de avaliação de condição transmitidos pelocircuito de avaliação de condição 48, para determinar seuma dada instrução de ramificação foi corretamente preditacomo executada ou não executada.
Se uma instrução de ramificação tiver sidoincorretamente predita como executada, ou incorretamentepredita como não executada, o circuito de controle dedescarga 32 opera para descarregar as instruções que estãoem progresso dentro do encadeamento de instruções 30 quesão dependentes da ramificação incorretamente predita. Maisespecificamente, em pelo menos uma modalidade, o circuitode controle de descarga 32 é operativo para "marcar" asdependências de predições de ramificação das instruçõesbuscadas no encadeamento de instruções 30 e, em resposta àdetecção de uma predição de ramificação incorreta, fazer comque as instruções atualmente no encadeamento de instruções30 que estão marcadas como sendo dependentes desta prediçãode ramificação incorreta específica sejam descarregadas. Empelo menos uma modalidade, instruções NOP (não operação) sãoutilizadas para encher quaisquer "bolhas" criadas noencadeamento de instruções 30 pela operação de descarga, masoutras modalidades podem não inserir NOPs, ou podem tomaroutras medidas, quando necessário, para continuar asoperações no encadeamento de instruções 30 após a descarga.
Como parte da descarga, ou em seguida à descarga, oencadeamento de instruções 30 pode ser novamente enchidopela busca de instruções do endereço apropriado.
A Figura 3 mostra uma lógica de processamentopara descarga de instruções que pode ser implementada nocircuito de controle de descarga 32, ou em suporte àsoperações deste circuito. A lógica mostrada presume que abusca de instruções esteja em progresso, e que o circuitode controle de descarga 32 marque as instruções buscadas noencadeamento de instruções 30 para indicar suasdependências da predição de ramificação (Etapa 100). Deveficar entendido que, de maneira geral, uma dada instruçãobuscada no encadeamento depende, direta ou indiretamente,das predições de ramificação não resolvidas que sãoatualmente importantes no encadeamento de instruções 30.Assim, as dependências da predição de ramificação alteramdurante a execução do programa, à medida que novaspredições são feitas e predições antigas são resolvidas, eas operações de marcação de dependência de predição deramificação do circuito de controle de descarga 32 alteramem conseqüência.
Presumindo que as instruções marcadas estãofluindo através dos diversos estágios do encadeamento deinstruções, e que as condições de ramificação estão sendoresolvidas em algum ponto no encadeamento de instruções 30(Etapa 102), o circuito de controle de descarga 32 detecta,diretamente (ou indiretamente), predições de ramificaçãoincorretas (Etapa 104), e responde de acordo.Especificamente, em pelo menos uma modalidade do circuitode controle de descarga 32, este descarrega todas asinstruções atualmente no encadeamento de instruções 30 queestão marcadas como sendo dependentes da predição deramificação incorreta (Etapa 106).
Deve ficar entendido que, em uma ou maismodalidades, um mecanismo para efetuar esta descargaenvolve a "realização de broadcast", pelo circuito decontrole de descarga 32, de um sinal de descarga que éutilizado por um conjunto de circuitos correspondente em umou mais dos estágios no encadeamento de instruções 30 paraexecutar a descarga atual. De maneira similar, para umaramificação corretamente predita, o circuito de controle dedescarga 32 pode efetuar broadcast de um sinal de liberaçãoque é utilizado em um ou mais dos estágios do encadeamentode instruções 30 para liberar a marcação de dependênciacorrespondente a partir de qualquer instrução marcada comosendo dependente desta ramificação (Etapa 108). Em pelomenos uma modalidade, as operações de liberação sãoopcionais. Entretanto, a apresentação de um mecanismo deliberação oferece vários benefícios, incluindo permite areutilização de algumas marcações de dependência parainstruções buscadas posteriormente.
Independentemente destes aspectos de reutilizaçãode indicador do circuito de controle de descarga 32, aFigura 4 facilita um melhor entendimento dos aspectos maisfundamentais da marcação de dependência de predição deramificação, ao mostrar seis instruções em ordem de fluxode programa, denotadas como "A", "B", "C", "D", wE " e BF".
Presume-se que estas instruções sejam buscadas noencadeamento de instruções 30 na ordem de programa, e queas instruções C e E em círculo são instruções deramificação para as quais alvos de endereço de ramificaçãocorrespondentes foram preditos como executados ou nãoexecutados. Assim, as instruções DeE são buscadas apartir de locais que dependem da predição executada/nãoexecutada feita para a instrução de ramificação C. Demaneira semelhante, a instrução F é buscada a partir de umlocal que depende diretamente da predição executada/nãoexecutada feita para a instrução de ramificação E,dependente direta ou indiretamente da predição anteriorfeita para a instrução C. Dito de maneira simples, asinstruções D, E, e F dependem da predição de ramificaçãofeita para a instrução de ramificação C, e a instrução Fdepende adicionalmente da predição de ramificação feitapara a instrução de ramificação E.A Figura 5 mostra as instruções A-F sendoexecutadas fora da ordem programada em uma modalidadesuper-escalar do encadeamento de instruções 30. Maisespecificamente, o estágio de execução 46 mostradocompreende dois conjuntos paralelos de estágios deexecução, rotulados como estágios de El-A a E4-A para oprimeiro conjunto, e rotulados como de El-B a E4-B para osegundo conjunto. Evidentemente, deve ficar entendido que oencadeamento de instruções 30 na realidade pode utilizaruma disposição de estágios de execução ainda mais complexa,pode utilizar uma disposição de estágios diferente, ou podeutilizar estágios e outros elementos não mostrados aqui demaneira geral.
Seja como for, pode-se entender prontamente que,a ausência da marcação de dependência aqui ensinada, atarefa de identificar as instruções no encadeamento deinstruções 30 que podem ser descarregadas por causa de umapredição de ramificação incorreta pode tornar-se bastantecomplicada. Evidentemente, pode-se simplesmente descarregartodo o encadeamento de instruções 30 quando da detecção dequalquer predição de ramificação incorreta, mas issosignificaria ficar privado dos benefícios de desempenho eeficiência obtidos pela retenção de instruções nãodependentes que já estão em progresso dentro doencadeamento de instruções 30.
O circuito de controle de descarga 30 preservaestes benefícios, enquanto assegura que as instruçõesdependentes sejam descarregadas. Em pelo menos umamodalidade do circuito de controle de descarga 32, estemarca as instruções buscadas no encadeamento de instruções30 para indicar suas dependências de predição deramificação ativando os indicadores de bits em resposta àrealização de predições de ramificação, deixando oindicador de bits ativo para uma predição de ramificaçãoespecifica até que esta predição de ramificação sejaresolvida, e marcar cada instrução buscada no encadeamentode instruções 30 com uma agregação dos indicadores de bitsativos. Tal marcação pode ocorrer em qualquer pontoadequado no encadeamento de instruções 30, tal como oestágio de busca 40, o estágio de decodificação 42, ou nocircuito de controle de descarga 32, se este estiverdisposto no percurso de fluxo de instruções, ou se estetiver acesso a este percurso.
Em pelo menos uma modalidade, a descarga dasinstruções no encadeamento de instruções 30 que estãomarcadas como sendo dependentes de uma predição deramificação incorreta compreende efetuar broadcast de umsinal de descarga e descarrega as instruções noencadeamento de instruções 30 que estão marcadas com esteindicador de bits. 0 sinal de descarga pode ser um vetorbaseado no indicador de bits que corresponde ao indicadorde descarga de ramificação da instrução de ramificaçãoincorretamente predita. De maneira semelhante, para aspredições de ramificação que são detectadas como estandocorretamente preditas, o circuito de controle de descarga32 pode ser configurado para efetuar broadcast de um sinalde liberação com base no indicador de bits que correspondea uma predição de ramificação correta, para então liberar oindicador de bits correspondente das instruções noencadeamento de instruções 30 que foram marcadas como sendodependentes desta predição de ramificação. 0 sinal deliberação pode ser um vetor que é o inverso do indicador dedescarga de ramificação da ramificação, tal que este possaser logicamente submetido a uma operação E com cadaindicador de percurso de ramificação da instrução paraliberar o bit apropriado no indicador de percurso deramificação. Note que a liberação dos indicadores dedependência para ramificações corretamente preditas permiteque estas posições de indicador sejam reutilizadas.
Uma modalidade do método de marcação acima éilustrado nas Figuras 6 e 7 para o conjunto de instruçõesmostrado anteriormente na Figura 4. Às instruções deramificação, pelo menos estas para as quais são feitaspredições de ramificação, são atribuídas um "indicador dedescarga de ramificação". 0 indicador de descarga deramificação pode ser anexado como um vetor de bits àinstrução de ramificação atual, para que possa serdescarregado com a instrução de ramificação através doencadeamento de instruções 30. Além disto, cada instruçãobuscada no encadeamento de instruções é marcada paraindicar suas dependências de predição de ramificação pelaanexação de um "indicador de percurso de ramificação" aesta. Um indicador de percurso de ramificação pode serformado como uma agregação lógica dos indicadores dedescarga de ramificação atualmente importantes.
Assim, se os indicadores de descarga deramificação forem implementados como um conjunto de vetoresone-hot - isto é, cada indicador de descarga de ramificaçãotem um conjunto de posições de bit diferentes - então umindicador de percurso de ramificação pode ser formado eanexado a cada instrução submetendo os indicadores dedescarga de ramificação atualmente ativos a uma operação delógica OU. Um exemplo deste tipo de operação de lógica OU émostrado na Figura 6.
Às instruções AeB são atribuídos indicadores dedescarga de ramificação de zero (ou não é atribuído nenhumindicador de descarga de ramificação) , uma vez que estasnão são instruções de ramificação e são atribuídosindicadores de percurso de ramificação de todos zeros,presumindo que nenhuma predição de ramificação eraimportante quando elas foram buscadas no encadeamento deinstruções. A instrução C é uma instrução de ramificação ea esta é atribuído um indicador de descarga de ramificaçãoque tem uma posição de bit de vetor one-hot; entretanto,seu indicador de percurso de ramificação é fixado todos emzero, uma vez que não havia predições de ramificaçãoimportantes quando esta foi buscada.
Uma vez que a própria instrução D não é umainstrução de ramificação, a esta não é atribuído umindicador de descarga de ramificação. Alternativamente, aesta pode ser atribuído um indicador de descarga deramificação de todos zeros. Neste caso, o indicador depercurso de ramificação anexado à instrução D tem umconjunto de bits na posição que corresponde ao bit marcadorno indicador de descarga de ramificação da instrução C.Assim, a instrução D é marcada como sendo dependente dapredição de ramificação feita para a instrução deramificação C. De maneira semelhante, as instruções EeFsão marcadas com indicadores de percurso de ramificação,que indicam suas dependências da predição de ramificaçãofeitas para a instrução de ramificação C. Além disto, oindicador de percurso de ramificação anexado à instrução Fé adicionalmente marcado para mostrar sua dependência dapredição de ramificação feita para a instrução deramificação E.
Com o método acima, a cada instrução deramificação condicional é geralmente atribuído um indicadorde descarga de ramificação único, não reutilizando o(s)indicador(es) atualmente reivindicado(s) por quaisquerinstruções de ramificação não resolvidas ainda noencadeamento. Uma vez que uma ramificação condicional éresolvida no encadeamento, ou descarregada do encadeamento,seu indicador de descarga de ramificação pode ser"retirado", e neste caso pode ser reutilizado. Ou seja,indicadores de descarga de ramificação atribuídosanteriormente podem ser retirados e marcados parareutilização quando as ramificações para as quais elesforam atribuídos são resolvidas, ou quando sãodescarregados do encadeamento porque dependem de outrainstrução (ramificação) que é descarregada, ou por causa deuma descarga relacionada com interrupção, por exemplo.
Em pelo menos uma modalidade, as larguras dosindicadores de descarga de ramificação e dos indicadores depercurso de ramificação são iguais, com a largura sendodeterminada pelo número de ramificações que são permitidosestarem no encadeamento do processador entre o estágio noqual os indicadores são atribuídos e o estágio no qual ascondições de ramificação são resolvidas, presumindo que asinstruções sejam mantidas em ordem até que os indicadoressejam atribuídos. A largura de indicador apropriada seria,no máximo, igual ao número de estágios entre os dois pontosespecíficos no encadeamento do processador. Entretanto, empelo menos uma modalidade, a largura de indicador é menorque o total de estágios, uma vez que é improvável que todosos estágios conterão ramificações condicionais.Evidentemente, a largura de indicador - isto é, o número demarcadores de ramificação condicional - necessária pode sermaior se instruções fora de ordem forem permitidas nosestágios de encadeamento de interesse e, de maneira maisgeral, pode ser determinada de acordo com os particularesdo encadeamento do processador envolvido.
Seja como for, na Figura 8 é apresentado umexemplo de detalhes de processamento para a modalidadeacima de marcação de dependência de predição deramificação, em que o circuito de controle de descarga 32ativa um indicador de descarga de ramificação, pelo menospara instruções de ramificação condicional que têmcondições de ramificação não determinadas (Etapa 110). Talativação pode ser feita em diversos pontos no encadeamentode instruções 30. Por exemplo, a marcação pode ser feitacomo parte da decodificação de instruções pelo estágio dedecodificação 42, ou pode ser feita imediatamente após esteestágio.
De qualquer maneira, indicadores de descarga deramificação são anexados às instruções de ramificaçãocondicional, de modo os resultados da condição deramificação transmitidos pelo estágio de execução 4 6 podemser identificados para instruções individuais dasinstruções de ramificação para as quais foram feitaspredições. Note que o processador 10 pode simplificar oprocessamento dos indicadores de descarga de ramificaçãoanexando indicadores de descarga de ramificação a todas asinstruções de ramificação, sejam condicionais ou não.
Em conjunto com o processamento de indicadores dedescarga de ramificação acima, que é especifico deinstruções de ramificação, geralmente todas as instruçõesbuscadas no encadeamento de instruções 30 são marcadas comum indicador de percurso de ramificação que inclui um oumais indicadores que correspondem aos indicadores dedescarga de ramificação atualmente ativos (ex., lógica OUdos indicadores de descarga de ramificação ativos) (Etapa112). Os indicadores de percurso de ramificação podem seranexados por um conjunto de circuitos dentro do circuito decontrole de descarga 32, ou por um conjunto de circuitoslocalizado em outro lugar no encadeamento de instruções 30.Por exemplo, a marcação da dependência pode serimplementada por um conjunto de circuitos no estágio debusca 40, ou no estágio de decodificação 42.Por causa dos indicadores de descarga deramificação anexados às instruções de ramificação, ocircuito de avaliação de condição 48 pode ser configuradopara transmitir os resultados de avaliação de condição deramificação que são "indicados" a um indicador de descargade ramificação correspondente. Ou seja, o circuito deavaliação condicional 48 pode ser configurado paraidentificar o indicador de descarga de ramificaçãoassociado a um dado resultado de condição, e pode serconfigurado para sinalizar esta informação ao circuito decontrole de descarga 32 e/ou ao circuito de predição deramificação 50, para a detecção de ramificações preditascorreta e incorretamente (Etapa 114).
Para uma ramificação predita corretamente, ocircuito de controle de descarga 32 pode ser configuradopara efetuar broadcast de um sinal de liberação com base noindicador de descarga de ramificação da instrução deramificação correspondente (Etapa 116) . 0 sinal deliberação pode ser recebido em um ou mais dos estágios quecompreendem o encadeamento de instruções 30, e o conjuntode circuitos associado a estes estágios libera o(s)indicador(es) correspondente(s) dos indicadores de percursode ramificação das instruções nestes estágios que forammarcados anteriormente como sendo dependentes da prediçãode ramificação agora resolvida. Tal conjunto de circuitospede ser configurado simplesmente para identificar asinstruções que têm indicadores de percurso de ramificaçãoanexados com bits configurados que correspondem aoindicador de descarga de ramificação indicado pelo sinal deliberação. Em algumas modalidades, tal circuito pode serconsiderado como parte do circuito de controle de descarga32.Para uma ramificação predita incorretamente, ocircuito de controle de descarga 32 pode ser configuradopara efetuar broadcast de um sinal de descarga com base noindicador de descarga de ramificação da instrução deramificação correspondente (Etapa 118). 0 sinal de descargapode ser recebido em um ou mais dos estágios quecompreendem o encadeamento de instruções 30, e o conjuntode circuitos de descarga associado a estes estágiosdescarrega as instruções que têm indicadores de percurso deramificação marcados como sendo dependentes da predição deramificação agora resolvida.
Os versados na técnica reconhecerão que a lógicade processamento acima representa simplesmente umamodalidade de um método mais amplo para marcar asdependências de predição de ramificação de instruções emprogresso, de modo que tais instruções podem serseletivamente descarregadas do encadeamento de instruções30 em resposta à detecção de que uma instrução deramificação especifica foi predita incorretamente. Emgeral, o processador 10 é configurado para marcarinstruções para indicar as instruções de ramificaçãoespecificas das quais elas dependem, detectar a prediçãoincorreta de instruções de ramificação individuais, edescarregar seletivamente instruções do encadeamento deinstruções 30 pela utilização destas marcações paraidentificar as instruções que dependem da ramificaçãopredita incorretamente.
Sendo assim, a presente invenção não estálimitada pela discussão precedente, nem está limitada pelosdesenhos apensos. Em vez disso, a presente invenção élimitada apenas pelas reivindicações apensas e seusequivalentes legais.

Claims (22)

1. Método para gerenciar predições de ramificaçãoem um encadeamento de instruções compreendendo:- marcar instruções buscadas no encadeamento deinstruções para indicar suas dependências de predição deramificação;- detectar instruções de ramificação incorretas; edescarregar instruções no encadeamento deinstruções que estão marcadas como sendo dependentes de umapredição de ramificação incorreta.
2. Método, de acordo com a reivindicação 1, noqual marcar instruções buscadas no encadeamento deinstruções para indicar suas dependências de predição deramificação compreende ativar indicadores de bits emresposta à realização de predições de ramificação, deixar oindicador de bits correspondente ativo para uma predição deramificação especifica até que esta predição de ramificaçãoseja resolvida, e marcar cada instrução buscada noencadeamento de instruções com uma agregação dosindicadores de bits ativos.
3. Método, de acordo com a reivindicação 2, noqual descarregar instruções no encadeamento de instruçõesque estão marcadas como sendo dependentes de uma prediçãode ramificação incorreta compreende efetuar broadcast de umsinal de descarga com base no indicador de bits quecorresponde à predição de ramificação incorreta, edescarregar instruções no encadeamento de instruções queestão marcadas com esse indicador de bits.
4. Método, de acordo com a reivindicação 2, quetambém compreende detectar predições de ramificaçãocorretas, e efetuar broadcast de um sinal de liberação combase no indicador de bits que corresponde a uma predição deramificação correta para liberar o indicador de bitscorrespondente das instruções no encadeamento de instruçõesque foram marcadas como sendo dependentes dessa predição deramificação.
5. Método, de acordo com a reivindicação 1, noqual marcar instruções buscadas no encadeamento deinstruções para indicar suas dependências de predição deramificação compreende atribuir um indicador de descarga deramificação pelo menos a cada instrução de ramificaçãocondicional buscada no encadeamento de instruções, e anexarum indicador de percurso de ramificação com base nosindicadores de descarga de ramificação para cada instruçãobuscada no encadeamento de instruções.
6. Método, de acordo com a reivindicação 5, noqual descarregar instruções no encadeamento de instruçõesque estão marcadas como sendo dependentes de uma prediçãode ramificação incorreta compreende resolver condições deramificação em um estágio de execução do encadeamento deinstruções para detectar predições de ramificação corretase incorretas e, para uma predição de ramificação incorreta,efetuar broadcast de um sinal de descarga no encadeamentode instruções com base no indicador de descarga deramificação da instrução de ramificação condicionalassociada, e descarregar todas as instruções noencadeamento de instruções cujo indicador de percurso deramificação corresponde ao indicador de descarga deramificação da instrução de ramificação condicionalassociada.
7. Método, de acordo com a reivindicação 6, quecompreende também, em resposta à detecção de uma prediçãode ramificação correta, efetuar broadcast de um sinal deliberação no encadeamento de instruções com base noindicador de descarga de ramificação da instrução deramificação condicional associada, e liberar qualquerindicador que corresponda ao indicador de descarga deramificação dos indicadores de percurso de ramificação dasinstruções atualmente no encadeamento de instruções.
8. Método, de acordo com a reivindicação 7, quecompreende também reutilizar indicadores de descarga deramificação para os quais os sinais de descarga ouliberação foram efetuados broadcast para marcar novasdependências de predição de ramificação em associação comoperações de busca de instruções em progresso.
9. Método, de acordo com a reivindicação 5, quecompreende também retirar o indicador de descarga deramificação atribuído a uma dada instrução de ramificaçãocondicional após a resolução de uma condição de ramificaçãoda instrução de ramificação condicional associada ou apósdescarregar a dada instrução de ramificação condicional, ereutilizar os indicadores de descarga de ramificaçãoretirados quando necessário para marcar novas dependênciasde predição de ramificação.
10. Processador compreendendo um encadeamento.deinstruções que inclui um circuito de controle de descargaconfigurado para:- marcar instruções buscadas no encadeamento deinstruções para indicar suas dependências de predição deramificação;- detectar instruções de ramificação incorretas;edescarregar instruções no encadeamento deinstruções que estão marcadas como sendo dependentes de umapredição de ramificação incorreta.
11. Processador, de acordo com a reivindicação-10, no qual o circuito de controle de descarga éconfigurado para marcar instruções buscadas no encadeamentode instruções para indicar suas dependências de predição deramificação ativando indicadores de bits em resposta àrealização de predições de ramificação, deixando oindicador de bits correspondente ativo para uma predição deramificação especifica até que essa predição de ramificaçãoseja resolvida, e marcar cada instrução buscada noencadeamento de instruções com uma agregação dosindicadores de bits ativos.
12. Processador, de acordo com a reivindicação 11, no qual o circuito de controle de descarga éconfigurado para descarregar instruções no encadeamento deinstruções que estão marcadas como sendo dependentes de umapredição de ramificação incorreta ao efetuar broadcast deum sinal de descarga com base no indicador de bits quecorresponde à predição de ramificação incorreta, para entãoiniciar a descarga das instruções no encadeamento deinstruções que estão marcadas com esse indicador de bits.
13. Processador, de acordo com a reivindicação 12, no qual um ou mais estágios do encadeamento deinstruções incluem um conjunto de circuitos de descargaconfigurado para receber o sinal de descarga, e tambémconfigurado para descarregar instruções marcadas comindicadores de bits comunicados pelo sinal de descarga.
14. Processador, de acordo com a reivindicação 11, no qual o circuito de controle de descarga éconfigurado para efetuar broadcast de um sinal de liberaçãocom base no indicador de bits que corresponde a umapredição de ramificação correta para liberar o indicador debits correspondente das instruções no encadeamento deinstruções que foram marcadas como sendo dependentes dessapredição de ramificação.
15. Processador, de acordo com a reivindicação 14, no qual um ou mais estágios do encadeamento deinstruções incluem um conjunto de circuitos de descarga deinstruções configurado para receber o sinal de liberação, etambém configurado para liberar marcações das instruçõesque correspondem aos indicadores de bits comunicados pelosinal de liberação.
16. Processador, de acordo com a reivindicação 10, no qual o circuito de controle de descarga éconfigurado para marcar instruções buscadas no encadeamentode instruções para indicar suas dependências de predição deramificação atribuindo um indicador de descarga deramificação pelo menos para cada instrução de ramificaçãocondicional buscada no encadeamento de instruções, e anexarum indicador de percurso de ramificação com base nosindicadores de descarga de ramificação a cada instruçãobuscada no encadeamento de instruções.
17. Processador, de acordo com a reivindicação 16, no qual o circuito de controle de descarga éconfigurado para descarregar instruções no encadeamento deinstruções que estão marcadas como sendo dependentes de umapredição de ramificação incorreta ao efetuar broadcast deum sinal de descarga no encadeamento de instruções com baseno indicador de descarga de ramificação da instrução deramificação condicional associada, para então iniciar adescarga de todas as instruções no encadeamento deinstruções cujos indicadores de percurso de ramificaçãoestão marcados com o indicador de descarga de ramificaçãoda instrução de ramificação condicional que corresponde àpredição de ramificação incorreta.
18. Processador, de acordo com a reivindicação 17, no qual o circuito de controle de descarga éconfigurado para efetuar broadcast de um sinal de liberaçãono encadeamento de instruções com base no indicador dedescarga de ramificação da instrução de ramificaçãocondicional que corresponde a uma predição de ramificaçãocorreta, para então iniciar a liberação de qualquerindicador que corresponda a esse indicador de descarga deramificação dos indicadores de percurso de ramificação dasinstruções no encadeamento de instruções.
19. Processador, de acordo com a reivindicação-18, no qual o circuito de controle de descarga éconfigurado para reutilizar indicadores de descarga deramificação para os quais sinais de descarga ou liberaçãoforam efetuados broadcast para marcar novas dependências depredição de ramificação em associação com operações debusca de instruções em progresso.
20. Processador, de acordo com a reivindicação-16, no qual o circuito de controle de descarga éconfigurado para retirar o indicador de descarga deramificação atribuído a uma dada instrução de ramificaçãocondicional após detectar que uma condição de ramificaçãodessa dada instrução de ramificação condicional foiresolvida ou descarregada, e para reutilizar indicadores dedescarga de ramificação retirados quando necessário paramarcar novas dependências de predição de ramificação.
21. Processador, de acordo com a reivindicação-10, no qual o encadeamento de instruções compreende umencadeamento de instruções super-escalar que suportaexecução de programa fora de ordem, e no qual o circuito decontrole de descarga suporta marcação, detecção e descargadentre uma pluralidade de estágios de execução paralelosque compreendem o encadeamento super-escalar.
22. Método para gerenciar predições deramificação em um encadeamento de instruções compreendendo:- manter indicadores de descarga de ramificaçãoativos para instruções de ramificação no encadeamento deinstruções que têm condições de ramificação nãodeterminadas;- marcar cada instrução buscada no encadeamentocom um indicador de percurso de ramificação incluindo um oumais indicadores que correspondem aos indicadores dedescarga de ramificação ativos;detectar instruções de ramificação preditasincorretamente das instruções de ramificação determinandosuas condições de ramificação associada; e- descarregar instruções no encadeamento deinstruções que têm indicadores de percurso de ramificaçãoque incluem um indicador que corresponde ao indicador dedescarga de ramificação ativo de uma instrução deramificação predita incorretamente.
BRPI0611643-4A 2005-06-10 2006-06-02 método e equipamento para gerenciar decarga de instrução em um encadeamento de instruções de microprocessador BRPI0611643A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/149,773 2005-06-10
US11/149,773 US7949861B2 (en) 2005-06-10 2005-06-10 Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline
PCT/US2006/021617 WO2006135590A2 (en) 2005-06-10 2006-06-02 Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline

Publications (1)

Publication Number Publication Date
BRPI0611643A2 true BRPI0611643A2 (pt) 2010-09-28

Family

ID=37525525

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0611643-4A BRPI0611643A2 (pt) 2005-06-10 2006-06-02 método e equipamento para gerenciar decarga de instrução em um encadeamento de instruções de microprocessador

Country Status (8)

Country Link
US (1) US7949861B2 (pt)
EP (1) EP1894092A4 (pt)
JP (1) JP2008544353A (pt)
KR (1) KR100974769B1 (pt)
CN (1) CN101228507A (pt)
BR (1) BRPI0611643A2 (pt)
IL (1) IL187865A0 (pt)
WO (1) WO2006135590A2 (pt)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617387B2 (en) * 2006-09-27 2009-11-10 Qualcomm Incorporated Methods and system for resolving simultaneous predicted branch instructions
GB2448118B (en) * 2007-04-03 2011-08-24 Advanced Risc Mach Ltd Error recovery following erroneous execution with an instruction processing pipeline
US8990543B2 (en) * 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
US8862861B2 (en) 2011-05-13 2014-10-14 Oracle International Corporation Suppressing branch prediction information update by branch instructions in incorrect speculative execution path
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
CN102360282A (zh) * 2011-09-26 2012-02-22 杭州中天微系统有限公司 快速处置分支指令预测错误的流水线处理器装置
GB2529180B (en) * 2014-08-12 2021-07-14 Advanced Risc Mach Ltd Arbitration and hazard detection for a data processing apparatus
JP7041353B2 (ja) * 2018-06-06 2022-03-24 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11797665B1 (en) * 2018-06-28 2023-10-24 Advanced Micro Devices, Inc. Protection against branch target buffer poisoning by a management layer
CN112559048B (zh) * 2019-09-25 2023-12-12 阿里巴巴集团控股有限公司 一种指令处理装置、处理器及其处理方法
CN111475203B (zh) * 2020-04-03 2023-03-14 小华半导体有限公司 一种用于处理器的指令读取方法以及相应的处理器
US11360773B2 (en) 2020-06-22 2022-06-14 Microsoft Technology Licensing, Llc Reusing fetched, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-fetching
US11074077B1 (en) * 2020-06-25 2021-07-27 Microsoft Technology Licensing, Llc Reusing executed, flushed instructions after an instruction pipeline flush in response to a hazard in a processor to reduce instruction re-execution
US12045178B2 (en) * 2022-02-10 2024-07-23 Mellanox Technologies, Ltd. Devices, methods, and systems for disaggregated memory resources in a computing environment
CN115184218B (zh) * 2022-07-11 2024-10-11 中国石油大学(华东) 一种基于微观渗流模拟和机器学习的粘性指进快速预测方法
CN117785333A (zh) * 2022-09-20 2024-03-29 华为技术有限公司 一种程序执行方法、装置及设备
CN120872421B (zh) * 2025-09-25 2025-12-16 北京微核芯科技有限公司 数据依赖的分支指令的实现方法、装置和设备

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor
US5764970A (en) * 1995-11-20 1998-06-09 International Business Machines Corporation Method and apparatus for supporting speculative branch and link/branch on count instructions
US5809324A (en) * 1995-12-07 1998-09-15 Sun Microsystems, Inc. Multiple instruction dispatch system for pipelined microprocessor without branch breaks
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6026477A (en) * 1997-12-31 2000-02-15 Intel Corporation Branch recovery mechanism to reduce processor front end stall time by providing path information for both correct and incorrect instructions mixed in the instruction pool
US6289442B1 (en) * 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6799263B1 (en) * 1999-10-28 2004-09-28 Hewlett-Packard Development Company, L.P. Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted
US6883090B2 (en) * 2001-05-17 2005-04-19 Broadcom Corporation Method for cancelling conditional delay slot instructions
US20050071614A1 (en) * 2003-09-30 2005-03-31 Stephan Jourdan Method and system for multiple branch paths in a microprocessor
US7152155B2 (en) 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction

Also Published As

Publication number Publication date
WO2006135590A3 (en) 2007-05-31
JP2008544353A (ja) 2008-12-04
US20060282829A1 (en) 2006-12-14
EP1894092A4 (en) 2008-07-23
US7949861B2 (en) 2011-05-24
CN101228507A (zh) 2008-07-23
WO2006135590A2 (en) 2006-12-21
KR20080015508A (ko) 2008-02-19
EP1894092A2 (en) 2008-03-05
KR100974769B1 (ko) 2010-08-06
IL187865A0 (en) 2008-03-20

Similar Documents

Publication Publication Date Title
BRPI0611643A2 (pt) método e equipamento para gerenciar decarga de instrução em um encadeamento de instruções de microprocessador
JP5799465B2 (ja) ループバッファ学習
TWI423123B (zh) 用於推測性指令之無效的通用分支系統、其方法、其識別器與其電腦可讀取儲存媒體
US8627044B2 (en) Issuing instructions with unresolved data dependencies
US7941654B2 (en) Local and global branch prediction information storage
US6976152B2 (en) Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US20030061470A1 (en) Power consumption reduction mechanism for pipeline stalls
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
US20120079255A1 (en) Indirect branch prediction based on branch target buffer hysteresis
BRPI0715163B1 (pt) Circuito de depuração comparando modo de operação de conjunto de instruções de processador
US20080168263A1 (en) Branch target buffer and method of use
JPH11288373A (ja) コンピュ―タ・システム
US8706979B2 (en) Code reuse and locality hinting
BRPI0610926A2 (pt) método e equipamento para predizer instruções de ramificação
US20120210107A1 (en) Predicated issue for conditional branch instructions
US20070288733A1 (en) Early Conditional Branch Resolution
US6625725B1 (en) Speculative reuse of code regions
US8635408B2 (en) Controlling power of a cache based on predicting the instruction cache way for high power applications
US20070288732A1 (en) Hybrid Branch Prediction Scheme
US6990569B2 (en) Handling problematic events in a data processing apparatus
US7269714B2 (en) Inhibiting of a co-issuing instruction in a processor having different pipeline lengths
US20080163010A1 (en) Fault detection
US20070288731A1 (en) Dual Path Issue for Conditional Branch Instructions
US20070288734A1 (en) Double-Width Instruction Queue for Instruction Execution
JP2006221606A (ja) データプロセッサ

Legal Events

Date Code Title Description
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 6A ANUIDADE.

B08K Patent lapsed as no evidence of payment of the annual fee has been furnished to inpi [chapter 8.11 patent gazette]

Free format text: NAO APRESENTADA A GUIA DE CUMPRIMENTO DE EXIGENCIA. REFERENTE A 6A ANUIDADE.