BRPI0614013A2 - cache de endereços alvo de ramificação que armazena dois ou mais endereços alvo de ramificação por ìndice - Google Patents

cache de endereços alvo de ramificação que armazena dois ou mais endereços alvo de ramificação por ìndice Download PDF

Info

Publication number
BRPI0614013A2
BRPI0614013A2 BRPI0614013-0A BRPI0614013A BRPI0614013A2 BR PI0614013 A2 BRPI0614013 A2 BR PI0614013A2 BR PI0614013 A BRPI0614013 A BR PI0614013A BR PI0614013 A2 BRPI0614013 A2 BR PI0614013A2
Authority
BR
Brazil
Prior art keywords
branch
address
instruction
cache
offset
Prior art date
Application number
BRPI0614013-0A
Other languages
English (en)
Inventor
Rodney Wayne Smith
James Norris Dieffenderfer
Jeffrey Todd Bridges
Thomas Andrew Sartorius
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 BRPI0614013A2 publication Critical patent/BRPI0614013A2/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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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
    • 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/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

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

CACHE DE ENDEREçOS ALVO DE RAMIFICAçA0 QUE ARMAZENA DOIS OU MAIS ENDEREçOS ALVO DE RAMIFICAçAO POR ìNDICE Um cache de Endereços Alvo de ramificação (ETAC) armazena pelo menos dois endereços alvo de ramificação em cada linha de cache. O BTAC é indexado por um endereço de instrução de ramificação truncado. Um deslocamento obtido de uma tabela de deslocamentos de predição de ramificação determina qual dos endereços alvo de ramificação é tomado como o endereço alvo de ramificação predito. A tabela de deslocamentos pode ser indexada de várias maneiras, inclusive por um histórico de ramificações, por um hash de um histórico de ramificações e parte do endereço de instrução de ramificação, por um valor de compartilhamento g, de maneira aleatória, em uma ordem de rodízio ou por outros métodos.

Description

