BRPI0610926A2 - método e equipamento para predizer instruções de ramificação - Google Patents

método e equipamento para predizer instruções de ramificação Download PDF

Info

Publication number
BRPI0610926A2
BRPI0610926A2 BRPI0610926-8A BRPI0610926A BRPI0610926A2 BR PI0610926 A2 BRPI0610926 A2 BR PI0610926A2 BR PI0610926 A BRPI0610926 A BR PI0610926A BR PI0610926 A2 BRPI0610926 A2 BR PI0610926A2
Authority
BR
Brazil
Prior art keywords
branch
history table
instruction
prediction
cache
Prior art date
Application number
BRPI0610926-8A
Other languages
English (en)
Inventor
Thomas Andrew Sartorius
Brian Michael Stempel
Jeffrey Todd Bridges
James Norris Dieffenderfer
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 BRPI0610926A2 publication Critical patent/BRPI0610926A2/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
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Um microprocessador inclui duas tabelas de histórico de ramificação, e é configurado para utilizar uma primeira das tabelas de histórico de ramificação para predizer as instruções de ramificação que são acertos em uma cache alvo de ramificação, e para utilizar uma segunda das tabelas de histórico de ramificação para predizer as instruções de ramificação que são erros na cache alvo de ramificação. Como tal, a primeira tabela de histórico de ramificação é configurada para ter uma velocidade de acesso que coincide com a da cache alvo de ramificacão, de forma que sua informação de predição seja prontamente disponível com relação á detecção de acerto de cache alvo de ramificação, que pode ocorrer mais cedo na seqúência de instrução de microprocessador. A segunda tabela de histórico de ramificação, dessa forma, só precisa ser tão rápida quanto necessário para fornecer a informação de predição temporal em associação com o reconhecimento dos erros da cache alvo de ramificação como instruções de ramificação, tal como nos estágios de decodificação de instrução da seqüência de instrução.

Description

