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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 20
- 238000006073 displacement reaction Methods 0.000 claims abstract description 4
- 230000008685 targeting Effects 0.000 claims abstract description 4
- 238000011156 evaluation Methods 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- IXHBSOXJLNEOPY-UHFFFAOYSA-N 2'-anilino-6'-(n-ethyl-4-methylanilino)-3'-methylspiro[2-benzofuran-3,9'-xanthene]-1-one Chemical compound C=1C=C(C2(C3=CC=CC=C3C(=O)O2)C2=CC(NC=3C=CC=CC=3)=C(C)C=C2O2)C2=CC=1N(CC)C1=CC=C(C)C=C1 IXHBSOXJLNEOPY-UHFFFAOYSA-N 0.000 abstract 1
- XEKOWRVHYACXOJ-UHFFFAOYSA-N ethyl acetate Substances CCOC(C)=O XEKOWRVHYACXOJ-UHFFFAOYSA-N 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101000603411 Homo sapiens Neuropeptides B/W receptor type 2 Proteins 0.000 description 1
- 102100038843 Neuropeptides B/W receptor type 2 Human genes 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004134 energy conservation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative 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.
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)
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)
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 | 分岐予測装置、分岐予測装置の制御方法、情報処理装置 |
-
2005
- 2005-03-23 US US11/089,072 patent/US20060218385A1/en not_active Abandoned
-
2006
- 2006-03-23 CN CNA200680016497XA patent/CN101176060A/zh active Pending
- 2006-03-23 JP JP2008503255A patent/JP2008535063A/ja active Pending
- 2006-03-23 EP EP06739633A patent/EP1866748A2/en not_active Withdrawn
- 2006-03-23 KR KR1020077024395A patent/KR20070118135A/ko not_active Application Discontinuation
- 2006-03-23 BR BRPI0614013-0A patent/BRPI0614013A2/pt not_active IP Right Cessation
- 2006-03-23 WO PCT/US2006/010952 patent/WO2006102635A2/en active Application Filing
-
2007
- 2007-09-18 IL IL186052A patent/IL186052A0/en unknown
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. |