"CACHE DE ENDEREÇOS ALVO DE RAMIFICAÇÃO QUE ARMAZENA DOISOU MAIS ENDEREÇOS ALVO DE RAMIFICAÇÃO POR ÍNDICE"
FUNDAMENTOS
A presente invenção refere-se, de maneira geral,ao campo dos processadores e, em particular, a um cache deendereços alvo de ramificação que armazena dois ou maisendereços alvo de ramificação por índice.
Os microprocessadores executam tarefas em umaampla variedade de aplicações. O aperfeiçoamento dodesempenho dos processadores é um objetivo projetadosempiterno, de modo a se impulsionar o aperfeiçoamento dosprodutos pela obtenção de um funcionamento mais rápido e/ouuma maior funcionalidade através de um softwareaperfeiçoado. Em muitas aplicações embutidas, tais comodispositivos eletrônicos portáteis, a conservação daenergia e a redução do tamanho dos chips são objetivoscomuns no desenho e implementação de processadores.
Muitos processadores modernos utilizam umaarquitetura encadeada, na qual instruções seqüenciais, cadauma tendo várias etapas de execução, se superpõem naexecução. Esta capacidade de explorar o paralelismo entreinstruções em um fluxo de instruções seqüenciais podecontribuir de maneira significativa para um desempenhoaperfeiçoado dos processadores. Em determinadas condições,alguns processadores podem completar uma instrução apóscada ciclo de execução.
Tais condições ideais quase nunca se realizam naprática, devido a diversos fatores, entre os quais seincluem dependências entre as instruções (riscos para osdados), dependências de controle, tais como ramificações(riscos de controle), conflitos de alocação de recursosentre os processadores (riscos estruturais), interrupções,falhas de cache e semelhantes. Por conseguinte, um objetivocomum no desenho de processadores é o de evitar estesriscos, e manter o encadeamento "cheio".
Os programas existentes incluem comumenteinstruções de ramificação condicional, cujo comportamentode ramificação real pode não ser conhecido até que ainstrução seja bem avaliada no encadeamento. Esta incertezade ramificação pode gerar um risco para o controle que fazo encadeamento estacar, uma vez que o processador não sabequais instruções ir buscar em seguida à instrução deramificação, e não saberá até que a instrução deramificação condicional seja avaliada. É comum que osprocessadores modernos utilizem diversas formas de prediçãode ramificação, pelas quais o comportamento de ramificaçãodas instruções de ramificação condicional é predito logo noencadeamento, e o processador, de maneira especulativa, vaibuscar e executa as instruções, com base na predição deramificação, mantendo assim o encadeamento cheio. Se apredição estiver correta, o desempenho é melhorado aomáximo e o consumo de energia reduzido ao mínimo. Quando ainstrução de ramificação é realimente avaliada, se aramificação tiver sido predito incorretamente, asinstruções buscadas especulativamente devem ser eliminadasdo encadeamento, e novas instruções buscadas a partir doendereço alvo de ramificação correto. As ramificaçõespreditas incorretamente têm um impacto adverso sobre odesempenho dos processadores e o consumo de energia.
Há dois componentes em uma predição deramificação condicional: uma avaliação das condições e umendereço alvo de ramificação. A avaliação das condições éuma decisão binária: a ramificação ou é tomada, fazendo comque a execução pule para uma seqüência de código diferente,ou não é tomada, e neste caso o processador executa ainstrução seqüencial seguinte após a instrução deramificação. 0 endereço alvo de ramificação é o endereço dainstrução seguinte se a ramificação for avaliada comotomada. Algumas instruções de ramificação incluem oendereço alvo de ramificação no código operacional deinstrução, ou incluem um deslocamento pelo qual o endereçoalvo de ramificação pode ser facilmente calculado. Paraoutras instruções de ramificação, o endereço alvo deramificação deve ser predito (se a avaliação das condiçõesfor predita como tomada).
Uma técnica conhecida de predição de endereçoalvo de ramificação é um Cache de Endereços Alvos deRamificação (BTAC) . Um BTAC é comumente um cachecompletamente associativo, indexado por um endereço deinstrução de ramificação (ΒΙΑ), com cada localização dedados (ou "linha" de cache) contendo um único endereço alvode ramificação (BTA). Quando uma instrução de ramificação éavaliada no encadeamento como tomada e seu BTA real écalculado, o BIA e o BTA são gravados no BTAC (durante umestágio de encadeamento de retro-gravação, por exemplo).
Quando se buscam novas instruções, o BTAC é acessado emparalelo com um cache de instruções (ou cache-I). Se oendereço de instrução chega ao BTAC, o processador sabe quea instrução é uma instrução de ramificação (isto é anteriorà decodificação da instrução buscada no cache-I), e éfornecido um BTA predito, que é o BTA real da execuçãoanterior da instrução de ramificação. Se o circuito depredição de ramificação predisser a ramificação comotomada, a busca da instrução começa no BTA predito. Se aramificação for predita como não tomada, a busca dainstrução continua seqüencialmente. Note-se que o termoBTAC é também utilizado na técnica para denotar um cacheque associa um contador de saturação a um ΒΙΑ, obtendo-seassim apenas uma predição de avaliação de condições (istoé, ramificação tomada ou ramificação não tomada).
Processadores de alto desempenho podem ir buscarmais de uma instrução de uma vez do cache-I. Por exemplo,uma linha de cache inteira, que pode compreender, porexemplo, quatro instruções, pode ser buscada em um bufferde buscas de instrução, que as alimenta seqüencialmentepara dentro do encadeamento. A utilização do BTAC parapredição de ramificação em todas as quatro instruçõesexigiria quatro portas de leitura no BTAC. Isto exigiria umhardware grande, complexo, e aumentaria consideravelmente oconsumo de energia.
SUMÁRIO
Um Cache de Endereços Alvo de ramificação (BTAC)armazena pelo menos dois endereços alvo de ramificação emcada linha de cache. O BTAC é indexado por um endereço deinstrução de ramificação truncado. Um deslocamento obtidode uma tabela de deslocamentos de predição de ramificaçãodetermina qual dos endereços alvo de ramificação é tomadocomo o endereço alvo de ramificação predita. A tabela dedeslocamentos pode ser indexada de várias maneiras,inclusive por um histórico de ramificações, por um hash deum histórico de ramificações e parte do endereço deinstruções de ramificação, por um valor de compartilhamentog, aleatoriamente, em uma ordem de rodízio ou outrosmétodos.
Uma modalidade refere-se a um método parapredizer o endereço alvo de ramificação para uma instruçãode ramificação. Pelo menos parte de um endereço deinstrução é armazenada. Pelo menos dois endereços alvo deramificação são associados ao endereço de instruçãoarmazenado. Quando da busca de uma instrução deramificação, um dos endereços alvo de ramificação éselecionado como o endereço alvo predito para a instruçãode ramificação.
Uma outra modalidade refere-se a um método parapredizer endereços alvo de ramificação. Um bloco de ηinstruções seqüenciais é buscado, começando em um primeiroendereço de instrução. Um endereço alvo de ramificação paracada instrução de ramificação no bloco que é avaliado comotomado é armazenado em um cache, de modo que até ηendereços alvo de ramificação são indexados por parte doprimeiro endereço de instrução.
Uma outra modalidade refere-se a um processador.O processador inclui um cache de endereços alvo deramificação indexado por parte de um endereço de instrução,e operante para armazenar dois ou mais endereços alvo deramificação por linha de cache. 0 processador inclui tambémuma tabela de deslocamentos de predição de ramificaçãooperante para armazenar uma série de deslocamentos. 0processador inclui adicionalmente um encadeamento deexecução de instruções operante para indexar o cache com umendereço de instrução e selecionar um endereço alvo deramificação a partir da linha de cache indexada em respostaa um deslocamento obtido da tabela de deslocamentos.
BREVE DESCRIÇÃO DOS DESENHOS
A Figura 1 é um diagrama de blocos funcionais deum processador.
A Figura 2 é um diagrama de blocos funcionais deum Cache de Endereços Alvo de ramificação em seus circuitosconcomitantes.
DESCRIÇÃO DETALHADA
A Figura 1 mostra um diagrama de blocosfuncionais de um processador 10. O processador 10 executainstruções em um encadeamento de execução de instruções 12de acordo com uma lógica de controle 14. Em algumasmodalidades, o encadeamento 12 pode ser um desenho super-escalar, com vários encadeamentos paralelos. 0 encadeamento12 inclui diversos registradores ou engates 16, organizadosem estágios de encadeamento, e uma ou mais Unidades deLógica Aritmética (ALU) 18. Um arquivo de Registrador paraFins Gerais (GPR) 20 apresenta registradores que constituemo topo da hierarquia da memória.
0 encadeamento 12 vai buscar instruções de umcache de instruções (cache-I) 22, com tradução de endereçosde memória e permissões gerenciadas por um Armazenador deConsultas à Parte de Tradução no lado das Instruções (ITLB)24. Em paralelo, o encadeamento 12 fornece o endereço deinstrução a um Cache de Endereços Alvo de ramificação(BTAC) 25. Se o endereço de instruções chegar ao BTAC 25, oBTAC 25 pode fornecer um endereço alvo de ramificação aocache-I 22, de modo a começar a buscar instruções de umendereço alvo de ramificação predita. Conforme descritomais completamente a seguir, quais de vários endereços alvode ramificação preditas potenciais são fornecidos pelo BTAC25 é determinado por um deslocamento de uma Tabela deDeslocamentos de Predição de Ramificação (BPOT) 23. Aentrada na BPOT 23, em uma ou mais modalidades, podecompreender uma função de hash 21, que inclui um históricode ramificações, o endereço de instrução de ramificação eoutras entradas de controle. 0 histórico de ramificaçõespode ser fornecido por um Registrador de Históricos deRamificações (BHR) 26, que armazena resultados de avaliaçãode condições de ramificação (tomadas ou não tomadas, porexemplo) para uma série de instruções de ramificação.
Os dados são acessados de um cache de dados(cache-D), com tradução de endereços de memória epermissões gerenciadas por um Armazenador de Consultas àParte de Tradução (TLB) 28. Em diversas modalidades, o ITLBpode compreender uma cópia de parte do TLB.Alternativamente, o ITLB e o TLB podem ser integrados. Demaneira semelhante, em diversas modalidades do processador10, o cache-I 22 e o cache-D 26 podem ser integrados, ouunificados. Falhas no cache-I e/ou no cache-D 26 provocamum acesso à memória principal (não embutida) 32, sob ocontrole de uma interface 30 com a memória.
O processador 10 pode incluir uma interface deEntrada/Saida (I/O) 34, que controla o acesso a diversosdispositivos periféricos 36. Os versados na técnicareconhecerão que são possíveis numerosas variações doprocessador 10. Por exemplo, o processador 10 pode incluirum cache de segundo nível (L2) para um ou o outro ou paraambos os caches IeD 22, 26. Além disto, um ou mais dosblocos funcionais mostrados no processador 10 podem seromitidos de uma modalidade específica.
Instruções de ramificação condicional são comunsna maioria dos códigos - por algumas estimativas, tantasquantas uma em cinco instruções podem ser uma ramificação.Entretanto, as instruções de ramificação tendem a não serdistribuídas de maneira uniforme. Em vez disso, elas sãofreqüentemente agrupadas para implementar construtoslógicos, tais como percursos de decisão se-então-casocontrário, ramificação paralelo ("caso") e semelhantes. Porexemplo, o fragmento de código seguinte compara o conteúdode dois registradores e desvia para o alvo P ou Q com baseno resultado da comparação:
CMP r7, r8 comparar o conteúdo de GPR 7 e GPR8 eestabelecer um código ou indicador decondição para refletir o resultado dacomparação
BEQ P desviar se igual ao rótulo de código PBNE Q desviar se não igual ao rótulo de código QUma vez que os processadores de alto desempenho10 vão buscar freqüentemente várias instruções de uma vezdo cache-I 22, e por causa da tendência das instruções deramificação a se agruparem dentro do código, se uma dadabusca de instrução inclui uma instrução de ramificação, háuma grande probabilidade de que ela inclua tambéminstruções de ramificação adicionais. De acordo com uma oumais modalidades, vários endereços alvo de ramificação(BTA) são armazenados em um Cache de Endereços Alvo deramificação (BTAC) 25, associados a um único endereço deinstrução. Quando de uma busca de instrução que chega aoBTAC 25, um dos BTAs é selecionado por um deslocamentoapresentado pela Tabela de Deslocamentos de Predição deRamificação (BPOT) 23, que pode ser indexada de diversasmaneiras.
A Figura 2 mostra um diagrama de blocosfuncionais de um BTAC 25 e uma BPOT 23, de acordo comdiversas modalidades. Cada entrada no BTAC 25 inclui umíndice ou campo de endereços de instrução 40. Cada entradainclui também uma linha de cache 42, que compreende dois oumais campos BTA (a Figura 2 mostra quatro, denotados BTAO -bta3) . Quando um endereço de instrução que é buscado docache-I 22 chega ao BTAC 25, um dos vários campos BTA dalinha de cache 42 é selecionado por um deslocamento,mostrado funcionalmente na Figura 2 como um multiplexador44. Note-se que, em diversas implementações, a função deseleção pode ser interna ao BTAC 25, ou externa, conformemostrado pelo multiplexador 44. 0 deslocamento é fornecidopor uma BPOT 23. A BPOT 23 pode armazenar um indicador dequal campo BTA da linha de cache 42 contém o BTA que foitomado por último em um conjunto específico decircunstâncias, conforme descrito mais completamente aseguir.Em particular, o estado do BTAC 25 mostrado naFigura 2 pode resultar de diversas iterações do códigoexemplar seguinte (onde A-C são endereços de instruçãotruncados e T-Z são endereços alvo de ramificação):
<table>table see original document page 10</column></row><table>
O código é logicamente dividido em η blocos deinstrução (no exemplo mostrado, n=4) truncando-se um oumais LSBs do endereço de instrução. Se qualquer instruçãode ramificação em um bloco é avaliada como tomada, umaentrada do BTAC 25 é gravada, armazenando o endereço deinstrução truncado no campo de índice 4 0 e o BTA dainstrução de ramificação "tomada" no campo de BTAcorrespondente da linha de cache 42. Por exemplo, comreferência à Figura 2, em diversos momentos o bloco dequatro instruções que tem o endereço truncado A foiexecutado. Cada ramificação foi avaliada como tomado pelomenos uma vez, e os respectivos BTAs efetivos foramgravados na linha de cache 42, utilizando-se os LSBs doendereço de instrução para selecionar o campo BTAn (BTAO eBTA2, por exemplo). Uma vez que as instruçõescorrespondentes aos campos BTAl e BTA3 não são instruçõesde ramificação, nenhum dado é armazenado nesses campos dalinha de cache 42 (um bit "válido" associado a estes campospode ser 0, por exemplo). No momento em que cada respectivoBTA é gravado no BTAC 25 (como, por exemplo, em um estágiode encadeamento de retro-gravação da instrução deramificação correspondente que foi avaliada como tomada), aBPOT 23 é atualizada de modo a armazenar um deslocamentoque indica o campo BTA relevante da linha de cache 42.Neste exemplo, um valor de 0 foi armazenado quando aramificação BEQ Z foi executado, e um valor de 2 foiarmazenado quando a ramificação BNE Y foi executada. Estesvalores de deslocamento podem ser armazenados em posiçõesdentro da BPOT 23 determinadas pela condição do processadorno momento, conforme descrito mais completamente a seguir.
De maneira semelhante, o bloco de quatroinstruções que partilham o endereço de instrução truncadoB - cada instrução neste caso sendo uma instrução deramificação - foi também executado numerosas vezes. Cadaramificação foi avaliada como tomada pelo menos uma vez, eseu BTA efetivo mais recente gravado no campo BTAcorrespondente da linha de cache 42 indexada pelo endereçotruncado B. Todos os quatro campos BTA da linha de cache 42são válidos, e cada um armazena um BTA. As entradas na BPOT23 foram atualizadas de maneira correspondente para indicaro campo BTA relevante do BTAC 25. Como outro exemplo, aFigura 2 mostra o endereço truncado Ceo BTA T armazenadosno BTAC 25, que corresponde à instrução BNE T no bloco C docódigo exemplar. Note-se que este bloco de η instruções nãocomeça com uma instrução de ramificação.Como estes exemplos demonstram, de um a η BTAspodem ser armazenados no BTA 25, indexado por um únicoendereço de instrução truncado. Quando de uma busca deinstrução subseqüente, ao chegar ao BTAC 25, um dos até ηBTAs deve ser selecionado como o BTA predito. De acordo comdiversas modalidades, o BPOT 23 mantém uma tabela dedeslocamentos que selecionam um dos até η BTAs para umadada linha de cache 42. Um deslocamento é gravado na BPOT23 ao mesmo tempo que um BTA é gravado no BTAC 25. Aposição dentro da BPOT 23 na qual um deslocamento é gravadopode depender da condição ou estado atual e/ou passadorecente do processador no momento em que o deslocamento égravado, e é determinada pelo circuito lógico 21 e suasentradas. 0 circuito lógico 21 e suas entradas podemassumir várias formas.
Em uma modalidade, o processador mantém umRegistrador de Históricos de Ramificação (BHR) 26. 0 BHR26, sob uma forma simples, pode compreender um registradorde ramificações. 0 BHR armazena a avaliação de condições deinstruções de ramificação condicional à medida que sãoavaliadas no encadeamento 12. Ou seja, o BHR 26 armazenaquer as instruções de ramificação sejam tomadas (T) ou nãotomadas (N) . A largura de bit do BHR 26 determina aprofundidade temporal do histórico de avaliações deramificação mantida.
De acordo com uma modalidade, a BPOT 23 édiretamente indexada por pelo menos parte do BHR 26 paraselecionar um deslocamento. Ou seja, nesta modalidade,apenas o BHR 26 é uma entrada para o circuito lógico 21,que é meramente um circuito de "passagem". Por exemplo, nomomento em que a instrução de ramificação BEQ no bloco Afoi avaliada como efetivamente tomada e o BTA efetivo de Zfoi gerado, o BHR 26 continha o valor (pelo menos nasposições de bit LSB) de NNN (isto é, as três ramificaçõescondicionais anteriores tinham todos sido avaliados como"não tomadas"). Neste caso, um 0, que corresponde ao campoBTAO da linha de cachê 42 indexada pelo endereço deinstrução truncado A, foi gravado na posição correspondentena BPOT 23 (na localização de topo no exemplo mostrado naFigura 2). De maneira semelhante, quando a instrução deramificação BNE foi executada, o BHR 26 continha o valorNNT, e um 2 foi gravado na segunda posição da BPOT 23 (quecorresponde ao BTA Y gravado no campo BTA2 da linha decache 42 indexada pelo endereço de instrução truncado A).
Quando a instrução BEQ no bloco A é buscada emseguida, ela chegará ao BTAC 25. Se o estado do BHR 26nesse momento for NNN, o deslocamento 0 será fornecido pelaBPOT 23 e o conteúdo do campo BTAO da linha de cache 42 -que é BTA Z - é fornecido como o BTA predito.
Alternativamente, se o BHR 26 no momento da busca for NNT,então o BPOT 23 fornecerá um deslocamento de 2, e oconteúdo do BTA2, ou Y, será o BTA predito. Este últimocaso é um exemplo de desalinhamento, em que um BTAincorreto é predito para uma instrução de ramificaçãoquando acontece de o histórico de ramificação mais recentecoincidir com esse existente quando o BTA para umainstrução de ramificação diferente foi gravada.
Em outra modalidade, o circuito lógico 21 podecompreender uma função de hash que combina pelo menos parteda saida do BHR 26 com pelo menos parte do endereço deinstrução, de modo a impedir ou reduzir o desalinhamento.
Isto fará aumentar o tamanho da BPOT 23. Em uma modalidade,os bits do endereço de instrução podem ser concatenados coma saida do BHR 26, gerando um indice de BPOT 23 análogo aopreditor de seleção g conhecido na técnica, relacionado coma predição de avaliação das condições de ramificação. Emoutra modalidade, os bits do endereço de instrução podemzerados com a saida do BHR 26, do que resulta um índice deBPOT 23 do tipo de compartilhamento g.
Em uma ou mais modalidades, uma ou mais entradasno circuito lógico 21 podem não estar relacionadas com ohistórico de ramificações ou com o endereço de instrução.Por exemplo, a BPOT 23 pode ser indexada de maneiraincrementai, gerando um índice de rodízio.
Alternativamente, o índice pode ser aleatório. Um ou maisdestes tipos de entrada, gerados pela lógica de controle deencadeamento 14, por exemplo, podem ser combinados com umaou mais técnicas de geração de índices acima descritas.
De acordo com uma ou mais modalidades aquidescritas, os acessos a um BTAC 25 podem acompanhar avelocidade da busca de instruções de um cache-I, fazendo-seo número de campos BTAn na linha de cache 42 de um BTAC 25corresponder ao número de instruções na linha de cache deum cache I 22. Para selecionar um dos até η BTAs possíveiscomo um BTA predito, a condição do processador, tal como ohistórico de ramificações recente, pode ser comparada com aexistente no momento em que o(s) BTA(s) foi(foram)gravado(s) no BTAC 25. Diversas modalidades de indexação deuma BPOT 23 para gerar um deslocamento para uma seleção deBTA proporcionam um conjunto rico de ferramentas que podemser otimizadas para arquiteturas ou aplicações específicas.
Embora a presente invenção tenha sido descritaaqui com relação a características, aspectos e modalidadesdela específicos, será evidente que numerosas variações,modificações e outras modalidades são possíveis dentro doamplo alcance da presente invenção e, por conseguinte,todas as variações, modificações e modalidades devem serconsideradas como estando dentro do alcance da invenção. Aspresentes modalidades devem, portanto, ser interpretadassob todos os aspectos como ilustrativas e não restritivas,e pretende-se que todas as alterações que se incluam dentrodo significado e faixa de equivalência das reivindicaçõesanexas sejam englobadas nelas.