"MÉTODO E EQUIPAMENTO PARA PREDIZER INSTRUÇÕES DE RAMIFICAÇÃO"
FUNDAMENTOS
Campo da Invenção
A presente invenção refere-se geralmente amicroprocessadores, e, particularmente, se refere amicroprocessadores de predição de ramificação.
Fundamentos Relevantes
Os microprocessadores em seqüência comumenteutilizam predição de ramificação para evitar a interrupçãode suas seqüências de instrução enquanto esperam adeterminação de se as instruções de ramificação condicionaldevem ser realizadas. Os mecanismos de predizer ramificaçãopermitem que tais microprocessadores "adivinhem" se asinstruções de ramificação condicional serão realizadas ounão, antes da avaliação real de suas condições deramificação.
Um método de predizer ramificação comum se baseiana manutenção de uma tabela de histórico de ramificação queinclui um número de contadores saturados, ou outrosindicadores de rastreamento, que fornecem a informação depredizer ramificação. Como um exemplo, um contador saturadode dois bits conta até um valor máximo de 11, e de formaregressiva até um valor minimo de 00, onde o valor 11representa realização forte, 10 representa realizaçãofraca, 01 representa não realização fraca e 00 representanão realização forte. Tais contadores podem ser mantidosdinamicamente com base na heurística de tempo defuncionamento, tal como o microprocessador rastreandocomportamentos de ramificação anteriores.
Visto que os ganhos de desempenho real obtidosatravés da predição de ramificação dependem nas precisõesde predição de ramificação, contadores diferentes podem serutilizados para faixas de endereço de instrução diferentes,de forma que o estado do indicador de cada contador refletede forma melhor o comportamento realizado/não realizado dasinstruções de ramificação dentro de uma faixa de endereçode instrução menor. 0 aperfeiçoamento da precisão depredição dessa forma pode resultar no uso de um númerorelativamente maior de contadores, visto que cada contadorfornece um elemento de predizer ramificação para uma faixade endereço de instrução relativamente pequena. Dessaforma, as tabelas de histórico de ramificação podem serrelativamente grandes, e a indexação nos mesmos pode exigira decodificação de um número significativo de bits deendereço de instrução para identificar a faixa de endereçode instrução relativamente estreita envolvida.
Os retardos limitam a capacidade de se realizaradicionalmente os ganhos de desempenho de predizerramificação através do uso de caches de endereço alvo deramificação (ou, de forma equivalente, os caches deinstrução alvo de ramificação). Tais caches alvo deramificação mantêm os endereços de instrução das instruçõesde ramificação reconhecidas previamente, por exemplo,instruções de ramificação que foram previamente recolhidas,decodificadas e identificadas como instruções deramificação pelo microprocessador, e as instruções deramificação podem ser detectadas antes da decodificaçãopela comparação do endereço de instrução de cada instruçãorecém recolhida para o conteúdo de cachê alvo deramificação. Um "acerto" de cache alvo de ramificaçãoindica que o endereço de instrução corresponde a umaramificação previamente reconhecida, enquanto um "erro" decache alvo de ramificação indica que a instrução não é umaramificação reconhecida previamente,, significando que omicroprocessador deve esperar até que o estágio dedecodificação de instrução determine se a instrução é umainstrução de ramificação.
Dessa forma, as instruções de ramificação que sãoacertos de cache alvo de ramificação podem ser previstascomo realizadas ou não realizadas sem esperar peladecodificação de instrução. No entanto, a capacidade de serealizar as previsões utilizando a tabela de histórico deramificação depende da informação de tabela estandodisponível na mesma quantidade de tempo que leva para sedetectar os acertos de cache alvo de ramificação. Grandestabelas de histórico de ramificação geralmente não estãoacessíveis rapidamente o suficiente para uso na prediçãodos acertos de cache alvo de ramificação.
A indisponibilidade de informação de prediçãotemporal força os microprocessadores a adotarem outrasabordagens. Em uma abordagem alternativa, as instruções deramificação que são os acertos de cache alvo de ramificaçãosão assumidos como tendo sido sempre realizadas, isso é, a"predição" é fixada como realizada. Tais abordagens podemlevar a previsões erradas várias vezes. Outra alternativa ése acelerar a tabela de histórico de ramificação,tipicamente tornando-a pequena o suficiente para seracessível logo nos estágios de recolhimento da seqüência deinstrução, de forma que a informação de predição estejadisponível antes da decodificação da instrução. No entanto,o encolhimento da tabela de histórico de ramificação dessaforma geralmente reduz as precisões de predição visto que omesmo elemento de predição (ou elementos) é utilizado parapredizer as ramificações através de uma faixa maior deendereços de instrução.SUMÁRIO DA DESCRIÇÃO
Em uma ou mais modalidades, um microprocessadorutiliza uma primeira tabela de histórico de ramificaçãopara predizer as instruções de ramificação que são acertosde cache alvo de ramificação, e utiliza uma segunda tabelade histórico de ramificação para predizer as instruções deramificação que são erros de cache alvo de ramificação. Aprimeira tabela de histórico de ramificação é configuradapara ter uma velocidade de acesso coincidente com a dacache alvo de ramificação, de forma que sua informação depredição esteja disponível logo na seqüência de instruçãodo microprocessador, onde os acertos e erros de cache alvode ramificação são detectados. Visto que a informação depredição não é necessária até mais tarde na seqüência, asegunda tabela de histórico de ramificação não precisa sertão rápida quanto a primeira tabela de histórico deramificação. Esse fato permite uma flexibilidadesignificativa na configuração do tamanho e da precisão dasegunda tabela de histórico de ramificação.
O microprocessador pode incluir um circuito depredizer ramificação que é configurado para direcionar orecolhimento de instrução de um cachê de instrução para aseqüência de instrução do microprocessador com base napredição de instruções de ramificação recolhidas naseqüência de instrução como realizadas ou não. Umamodalidade do circuito de predizer ramificação compreendeum cache alvo de ramificação configurado para armazenarinformação alvo de ramificação para as instruções deramificação conhecidas, uma primeira tabela de histórico deramificação configurada para armazenar a primeirainformação de predizer ramificação, uma segunda tabela dehistórico de ramificação configurada para armazenar asegunda informação de predizer ramificação,1 e uma lógica decontrole de ramificação. A lógica de controle deramificação pode ser configurada para predizer asinstruções de ramificação como realizadas ou não de acordocom a primeira informação de predizer ramificação para asinstruções de ramificação que são acertos de cache alvo deramificação, e de acordo com a segunda informação depredizer ramificação para as instruções de ramificação quesão erros de cache alvo de ramificação.
Em uma modalidade, a primeira tabela de históricode ramificação é configurada para ter uma velocidade deacesso coincidente com a da cache alvo de ramificação, e asegunda tabela de histórico de ramificação é configuradapara ter uma velocidade de acesso coincidente com a dacache de instrução. Mais geralmente, a primeira tabela dehistórico de ramificação é configurada de modo que suainformação de predizer ramificação esteja disponível emconjunto com a detecção dos acertos de cache alvo deramificação, por exemplo, logo nos estágios de recolhimentoda seqüência de instrução, enquanto a segunda tabela dehistórico de ramificação é configurada de forma que suainformação de predizer, ramificação esteja disponível emconjunto com o reconhecimento das instruções deramificação, por exemplo, mais tarde nos estágios dedecodificação da tubulação de instrução.
0 microprocessador acima pode consubstanciar umaou mais variações do método de predição de acertos de cachealvo de ramificação utilizando a primeira tabela dehistórico de ramificação, e a predição de erros de cachealvo de ramificação utilizando a segunda tabela dehistórico de ramificação. Por exemplo, o microprocessadorpode ser configurado para realizar as previsões iniciaispara os acertos de cache alvo de ramificação de acordo coma primeira informação de predizer ramificação, econfigurado para realizar as previsões subseqüentescorrespondentes para os acertos de cache alvo deramificação de acordo com a segunda informação de predizerramificação. Dessa forma, o microprocessador pode serconfigurado para direcionar o recolhimento de instrução deacordo com as previsões iniciais, e redirecionar de formacondicional o recolhimento de instrução de acordo com asprevisões subseqüentes correspondentes. Isso é, visto que asegunda tabela de histórico de ramificação pode ser maior(e mais precisa) do que a primeira tabela de histórico deramificação, o microprocessador pode redirecionar orecolhimento de instrução se a predição subseqüentecorrespondente não concordar com a predição inicialfornecida.
Adicionalmente, o microprocessador pode serconfigurado para atualizar a segunda informação de predizerramificação em resposta à solução das previsões deramificação realizadas para os acertos e erros de cachealvo de ramificação, de forma que a segunda informação depredizer ramificação reflita os históricos de ramificaçãopara ambos os acertos e erros de cache alvo de ramificação.Com essa abordagem, o microprocessador pode ser configuradopara atualizar a primeira informação de predizerramificação como uma função da segunda informação depredizer ramificação. Isso é, a segunda tabela de históricode ramificação é criada para refletir os históricos deramificação de todas as instruções de ramificação,executadas, representadas ou não na cache alvo deramificação.
Alternativamente, o microprocessador pode serconfigurado para atualizar a segunda informação de predizerramificação em resposta à solução das previsões deramificação realizadas para os erros de cache alvo deramificação, e pode ser configurado para atualizar aprimeira informação de predizer ramificação em resposta àsolução das previsões de ramificação criada para os acertosde cache alvo de ramificação. Com essa abordagem, aprimeira tabela de histórico de ramificação reflete oshistóricos de ramificação para as instruções de ramificaçãorepresentadas dentro da cache, e a segunda tabela dehistórico de ramificação reflete os históricos deramificação para as instruções de ramificação nãorepresentadas na cache.
BREVE DESCRIÇÃO DOS DESENHOS
A figura 1 é um diagrama em bloco de ummicroprocessador;
A figura 2 é um diagrama em bloco de um circuitode extremidade dianteira para uma seqüência de instruçãoque pode ser implementada no microprocessador da figura 1;
A figura 3 é um fluxograma do processamento deinstrução para uma modalidade do circuito de extremidadedianteira ilustrado na figura 2.
DESCRIÇÃO DAS MODALIDADES DA INVENÇÃO
Por meio de um exemplo não limitador, a figura 1ilustra um microprocessador 10, que pode compreender ummicroprocessador RISC em seqüência. Na modalidadeilustrada, o microprocessador 10 compreende circuitos deentrada/saida (1/0) 12, uma cache de instrução 14, umacache de dados 16, e uma seqüência de instrução 18, quecompreendem um circuito de extremidade dianteira 20, umaunidade de execução 22, e uma unidade de finalização 24.
Em operação, o circuito de extremidade dianteirarecolhe as instruções da cache de instrução 14, que podeser uma cache de Nível 1 embutida (LI). As instruções sãorecolhidas de acordo com um fluxo de programa de computadordefinido, que pode incluir ramificações de programa oupulos. O microprocessador 10 utiliza a predição deramificação para predizer ser as ramificações condicionaisserão realizadas ou não, de forma que geralmente nãointerrompa suas operações de recolhimento de instruçãoquando as instruções de ramificação condicional sãoencontradas.
As instruções recolhidas são decodificadas eemitidas para a unidade de execução 22, que pode serimplementada de acordo com uma arquitetura superescalonada.A unidade de execução 22 executa as instruções emitidas, e
a unidade de finalização 24 retira as instruçõesexecutadas. A unidade de finalização 24 pode compreender ummecanismo de escrita que armazena os resultados de execuçãoem um ou mais registros de arquivo alvo. Por meio de umexemplo não limitador, a unidade de execução 22 compreendeuma unidade inteira 26, uma unidade de carga/armazenamento28 e uma unidade de ponto flutuante 30. Dessa forma, ocircuito de extremidade dianteira 20 pode ser configuradopara despachar as instruções inteiras para a unidadeinteira 26, as instruções de acesso à memória para aunidade de carga/armazenamento 28, e assim por diante.
Os versados na técnica apreciarão que cadasubunidade dentro da unidade de execução 22 propriamentedita pode compreender vários estágios seqüenciais, e que assubunidades em particular implementadas dentro da unidadede execução 22 podem variar. Na verdade, os versados natécnica apreciarão que a arquitetura do microprocessador 10pode variar muito sem se distanciar dos métodos de predizerramificação e equipamento descritos aqui.
Voltando-se a um tratamento mais detalhado dapredição de ramificação de acordo com uma modalidade domicroprocessador 10, o circuito de extremidade dianteira 20compreende vários estágios seqüenciais, incluindo osestágios de recolhimento seqüencial 32 e 34 (tambémdenotados FE1 e FE2 no diagrama) , os estágios dedecodificação seqüencial 36 e 38 (também denotados DC1 eDC2 no diagrama) e um estágio de emissão/despacho 40(também denotado IS no diagrama). Um ou mais dessesestágios seqüenciais de extremidade dianteira sãoassociados com um circuito de predizer ramificação 42 quecompreende lógica de controle de ramificação 44, uma cachealvo de ramificação 46, uma primeira tabela de histórico deramificação 48 (também denotada BHT1 no diagrama), e umasegunda tabela de histórico de ramificação 50 (tambémdenotada BHT2 no diagrama).
O estágio de recolhimento 32' pode ser configuradopara manter um contador de endereço que representa oendereço de instrução da próxima instrução a ser recolhidadentro da seqüência de instrução 18. O valor mantido noestágio de recolhimento 32 é fornecido para a cache deinstrução 14, de forma que a cache de instrução 14 envie ainstrução de programa real mantida no endereçoespecificado, para decodificação pelo estágio dedecodificação 36. O valor mantido no estágio derecolhimento 32 é geralmente atualizado em cada ciclo derelógio. Para o recolhimento seqüencial, a atualização dovalor compreendendo o incremento do mesmo para que apontepara a próxima instrução de programa na seqüência atual deinstruções. No entanto, o recolhimento seqüencial não éadequado, se a última instrução recolhida for uma instruçãode ramificação condicional que será realizada. Ao invésdisso, o recolhimento de instrução deve ser redirecionadapara o endereço alvo da instrução de ramificação.
Para essa finalidade, o circuito de predizerramificação 42 utiliza a informação de histórico deramificação para predizer se uma instrução de ramificaçãocondicional fornecida será realizada ou não. Tal informaçãode ramificação pode ser gerada de acordo com uma ou maisheurísticas. Por meio de um exemplo não limitador, ainformação de predizer ramificação pode ser baseada nomonitoramento de quantas das últimas ramificações R foramrealizadas ou não. Tal informação pode ser refinada, talcomo pela manutenção da informação do histórico separadopara ramificações de avanço e retrocesso, e/ou pelamanutenção dos elementos de precisão de histórico deramificação para as sub-faixas do espaço de endereço deinstrução de programa geral, de forma que cada elemento depredizer ramificação reflita o comportamento realizado/nãorealizado de uma faixa de endereço de instruçãorelativamente pequena. A restrição de cada elemento depredição a uma faixa menor dos endereços de instrução podefornecer um elemento de predição mais preciso, visto que onúmero de ramificações representadas por cada elemento depredição é incluído e, de forma presumida, reflete mais oscomportamentos específicos desse número menor deramificações.
No entanto, a manutenção de um número maior deelementos de predição exige geralmente uma tabela dehistórico de ramificação grande, que pode reduzir a taxa naqual a tabela pode ser acessada. Uma velocidade de acessomenor não é problemática em termos de instruções deramificação que não são reconhecidas (e, dessa forma,imprevistas) até a etapa de decodificação na seqüência deinstrução 18, mas é problemática para instruções deramificação que são reconhecidas como instruções deramificação logo na seqüência de instrução 18, em virtudeda cache alvo de ramificação 46, que fornece aomicroprocessador 10 a capacidade de reconhecer se umainstrução recém recolhida é ou não uma instrução deramificação, antes de a instrução ser decodificada.
Por meio de exemplos não limitadores, que a cachealvo de ramificação 4 6 pode ser implementada como uma Cachede Endereço Alvo de Ramificação (conhecida como "BTAC"), oucomo uma Cache de Instrução Alvo de Ramificação (conhecidacomo "BTIC"). No primeiro caso, a cache alvo de ramificação46 armazena os endereços de instrução das instruções deramificação previamente identificadas, e armazena osendereços alvo da ramificação correspondente. No segundocaso, a cache alvo de ramificação 46 armazena o endereço deinstrução das instruções de ramificação previamenteidentificadas, as instruções alvo reais dessas instruçõesde ramificação, e o próximo endereço de instrução depois doendereço da instrução alvo.
Independentemente, se uma instrução fornecidativer sido previamente recolhida, decodificada eidentificada como uma instrução de ramificação condicional,seu endereço de instrução correspondente pode serarmazenado na cache alvo de ramificação 46. A cache alvo deramificação 4 6, dessa forma, armazena os endereços deinstrução das instruções de ramificação conhecidas, e oendereço de instrução de cada instrução recém recolhidapode ser comparado com os valores de endereço mantidos nacache alvo de ramificação 46. Uma combinação de comparação(um acerto de cache alvo de ramificação) significa que ainstrução recolhida recentemente é uma instrução deramificação conhecida, enquanto nenhuma combinação (um errode cache alvo de ramificação) significa que a decodificaçãode instrução será necessária para se determinar se ainstrução recém recolhida é uma instrução de ramificação.
Visto que o estágio no qual as instruções deramificação são identificadas com base na detecção deacerto de cache alvo de ramificação é mais cedo do que oestágio no qual as instruções de ramificação sãoidentificadas com base na decodificação de instrução, ainformação de predizer ramificação utilizada para predizeras instruções de ramificação que são acertos de cache alvode ramificação deve estar disponível mais rapidamente doque a informação de predizer ramificação utilizada parapredizer as instruções de ramificação que são erros decache alvo de ramificação. Dessa forma, em pelo menos umamodalidade do microprocessador 10, seu método de predizerramificação compreende a manutenção da cache alvo deramificação 46 para identificação das instruções deramificação conhecidas, determinação de se as instruções deramificação recolhidas na seqüência de instrução 18 domicroprocessador 10 são acertos de cache alvo deramificação ou erros de cache alvo de ramificação, e apredição das instruções de ramificação que são acertos decache alvo de ramificação como realizadas ou não de acordocom a primeira informação de predizer ramificaçãoarmazenada na primeira tabela de histórico de ramificação48, e a predição das instruções de ramificação que sãoerros de cache alvo de ramificação como realizadas ou nãode acordo com a segunda informação de predizer ramificaçãoarmazenada na segunda tabela de histórico de ramificação 50.
O método pode compreender adicionalmente aconfiguração da primeira tabela de histórico de ramificação48 para ter uma velocidade de acesso combinada com a dacache alvo de ramificação 46, e a configuração da segundatabela de histórico de ramificação 50 para ter umavelocidade de acesso combinada com a da cache de instrução14, da qual as instruções são recolhidas na seqüência deinstrução 18. Geralmente, a velocidade de acesso da cachede instrução 14 é tal que a instrução de programa real(recolhida) é fornecida para o primeiro estágio dedecodificação 36 no ciclo de relógio de instrução adequado.
Como um exemplo, a primeira tabela de histórico deramificação 48 e a cache alvo de ramificação 46 pode serconfigurada para ser acessível em M ciclos da seqüência deinstrução 18, e a segunda tabela de histórico deramificação 50 pode ser configurada como sendo acessível emN ciclos de seqüência de instrução 18, onde M e N sãoprimeiro e segundo números, com M sendo inferior a N.
Um método de configuração da primeira tabela dehistórico de ramificação 48 para que seja mais rápida doque a segunda tabela de histórico de ramificação 50compreende a configuração da primeira tabela de históricode ramificação 48 para armazenar um número menor deelementos de predizer ramificação do que a segunda tabelade histórico de ramificação 50, de forma que o acesso a umelemento de predizer ramificação na primeira tabela dehistórico de ramificação 48 leve menos tempo do que oacesso a um elemento de predizer ramificação na segundatabela de histórico de ramificação 50. Como notadopreviamente, os elementos de predição individuaisarmazenados nas tabelas de histórico de ramificação 48 e 50podem compreender contadores saturados, por exemplo,contadores de dois bits, que fornecem informação depredizer ramificação na forma de um indicador possuindoestados altamente realizado, pouco realizado, pouco nãorealizado e altamente não realizado. No entanto, deve-secompreender que as tabelas de histórico de ramificação 48 e50 podem adotar um tipo diferente de contador, ou adotaruma forma completamente diferente de elemento de predizerramificação.Em um aspecto adicional do método de predizerramificação de duas tabelas destacado acima, omicroprocessador 10 pode ser configurado para realizar asprevisões iniciais para os acertos de cache alvo deramificação de acordo com a primeira informação de predizerramificação, e realizar as previsões subseqüentescorrespondentes para os acertos de cache alvo deramificação de acordo com a segunda informação de predizerramificação. Isso é, o microprocessador 10 pode serconfigurado para controlar seu recolhimento de instruçãopara os acertos de cache alvo de ramificação com base emuma predição de ramificação inicial (cedo), realizadautilizando a informação armazenada na primeira tabela dehistórico de ramificação 48, e então a eliminação de talcontrole se a predição de ramificação subseqüentecorrespondente realizada utilizando a informação armazenadana segunda tabela de histórico de ramificação 50 nãoconcordar com a predição inicial.
Nesse contexto, a eliminação da predição anteriorpode compreender o redirecionamento do recolhimento deinstrução. Por exemplo, se a predição inicial forrealizada, o circuito de predizer ramificação 42 podedirecionar o recolhimento de instrução para o endereço alvode ramificação indicado, e, se a predição subseqüente nãofor realizada, o circuito de predizer ramificação poderedirecionar o recolhimento de instrução de volta para opróximo endereço seqüência depois da instrução deramificação não realizada. Existem muitas vantagens para oredirecionamento condicional (eliminação) das previsões deramificação anteriores utilizando as previsões deramificação subseqüentes, tal como onde a segunda tabela dehistórico de ramificação 50 é maior e, presumivelmente,mais precisa do que a primeira tabela de histórico deramificação menor e mais rápida 48.
Com o método acima, a segunda tabela de históricode ramificação 50 armazena a informação de predição que éutilizada para ambos os acertos de cache alvo deramificação e os erros de cache alvo de ramificação. Comotal, o método de atualização da segunda tabela de históricode ramificação 50 compreende a atualização da segundainformação de predizer ramificação em resposta à soluçãodas previsões de ramificação realizadas para os acertos eerros de cache alvo de ramificação, de forma que a segundainformação de predizer ramificação reflita os históricos deramificação para ambos os acertos de cache alvo deramificação e os erros. Isso é, a unidade de execução 22pode ser configurada para fornecer retorno para o circuitode predizer ramificação 42, quanto ao fato de se asinstruções de ramificação individuais, para ambos osacertos e os erros de cache alvo de ramificação, na verdadeforam realizadas ou não, e que o retorno pode ser utilizadopara atualizar a informação de predição armazenada nasegunda tabela de histórico de ramificação 50. Por sua vez,a informação de predição armazenada na primeira tabela dehistórico de ramificação 48 pode ser atualizada como umafunção da segunda informação de predizer ramificação(atualizada). De forma equivalente, pelo menos o retornopara os acertos de cache alvo de ramificação podem serfornecidos para o circuito de predizer ramificação 42, parauso direto na atualização da primeira tabela de históricode ramificação 48.
Outra modalidade do método de predizerramificação de duas tabelas ensinado aqui compreende oinicio dos acesso para as primeira e segunda tabelas dehistórico de ramificação 48 e 50 em resposta aorecolhimento de um endereço de instrução para dentro daseqüência de instrução 18, e a abortagem do acesso àsegunda tabela de histórico de ramificação 50 em resposta àdetecção de que um endereço de instrução é um acerto nacache alvo de ramificação 46. Dessa forma, omicroprocessador 10 inicia os acessos às primeira e segundatabelas de histórico de ramificação 48 e 50, em conjuntocom o recolhimento de uma nova instrução na seqüência deinstrução 18. Se a instrução recém recolhida for detectadacomo um acerto de cache alvo de ramificação, omicroprocessador 10 aborta o acesso à segunda tabela dehistórico de ramificação 50 como desnecessário.
A abortagem desse acesso sob tais circunstânciaspode economizar energia. Por exemplo, os amplificadorese/ou outros circuitos de saida utilizados para enviar osresultados de predição de ramificação a partir da segundatabela de histórico de ramificação 50 não precisam serenergizados. Adicionalmente, a iniciação dos acessos para asegunda tabela de histórico de ramificação 50 de acordo como método acima, mesmo se algum número desses acessos forabortado, garante que os resultados necessários estarãodisponíveis de forma temporal, isso é, o acesso à segundatabela de histórico de ramificação 50 é iniciado cedo naseqüência de instrução 18, de forma que os resultados dapredição da segunda tabela de histórico de ramificação 50para os erros de cache alvo de ramificação estejam prontose disponíveis posteriormente na seqüência de instrução 18.
Essa abordagem permite que a primeira tabela dehistórico de ramificação 48 armazene a informação depredição exclusivamente para as instruções de ramificaçãoque são os acertos de cache alvo de ramificação, e permiteque a segunda tabela de histórico de ramificação 50armazene a informação de predição exclusivamente para asinstruções de ramificação que a cache alvo de ramificaçãoperde. Como tal, o método de atualização de informação depredizer ramificação adotado pelo microprocessador 10 podecompreender a atualização da segunda informação de predizerramificação em resposta à solução das previsões deramificação realizadas para os erros da cache alvo deramificação, e a atualização da primeira informação depredizer ramificação em resposta à solução das previsões deramificação realizadas para os acertos de cache alvo deramificação.
Em outras palavras, o microprocessador 10 podeutilizar o retorno da unidade de execução 22, paradeterminar se as instruções de ramificação foram na verdaderealizadas ou não. O retorno para as instruções deramificação que foram acertos da cache alvo de ramificaçãopode ser utilizado para atualizar a informação de prediçãoarmazenada na primeira tabela de histórico de ramificação48, e o retorno para as instruções de ramificação que foramos erros da cache alvo de ramificação pode ser utilizadopara atualizar a informação de predição armazenada nasegunda tabela de histórico de ramificação 50. A segregaçãoda informação de predição dessa forma aperfeiçoa a precisãode predição do microprocessador 10, pelo menos no sentidode os acertos e erros de cache alvo de ramificação exibiremdiferentes comportamentos de realização/não realização.
A figura 2 fornece um diagrama em bloco funcionalde uma parte do microprocessador 10, onde os elementosfuncionais ilustrados podem ser configurados para realizaros métodos de predizer ramificação de duas tabelasensinados aqui. A partir da ilustração, se observa que oestágio de coleta 32 da seqüência de instrução 18 forneceendereços de instrução para a cache de instrução 14, e paraa lógica de controle de ramificação 44. A cache deinstrução 14 utiliza esses endereços para recolher ainstrução correspondente para o envio para o estágio dedecodificação 36 da seqüência de instrução, enquanto alógica de controle de ramificação 44 compara cada endereçorecolhido com a cache alvo de ramificação 46, para detectaras instruções de ramificação conhecidas, isso é, paraidentificar os endereços de instrução recolhidos quecoincidem com um endereço de instrução armazenado na cachealvo de ramificação 46.
Se a cache alvo de ramificação 46 retornar umaindicação de acerto para a lógica de controle deramificação 44, a lógica de controle de ramificação 44obtém a informação de predição a partir da primeira tabelade histórico de ramificação 48, para determinar se o acertode cache alvo de ramificação deve ser previsto comorealizado ou não. Se o indicador de predição indicar umapredição realizada, a lógica de controle de ramificação 44faz com que o próximo endereço de recolhimento do estágiode recolhimento 32 seja atualizado com o endereço alvo deramificação do acerto de cache de ramificação, que édenotado como "BTA (BTC HIT)" no diagrama, para indicar oEndereço Alvo de Ramificação (BTA) para um acerto de CacheAlvo de Ramificação (BTC).
Os endereços de instrução que são erros de cachealvo de ramificação se propagam seqüencialmente através dosestágios recolhidos 32 e 34, e as instruçõescorrespondentes a esses endereços são fornecidas pela cachede instrução 14 para decodificação do estágio dedecodificação 36. Nesse ponto, as instruções de ramificaçãodecodificadas que foram perdidas na cache alvo deramificação 46 são reconhecidas, e a lógica de controle deramificação 4 4 prevê as instruções de ramificação comorealizadas ou não utilizando a informação de predição dasegunda tabela de histórico de ramificação 50. Se foremprevistas como realizadas, a lógica de controle deramificação 44 fornece o estágio de recolhimento 32 com oendereço alvo de ramificação correspondente, denotado "BTA(BTC MISS)" no diagrama, para indicar a BTA para erro BTC.
A figura 3 ilustra a temporização de ciclo deacesso para uma ou mais modalidades da funcionalidadeacima, onde a primeira tabela de histórico de ramificação48 é configurada para ter uma velocidade de acesso quecoincide com a da cache alvo de ramificação 46. Essacombinação permite que o microprocessador 10 obtenha ainformação de predizer ramificação nos mesmos estágios deseqüência que o microprocessador 10 identifica asinstruções de ramificação com base na detecção dos acertosde cache alvo de ramificação. Como um exemplo, a cache alvode ramificação 46 e a primeira tabela de histórico deramificação 48 ambas podem estar acessíveis em M ciclos daseqüência de instrução 18 (por exemplo, M ciclos de relógiode instrução). A configuração permite que omicroprocessador 10 forneça endereços alvo de ramificaçãopara o estágio de recolhimento 32 depois de M + 1 ciclos,para as instruções de ramificação que são acertos de cachealvo de ramificação.
Adicionalmente, a segunda tabela de histórico deramificação 50 pode ser configurada para ter uma velocidadede acesso que coincide com a da cache de instrução 14, oucom qualquer velocidade adequada para o retardo entre orecolhimento do endereço de instrução e a decodificaçãosubseqüente da instrução correspondente pelo estágio dedecodificação 36. Como um exemplo, a cache de instrução 14e a segunda tabela de histórico de ramificação 50 podem serconfiguradas para serem acessíveis em N ciclos da seqüênciade instrução 19. Essa configuração permite que omicroprocessador 10 forneça os endereços alvo deramificação para o estágio de recolhimento 32 depois de N +1 ciclos, para as instruções de ramificação que são errosde cache alvo de ramificação.
Por meio de um exemplo não limitados, M pode serum ciclo de relógio, e N pode ser dois ciclos de relógio.
Dessa 'forma, o microprocessador 10 obtém as previsões deramificação para os acertos de cache alvo de ramificação emdois ciclos de relógio de instrução, utilizando a primeiratabela de histórico de ramificação 48, que pode serrelativamente pequena em termos de número de elementos depredizer ramificação individual que contém, em comparaçãocom a segunda tabela de histórico de ramificação 50.
Adicionalmente, o microprocessador 10 obtém as previsões deramificação para os acertos de cache alvo de ramificação emtrês ciclos de relógio de instrução, utilizando a segundatabela de histórico de ramificação 50.
A partir do exemplo acima, se observa que pelautilização de uma "mini" tabela de histórico de ramificação(isso é, a primeira tabela de histórico de ramificação 48) ,o microprocessador 10 obtém uma vantagem de desempenho depredição e recolhimento para as instruções de ramificaçãoque são detectadas como acertos de cache alvo deramificação. Ademais, esses ganhos de desempenho não vêm àcusta da manutenção de uma tabela de histórico deramificação principal arbitrariamente grande e(presumivelmente) mais precisa (isso é, a segunda tabela dehistórico de ramificação 50), que pode ser utilizada parapredizer as instruções de ramificação que não são acertosde cache alvo de ramificação, e/ou para eliminar asprevisões iniciais realizadas a partir da mini tabela.
Como tal, os versados na técnica apreciarão que apredição de ramificação de duas tabelas como descrita aquipode ser submetida a muitas variações, tal como em termosda arquitetura do microprocessador, as diferenças detemporização de acesso ao ciclo de instrução relativasentre as mini tabela e a tabela de histórico de ramificaçãoprincipal, caso os acertos de cache alvo de ramificaçãoforem exclusivamente ou inicialmente previstos utilizando-se a mini tabela, a heurística e métodos escolhidos paraatualização da mini tabela e da tabela de histórico deramificação principal, o formato particular da informaçãode predizer ramificação armazenada na mini tabela e natabela principal, os tamanhos relativos da mini tabela e databela principal, etc. Mais particularmente, os versados natécnica deve apreciar que a presente invenção não estálimitada pela discussão acima, ou pelos desenhos em anexo.
Na verdade, a presente invenção está limitada apenas pelasreivindicações a seguir e suas equivalências legais.