Claims (19)

1. Método para predizer o endereço alvo deramificação para uma instrução de ramificação, o qualcompreende:armazenar pelo menos parte de um endereço deinstrução;associar pelo menos dois endereços alvo deramificação ao endereço de instrução armazenado; eao se buscar uma instrução de ramificação,selecionar um dos endereços alvo de ramificação como oendereço alvo predito para a instrução de ramificação.
2. Método, de acordo com a reivindicação 1, noqual armazenar parte de um endereço de instrução compreendegravar pelo menos parte do endereço de instrução como umíndice em um cache.
3. Método, de acordo com a reivindicação 2, noqual associar pelo menos dois endereços alvo de ramificaçãoao endereço de instrução compreende, quando da execução decada uma das pelo menos duas instruções de ramificação,gravar o endereço alvo de ramificação da respectivainstrução de ramificação como dado em uma linha de cacheindexada pelo índice.
4. Método, de acordo com a reivindicação 1, quecompreende também acessar uma tabela de deslocamentos depredição de ramificação de modo a se obter um deslocamento,e no qual selecionar um dos endereços alvo de ramificaçãocomo o endereço alvo predito compreende selecionar oendereço alvo de ramificação que corresponde aodeslocamento.
5. Método, de acordo com a reivindicação 4, noqual acessar uma tabela de deslocamentos de predição deramificação compreende indexar a tabela de deslocamentos depredição de ramificação por um histórico de ramificações.
6. Método, de acordo com a reivindicação 4, noqual acessar uma tabela de deslocamentos de predição deramificação compreende indexar a tabela de deslocamentos depredição de ramificação por uma função de hash de umhistórico de ramificações e do endereço de instrução.
7. Método, de acordo com a reivindicação 4, noqual acessar uma tabela de deslocamentos de predição deramificação compreende indexar aleatoriamente a tabela dedeslocamentos de predição de ramificação.
8. Método, de acordo com a reivindicação 4, noqual acessar uma tabela de deslocamentos de predição deramificação compreende indexar incrementalmente a tabela dedeslocamentos de predição de ramificação para gerar umaseleção de rodízio.
9. Método, de acordo com a reivindicação 4, quecompreende também gravar um deslocamento na tabela dedeslocamentos de predição de ramificação quando umainstrução de ramificação é avaliada como tomada, odeslocamento indicando qual dos pelo menos dois endereçosalvo de ramificação está associado à instrução deramificação tomada.
10. Método, de acordo com a reivindicação 1, noqual armazenar pelo menos parte de um endereço de instruçãocompreende truncar o endereço de instrução por pelo menosum bit, de modo que o endereço de instrução truncado refiraum bloco de η instruções.
11. Método para predizer endereços alvo deramificação, o qual compreende:buscar um bloco de η instruções seqüenciaisreferidas por um endereço de instrução truncado; earmazenar em um cache um endereço alvo deramificação para cada instrução de ramificação no bloco queé avaliada como tomada, de modo que até η endereços alvo deramificação sejam indexados pelo endereço de instruçãotruncado.
12. Método, de acordo com a reivindicação 11, quecompreende também, quando da busca subseqüente de uma dasinstruções de ramificação no bloco, selecionar um endereçoalvo de ramificação a partir do cache.
13. Método, de acordo com a reivindicação 12, noqual selecionar um endereço alvo de ramificação a partir docache compreende:obter um deslocamento de uma tabela dedeslocamentos;indexar o cache com o endereço de instruçãotruncado; eselecionar um dos até η endereços alvo deramificação de acordo com o deslocamento.
14. Método, de acordo com a reivindicação 13, noqual obter um deslocamento de uma tabela de deslocamentoscompreende indexar a tabela de deslocamentos com umhistórico de ramificações.
15. Processador, que compreende:um cache de endereços alvo de ramificaçãoindexado por um endereço de instrução truncado e operantepara armazenar dois ou mais endereços alvo de ramificaçãopor linha de cache;uma tabela de deslocamentos de predição deramificação operante para armazenar uma série dedeslocamentos; eum encadeamento de execução de instruçõesoperante para indexar o cache com um endereço de instruçãotruncado e para selecionar um endereço alvo de ramificaçãoa partir da linha de cache indexada em resposta a umdeslocamento obtido da tabela de deslocamentos.
16. Processador, de acordo com a reivindicação 15, que compreende também um cache de instruções que temuma largura de banda de busca de instruções de ηinstruções, e no qual o endereço de instrução truncadoendereça um bloco de η instruções.
17. Processador, de acordo com a reivindicação 16, no qual o endereço alvo de ramificação é operante paraarmazenar até η endereços alvo de ramificação por linha decache.
18. Processador, de acordo com a reivindicação 15, que compreende também um registrador de históricos deramificações operante para armazenar uma indicação daavaliação de condições de uma série de instruções deramificação condicional, o conteúdo do registrador dehistóricos de ramificações indexando a tabela dedeslocamentos de predição de ramificação para obter odeslocamento para seleção de um endereço alvo deramificação a partir da linha de cache indexada.
19. Processador, de acordo com a reivindicação 18, no qual o conteúdo do registrador de históricos deramificações é combinado com o endereço de instruçãotruncado antes da indexação da tabela de deslocamentos depredição de ramificação.
BRPI0614013-0A 2005-03-23 2006-03-23 cache de endereços alvo de ramificação que armazena dois ou mais endereços alvo de ramificação por ìndice BRPI0614013A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/089,072 US20060218385A1 (en) 2005-03-23 2005-03-23 Branch target address cache storing two or more branch target addresses per index
US11/089,072 2005-03-23
PCT/US2006/010952 WO2006102635A2 (en) 2005-03-23 2006-03-23 Branch target address cache storing two or more branch target addresses per index

Publications (1)

Publication Number Publication Date
BRPI0614013A2 true BRPI0614013A2 (pt) 2011-03-01

Family

ID=36973923

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0614013-0A BRPI0614013A2 (pt) 2005-03-23 2006-03-23 cache de endereços alvo de ramificação que armazena dois ou mais endereços alvo de ramificação por ìndice

Country Status (8)

Country Link
US (1) US20060218385A1 (pt)
EP (1) EP1866748A2 (pt)
JP (1) JP2008535063A (pt)
KR (1) KR20070118135A (pt)
CN (1) CN101176060A (pt)
BR (1) BRPI0614013A2 (pt)
IL (1) IL186052A0 (pt)
WO (1) WO2006102635A2 (pt)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707397B2 (en) * 2001-05-04 2010-04-27 Via Technologies, Inc. Variable group associativity branch target address cache delivering multiple target addresses per cache line
US6886093B2 (en) * 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US7237098B2 (en) * 2003-09-08 2007-06-26 Ip-First, Llc Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
US7437543B2 (en) * 2005-04-19 2008-10-14 International Business Machines Corporation Reducing the fetch time of target instructions of a predicted taken branch instruction
US20070266228A1 (en) * 2006-05-10 2007-11-15 Smith Rodney W Block-based branch target address cache
JP5145809B2 (ja) * 2007-07-31 2013-02-20 日本電気株式会社 分岐予測装置、ハイブリッド分岐予測装置、プロセッサ、分岐予測方法、及び分岐予測制御プログラム
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US8078849B2 (en) * 2008-12-23 2011-12-13 Juniper Networks, Inc. Fast execution of branch instruction with multiple conditional expressions using programmable branch offset table
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8539204B2 (en) * 2009-09-25 2013-09-17 Nvidia Corporation Cooperative thread array reduction and scan operations
US20110093658A1 (en) * 2009-10-19 2011-04-21 Zuraski Jr Gerald D Classifying and segregating branch targets
CN102109975B (zh) * 2009-12-24 2015-03-11 华为技术有限公司 确定函数调用关系的方法、装置及系统
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
CN103984525B (zh) * 2013-02-08 2017-10-20 上海芯豪微电子有限公司 指令处理系统及方法
US9823932B2 (en) * 2015-04-20 2017-11-21 Arm Limited Branch prediction
US20170083333A1 (en) * 2015-09-21 2017-03-23 Qualcomm Incorporated Branch target instruction cache (btic) to store a conditional branch instruction
KR102420588B1 (ko) * 2015-12-04 2022-07-13 삼성전자주식회사 비휘발성 메모리 장치, 메모리 시스템, 비휘발성 메모리 장치의 동작 방법 및 메모리 시스템의 동작 방법
US10353710B2 (en) * 2016-04-28 2019-07-16 International Business Machines Corporation Techniques for predicting a target address of an indirect branch instruction
US20170371669A1 (en) * 2016-06-24 2017-12-28 Qualcomm Incorporated Branch target predictor
US10592248B2 (en) * 2016-08-30 2020-03-17 Advanced Micro Devices, Inc. Branch target buffer compression
CN106406823B (zh) * 2016-10-10 2019-07-05 上海兆芯集成电路有限公司 分支预测器和用于操作分支预测器的方法
US10747539B1 (en) 2016-11-14 2020-08-18 Apple Inc. Scan-on-fill next fetch target prediction
US20210373896A1 (en) * 2020-06-01 2021-12-02 Advanced Micro Devices, Inc. Merged branch target buffer entries
TWI768547B (zh) * 2020-11-18 2022-06-21 瑞昱半導體股份有限公司 管線式電腦系統與指令處理方法
US11650821B1 (en) 2021-05-19 2023-05-16 Xilinx, Inc. Branch stall elimination in pipelined microprocessors
US20230214222A1 (en) * 2021-12-30 2023-07-06 Arm Limited Methods and apparatus for storing instruction information
CN114780146B (zh) * 2022-06-17 2022-08-26 深流微智能科技(深圳)有限公司 资源地址查询方法、装置、系统
US11915002B2 (en) * 2022-06-24 2024-02-27 Microsoft Technology Licensing, Llc Providing extended branch target buffer (BTB) entries for storing trunk branch metadata and leaf branch metadata

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW345637B (en) * 1994-02-04 1998-11-21 Motorola Inc Data processor with branch target address cache and method of operation a data processor has a BTAC storing a number of recently encountered fetch address-target address pairs.
US5530825A (en) * 1994-04-15 1996-06-25 Motorola, Inc. Data processor with branch target address cache and method of operation
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
JPH10133874A (ja) * 1996-11-01 1998-05-22 Mitsubishi Electric Corp スーパスカラプロセッサ用分岐予測機構
JP2004505345A (ja) * 2000-07-21 2004-02-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 分岐ターゲットバッファを有するデータプロセッサ
US8285976B2 (en) * 2000-12-28 2012-10-09 Micron Technology, Inc. Method and apparatus for predicting branches using a meta predictor
US20020194462A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Apparatus and method for selecting one of multiple target addresses stored in a speculative branch target address cache per instruction cache line
JP4027620B2 (ja) * 2001-06-20 2007-12-26 富士通株式会社 分岐予測装置、プロセッサ、及び分岐予測方法
US7124287B2 (en) * 2003-05-12 2006-10-17 International Business Machines Corporation Dynamically adaptive associativity of a branch target buffer (BTB)
US20040250054A1 (en) * 2003-06-09 2004-12-09 Stark Jared W. Line prediction using return prediction information
US20050228977A1 (en) * 2004-04-09 2005-10-13 Sun Microsystems,Inc. Branch prediction mechanism using multiple hash functions
JP2006048132A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd 分岐予測装置、分岐予測装置の制御方法、情報処理装置