Claims (25)

1. Microprocessador compreendendo um circuito depredição configurado para direcionar o recolhimento deinstrução para uma seqüência de instrução domicroprocessador com base nas instruções de ramificação depredição recolhidas na seqüência de instrução comorealizadas ou não, o dito circuito de predizer ramificaçãocompreendendo:uma cache alvo de ramificação configurada paraarmazenar informação alvo de ramificação para as instruçõesde ramificação conhecidas;uma primeira tabela de histórico de ramificaçãoconfigurada para armazenar a primeira informação depredizer ramificação;uma segunda tabela de histórico de ramificaçãopara armazenar a segunda informação de predizerramificação; elógica de controle de ramificação configuradapara predizer as instruções de ramificação como realizadasou não de acordo com a primeira informação de predizerramificação para as instruções de ramificação que sãoacertos de cache alvo de ramificação, e de acordo com asegunda informação de predizer ramificação para asinstruções de ramificação que são erros de cache alvo deramificação.
2. Microprocessador, compreendendo uma seqüênciade instrução que inclui ou é associada com:uma cache de instrução configurada para armazenartemporariamente instruções para o recolhimento na seqüênciade instrução;uma cache alvo de ramificação configurada paraarmazenar a informação alvo de ramificação para asinstruções de ramificação conhecidas;uma primeira tabela de histórico de ramificaçãoconfigurada para armazenar a primeira informação depredizer ramificação;uma segunda tabela de histórico de ramificaçãoconfigurada para armazenar a segunda informação de predizerramificação; ea lógica de controle de ramificação para predizeras instruções de ramificação como realizadas ou nãorealizadas de acordo coma primeira informação de predizerramificação para as instruções de ramificação que sãoacertos de cache alvo de ramificação, de acordo com asegunda informação de predizer ramificação para instruçõesde ramificação que são erros de cache alvo de ramificação.
3. Microprocessador, de acordo com areivindicação 2, no qual a primeira tabela de histórico deramificação é configurada para ter uma velocidade de acessoque coincide com a da cache alvo de ramificação, e onde asegunda tabela de histórico de ramificação é configuradapara ter uma velocidade de acesso que coincide com a dacache de instrução.
4. Microprocessador, de acordo com areivindicação 2, no qual a primeira tabela de histórico deramificação e a cache alvo de ramificação são configuradaspara serem acessíveis em M ciclos de seqüência deinstrução, e onde a segunda tabela de histórico deramificação é configurada para ser acessível em N ciclos deseqüência de instrução, onde M e N são os primeiro esegundo números, com M sendo inferior a N.
5. Microprocessador, de acordo com areivindicação 2, no qual a primeira tabela de histórico deramificação compreende um número menor de elementos deprecisão de ramificação do que a segunda tabela dehistórico de ramificação, de forma que o acesso a umelemento de predizer ramificação na primeira tabela dehistórico de ramificação leve menos tempo do que o acesso aum elemento de predizer ramificação na segunda tabela dehistórico de ramificação.
6. Microprocessador, de acordo com areivindicação 2, no qual o microprocessador é configuradopara realizar as previsões iniciais para os acertos decache alvo de ramificação de acordo com a primeirainformação de predizer ramificação, e configurado pararealizar as previsões subseqüentes correspondentes para osacertos de cache alvo de ramificação de acordo com asegunda informação de predizer ramificação.
7. Microprocessador, de acordo com areivindicação 6, no qual o microprocessador é configuradopara direcionar o recolhimento de instrução de acordo comas previsões iniciais, e redirecionar de forma condicionalo recolhimento de instrução de acordo com as previsõessubseqüentes correspondentes.
8. Microprocessador, de acordo com areivindicação 7, no qual o microprocessador é configuradopara redirecionar de forma condicional o recolhimento deinstrução, para uma predição inicial determinada, pararedirecionar o recolhimento de instrução se a prediçãosubseqüente correspondente não concordar com a prediçãoinicial determinada.
9. Microprocessador, de acordo com areivindicação 2, no qual o microprocessador é configuradopara atualizar a segunda informação de predizer ramificaçãoem resposta à solução das previsões de ramificaçãorealizadas para os acertos e erros de cache alvo deramificação, de forma que a segunda informação de predizerramificação reflita os históricos de ramificação para ambosos acertos e erros de cache alvo de ramificação.
10. Microprocessador, de acordo com areivindicação 9, no qual o microprocessador é configuradopara atualizar a primeira informação de predizerramificação como uma função da segunda informação depredizer ramificação.
11. Microprocessador, de acordo com areivindicação 2, no qual o microprocessador é configuradopara atualizar a segunda informação de predizer ramificaçãoem resposta à solução das previsões de ramificaçãorealizadas para os erros de cache alvo de ramificação, econfigurado para atualizar a primeira informação depredizer ramificação em resposta à solução das previsões deramificação realizadas para os acertos de cache alvo deramificação.
12. Microprocessador, de acordo com areivindicação 2, no qual o microprocessador é configuradopara iniciar os acessos às primeira e segunda tabelas dehistórico de ramificação em resposta ao recolhimento de umendereço de instrução na seqüência de instrução, econfigurado adicionalmente para abortar o acesso à segundatabela de histórico de ramificação em resposta à detecçãode que o endereço de instrução é um acerto na cache alvo deramificação, de forma que um acesso total da segunda tabelade histórico de ramificação seja evitado para instruções deramificação que são acertos de cache alvo de ramificação.
13. Microprocessador, de acordo com areivindicação 2, no qual a cache alvo de ramificaçãocompreende uma dentre uma cache de endereço alvo deramificação ou uma cache de instrução alvo de ramificação.
14. Método de predizer ramificação em ummicroprocessador:mantendo uma cache alvo de ramificação queidentifica as instruções de ramificação conhecidas;determinando se as instruções de ramificaçãorecolhidas em uma seqüência de instrução domicroprocessador são acertos de cache alvo de ramificaçãoou erros de cache alvo de ramificação; eprevendo instruções de ramificação que sãoacertos de cache alvo de ramificação como realizadas ou nãode acordo com a primeira informação de predizer ramificaçãoarmazenada em uma primeira tabela de histórico deramificação, e prevendo as instruções de ramificação quesão erros de cache alvo de ramificação como realizadas ounão de acordo com a segunda informação de predizerramificação armazenada em uma segunda tabela de históricode ramificação.
15. Método, de acordo com a reivindicação 14,compreendendo adicionalmente a configuração da primeiratabela de histórico de ramificação para ter uma velocidadede acesso que coincide com a da cache alvo de ramificação,e configurando a segunda tabela de histórico de ramificaçãopara ter uma velocidade de acesso que coincide com a de umacache de instrução a partir da qual as instruções sãorecolhidas para dentro da seqüência de instrução.
16. Método, de acordo com a reivindicação 14,compreendendo adicionalmente a configuração da primeiratabela de histórico de ramificação e cache alvo deramificação para ser acessível em M ciclos da seqüência deinstrução, e configurando a segunda tabela de histórico deramificação para ser acessível em N ciclos da seqüência deinstrução, onde M e N são primeiro e segundo números, com Msendo inferior a N.
17. Método, de acordo com a reivindicação 14,compreendendo adicionalmente a configuração da primeiratabela de histórico de ramificação para armazenar um númeromenor de elementos de predizer ramificação do que a segundatabela de histórico de ramificação de forma que o acesso aum elemento de predizer ramificação na primeira tabela dehistórico de ramificação leve menos tempo do que o acesso aum elemento de predição na segunda tabela de histórico deramificação.
18. Método, de acordo com a reivindicação 14, noqual a predição das instruções de ramificação que sãoacertos de cache alvo de ramificação como realizadas ou nãode acordo com a primeira informação de predizer ramificaçãoarmazenada em uma primeira tabela de histórico deramificação compreende a realização de previsões iniciaispara os acertos de cache alvo de ramificação de acordo coma primeira informação de predizer ramificação, e realizandoas previsões subseqüentes correspondentes para os acertosde cache alvo de ramificação de acordo com a segundainformação de predizer ramificação.
19. Método, de acordo com a reivindicação 18,compreendendo adicionalmente o direcionamento dorecolhimento de instrução de acordo com as previsõesiniciais, e o redirecionamento condicional do recolhimentode instrução de acordo com as previsões subseqüentescorrespondentes.
20. Método, de acordo com a reivindicação 19, noqual o redirecionamento condicional do recolhimento deinstrução de acordo com as previsões subseqüentescorrespondentes compreende, para uma determinada prediçãoinicial, o redirecionamento do recolhimento de instrução sea predição subseqüente correspondente discordar da prediçãoinicial determinada.
21. Método, de acordo com a reivindicação 14,compreendendo adicionalmente a atualização da segundainformação de predizer ramificação em resposta à soluçãodas previsões de ramificação realizadas para os acertos eerros de cache alvo de ramificação, de forma que a segundainformação de predizer ramificação reflita os históricos deramificação para ambos os acertos e os erros de cache alvode ramificação.
22. Método, de acordo com a reivindicação 21,compreendendo adicionalmente a atualização da primeirainformação de predizer ramificação como uma função dasegunda informação de predizer ramificação.
23. Método, de acordo com a reivindicação 14,compreendendo adicionalmente a atualização da segundainformação de predizer ramificação em resposta à soluçãodas previsões de ramificação realizadas para os erros decache alvo de ramificação, e atualização da primeirainformação de predizer ramificação em resposta à soluçãodas previsões de ramificação realizadas para os acertos decache alvo de ramificação.
24. Método, de acordo com a reivindicação 14,compreendendo adicionalmente a iniciação de acessos àsprimeira e segunda tabelas de histórico de ramificação emresposta ao recolhimento de um endereço de instrução naseqüência de instrução, e abortagem do acesso à segundatabela de histórico de ramificação em resposta à detecçãode que o endereço de instrução é um acerto na cache alvo deramificação, de forma que um acesso total da segunda tabelade histórico de ramificação seja evitado para as instruçõesde ramificação que são acertos de cache alvo deramificação.
25. Método, de acordo com a reivindicação 14,compreendendo adicionalmente a configuração da cache alvode ramificação como uma dentre uma cache de endereço alvode ramificação e uma cache de instrução alvo deramificação.
BRPI0610926-8A 2005-06-02 2006-05-24 método e equipamento para predizer instruções de ramificação BRPI0610926A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/144,206 US7278012B2 (en) 2005-06-02 2005-06-02 Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US11/144,206 2005-06-02
PCT/US2006/020440 WO2006130466A2 (en) 2005-06-02 2006-05-24 A method and apparatus for predicting branch instructions

Publications (1)

Publication Number Publication Date
BRPI0610926A2 true BRPI0610926A2 (pt) 2010-08-03

Family

ID=37482175

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0610926-8A BRPI0610926A2 (pt) 2005-06-02 2006-05-24 método e equipamento para predizer instruções de ramificação

Country Status (9)

Country Link
US (1) US7278012B2 (pt)
EP (1) EP1889152B1 (pt)
JP (1) JP4950186B2 (pt)
KR (1) KR100974384B1 (pt)
CN (1) CN101228506B (pt)
BR (1) BRPI0610926A2 (pt)
IL (1) IL187609A0 (pt)
TW (1) TWI317091B (pt)
WO (1) WO2006130466A2 (pt)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070081696A (ko) * 2006-02-13 2007-08-17 삼성전자주식회사 분기 예측 정보를 저장하는 분기 타겟 버퍼 및 그것을포함한 분기 예측 회로
US7984279B2 (en) 2006-11-03 2011-07-19 Qualcomm Incorporated System and method for using a working global history register
US8639913B2 (en) * 2008-05-21 2014-01-28 Qualcomm Incorporated Multi-mode register file for use in branch prediction
KR101579589B1 (ko) * 2009-02-12 2015-12-22 삼성전자 주식회사 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법
US20110047357A1 (en) * 2009-08-19 2011-02-24 Qualcomm Incorporated Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions
US8370671B2 (en) * 2009-12-02 2013-02-05 International Business Machines Corporation Saving power by powering down an instruction fetch array based on capacity history of instruction buffer
JP5656074B2 (ja) * 2011-02-21 2015-01-21 日本電気株式会社 分岐予測装置、プロセッサ及び分岐予測方法
US10007523B2 (en) 2011-05-02 2018-06-26 International Business Machines Corporation Predicting cache misses using data access behavior and instruction address
US20140195790A1 (en) * 2011-12-28 2014-07-10 Matthew C. Merten Processor with second jump execution unit for branch misprediction
US9280351B2 (en) 2012-06-15 2016-03-08 International Business Machines Corporation Second-level branch target buffer bulk transfer filtering
US9430241B2 (en) 2012-06-15 2016-08-30 International Business Machines Corporation Semi-exclusive second-level branch target buffer
US9298465B2 (en) 2012-06-15 2016-03-29 International Business Machines Corporation Asynchronous lookahead hierarchical branch prediction
US10127044B2 (en) * 2013-10-25 2018-11-13 Advanced Micro Devices, Inc. Bandwidth increase in branch prediction unit and level 1 instruction cache
US9563430B2 (en) 2014-03-19 2017-02-07 International Business Machines Corporation Dynamic thread sharing in branch prediction structures
US20150268961A1 (en) * 2014-03-21 2015-09-24 Samsung Electronics Co., Ltd. Decoupling l2 btb from l2 cache to accelerate search for miss after miss
US20160239309A1 (en) * 2015-02-12 2016-08-18 International Business Machines Corporation Branch target buffer column predictor
US20170083333A1 (en) * 2015-09-21 2017-03-23 Qualcomm Incorporated Branch target instruction cache (btic) to store a conditional branch instruction
US9507598B1 (en) * 2015-12-15 2016-11-29 International Business Machines Corporation Auxiliary branch prediction with usefulness tracking
US10175982B1 (en) * 2016-06-16 2019-01-08 Apple Inc. Storing taken branch information
US10684951B2 (en) 2017-08-04 2020-06-16 International Business Machines Corporation Minimizing cache latencies using set predictors
US10713054B2 (en) * 2018-07-09 2020-07-14 Advanced Micro Devices, Inc. Multiple-table branch target buffer
US11099852B2 (en) * 2018-10-25 2021-08-24 Arm Limitied Apparatus and method for maintaining prediction performance metrics for prediction components for each of a plurality of execution regions and implementing a prediction adjustment action based thereon
US20210149676A1 (en) * 2019-11-14 2021-05-20 Higon Austin R&D Center Corporation Branch Prediction Method, Branch Prediction Unit and Processor Core
US11467966B2 (en) * 2020-09-02 2022-10-11 Shenzhen GOODIX Technology Co., Ltd. Cache memory having a programmable number of ways
US11783050B2 (en) * 2020-11-13 2023-10-10 Centaur Technology, Inc. Spectre fixes with predictor mode tag

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
JPH0820950B2 (ja) * 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
JPH11143597A (ja) 1997-11-05 1999-05-28 Kawasaki Steel Corp マイクロプロセッサ装置
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6550004B1 (en) * 1999-11-05 2003-04-15 Ip-First, Llc Hybrid branch predictor with improved selector table update mechanism
US7165169B2 (en) * 2001-05-04 2007-01-16 Ip-First, Llc Speculative branch target address cache with selective override by secondary predictor based on branch instruction type
US7024545B1 (en) * 2001-07-24 2006-04-04 Advanced Micro Devices, Inc. Hybrid branch prediction device with two levels of branch prediction cache
US7493480B2 (en) * 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information