Also Published As

Publication number Publication date
JP2008535063A (ja) 2008-08-28
WO2006102635A3 (en) 2007-02-15
CN101176060A (zh) 2008-05-07
WO2006102635A2 (en) 2006-09-28
IL186052A0 (en) 2008-02-09
EP1866748A2 (en) 2007-12-19
US20060218385A1 (en) 2006-09-28
KR20070118135A (ko) 2007-12-13

Similar Documents

Publication Publication Date Title
BRPI0614013A2 (pt) cache de endereços alvo de ramificação que armazena dois ou mais endereços alvo de ramificação por ìndice
ES2351163T3 (es) Supresión de la actualización de un registro del histórico de ramificaciones por ramificaciones de fin de bucle.
KR101059335B1 (ko) 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법
US7437537B2 (en) Methods and apparatus for predicting unaligned memory access
US7721066B2 (en) Efficient encoding for detecting load dependency on store with misalignment
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
WO2015024452A1 (zh) 一种分支预测方法及相关装置
TWI783582B (zh) 利用間接有效表的Spectre修復的方法和微處理器
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US9740497B2 (en) Processor with memory-embedded pipeline for table-driven computation
ES2676303T3 (es) Procedimientos y aparatos para reducir las búsquedas en una memoria caché de dirección de destino de saltos
TWI807371B (zh) 利用預測器模式標籤的Spectre修復方法和微處理器
US9311100B2 (en) Usefulness indication for indirect branch prediction training
US10976961B2 (en) Device, system and method to detect an uninitialized memory read
EP3905034A1 (en) A code prefetch instruction
US9823723B2 (en) Low-overhead process energy accounting
TW202219744A (zh) 微處理器和分支預測控制方法
CN113360190A (zh) 可调整分支预测方法和微处理器

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 AS 5A E 6A ANUIDADES.

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 2161 DE 05/06/2012.