Also Published As

Publication number Publication date
CN101228506B (zh) 2010-05-19
IL187609A0 (en) 2008-03-20
EP1889152A2 (en) 2008-02-20
US7278012B2 (en) 2007-10-02
CN101228506A (zh) 2008-07-23
US20060277397A1 (en) 2006-12-07
JP2008542917A (ja) 2008-11-27
WO2006130466A3 (en) 2007-11-22
KR20080023723A (ko) 2008-03-14
TWI317091B (en) 2009-11-11
WO2006130466A2 (en) 2006-12-07
EP1889152B1 (en) 2018-10-10
EP1889152A4 (en) 2008-10-15
TW200713035A (en) 2007-04-01
KR100974384B1 (ko) 2010-08-05
JP4950186B2 (ja) 2012-06-13

Similar Documents

Publication Publication Date Title
BRPI0610926A2 (pt) método e equipamento para predizer instruções de ramificação
US9747103B2 (en) Auxiliary branch prediction with usefulness tracking
US9280351B2 (en) Second-level branch target buffer bulk transfer filtering
US9378020B2 (en) Asynchronous lookahead hierarchical branch prediction
ES2386478T3 (es) Procedimiento y aparato para la gestión proactiva de memoria intermedia de direcciones de bifurcación de destino
US7461238B2 (en) Simple load and store disambiguation and scheduling at predecode
US9411598B2 (en) Semi-exclusive second-level branch target buffer
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
US9250912B2 (en) Fast index tree for accelerated branch prediction
TWI651648B (zh) 用於使用串流長度預測之分支預測器搜尋資格之電腦程式產品、電腦實施方法及系統
JP2009540411A (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
US8601240B2 (en) Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
KR20080015508A (ko) 마이크로프로세서의 명령 파이프라인에서 명령 제거를관리하는 방법 및 장치
JP5423156B2 (ja) 情報処理装置及び分岐予測方法
ES2676303T3 (es) Procedimientos y aparatos para reducir las búsquedas en una memoria caché de dirección de destino de saltos
KR102635965B1 (ko) 마이크로 프로세서의 프론트 엔드 및 이를 이용한 컴퓨터 구현 방법
US9250909B2 (en) Fast index tree for accelerated branch prediction
US8898427B2 (en) Target buffer address region tracking
US11182165B2 (en) Skip-over offset branch prediction

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B15K Others concerning applications: alteration of classification

Ipc: G06F 9/38 (2006.01)

B09B Patent application refused [chapter 9.2 patent gazette]
B12B Appeal against refusal [chapter 12.2 patent gazette]
B08F Application dismissed because of non-payment of annual fees [chapter 8.6 patent gazette]

Free format text: REFERENTE A 14A 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: REFERENTE AO DESPACHO 8.6 PUBLICADO NA RPI 2568 DE 2020-03-24