BRPI0715899A2 - mÉtodos e equipamentos para reduzir procuras em uma cache de endereÇo alvo de desvio - Google Patents

mÉtodos e equipamentos para reduzir procuras em uma cache de endereÇo alvo de desvio Download PDF

Info

Publication number
BRPI0715899A2
BRPI0715899A2 BRPI0715899-8A BRPI0715899A BRPI0715899A2 BR PI0715899 A2 BRPI0715899 A2 BR PI0715899A2 BR PI0715899 A BRPI0715899 A BR PI0715899A BR PI0715899 A2 BRPI0715899 A2 BR PI0715899A2
Authority
BR
Brazil
Prior art keywords
cache
bypass
instruction
target address
address
Prior art date
Application number
BRPI0715899-8A
Other languages
English (en)
Inventor
Mike Morrow
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 BRPI0715899A2 publication Critical patent/BRPI0715899A2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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
    • 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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

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

"MÉTODOS E EQUIPAMENTO PARA REDUZIR PROCURAS EM CADA UMA CACHE DE ENDEREÇO ALVO DE DESVIO". Uma técnica para reduzir procuras para uma cache de endereço alvo de desvio é recuperado a partir do BTAC em resposta a uma perda na procura em um endereço de instrução em uma cache de instrução (I-cache). O endereço alvo de desvio é associado com o endereço de instrução. O endereço alvo de desvio recuperado a partir do BTAC é armazenado no I-cache. Com esta técnica descrita, endereços de instrução subsequentes são procurados no I-cache, não paralelo ao BTAC, assim economizando energia ao reduzir procuras de BTAC desnecessárias.

Description

"MÉTODOS E EQUIPAMENTO PARA REDUZIR PROCURAS EM UMA CACHE DE ENDEREÇO ALVO DE DESVIO" CAMPO DA INVENÇÃO
A presente invenção refere-se geralmente ao campo dos processadores e, em particular, a um método para aperfeiçoar predição de desvio reduzindo procuras em uma cache de endereço alvo de desvio. FUNDAMENTOS
Microprocessadores realizam tarefas
computacionais em uma ampla variedade de aplicativos. 0 desempenho aperfeiçoado de processador é quase sempre desejável, para permitir operação mais rápida e/ou aumento de funcionalidade através de mudanças de software. Em muitos aplicativos embutidos, tais como dispositivos eletrônicos portáteis, conservar a energia e capacidade de transmissão mais rápida são também objetivos em projeto e implementações de processador.
Muitos processadores modernos empregam uma arquitetura em pipeline, onde instruções seqüenciais, cada uma tendo múltiplas etapas, são sobrepostas em execução. Para desempenho melhorado, as instruções devem fluir continuamente através do pipeline. Qualquer situação que faz com que instruções se percam no pipeline pode de forma prejudicial influenciar o desempenho. Se as instruções são esvaziadas do pipeline e subseqüentemente buscadas (fetched) novamente, tanto desempenho quanto consumo de energia são prejudicados.
Muitos programas incluem instruções de desvio indiretas onde o comportamento de desvio real não é conhecido até que a instrução de desvio indireta seja avaliada profundamente no pipeline. Para evitar a perda que resultaria da espera pela avaliação real da instrução de desvio indireta, processadores modernos podem empregar alguma forma de predição de desvio, desse modo o comportamento de desvio de instruções de desvio indiretas é predito anteriormente no pipeline. Com base na avaliação de desvio predita, o processador busca especulativamente (pré- busca) e processa instruções a partir de um endereço predito - o endereço alvo de desvio (se o desvio for predita para ser tomada) ou o próximo endereço seqüencial após a instrução de desvio (se a desvio for predita para não ser tomada). Caso uma instrução de desvio indireta seja deva ser tomada ou não tomada é referida como determinando a direção do desvio.
Técnicas de predição de desvio convencionais incluem uma cache de acesso alvo de desvio (BTAC) posicionado em um estágio de busca de um pipeline de processador e lógica de predição de desvio. 0 BTAC armazena o endereço alvo de uma instrução previamente buscada e é indexado pelo endereço da instrução. I-caches são convencionalmente propagadas com instruções de vários tipos de instruções que foram recuperadas de uma cache ou memória de ordem elevada. BTACs são convencionalmente propagados após uma instrução de desvio indireta ser realmente resolvida mais abaixo no pipeline de processador.
Em operação, técnicas de predição de desvio convencionais realizam procuras de endereço ou instruções de pré-busca em ambos BTAC e uma I-cache em paralelo. Se existir uma perda no BTAC, essas técnicas de desvio convencionais têm assim consumido energia na procura de BTAC sem achar uma coincidência. Se existir uma solicitação no BTAC, o endereço procurado pode ser considerado como sendo uma instrução de desvio indireta. Após a procura de BTAC, técnicas convencionais invocam a lógica de predição de desvio para determinar se um endereço alvo de desvio recuperado do BTAC deve ser predito tomado ou não. Se a lógica de predição de desvio prediz tomada, a lógica de predição de desvio redireciona o fluxo de instrução recuperando instruções que começam no endereço alvo de desvio.
Quaisquer instruções seqüenciais que entram no pipeline de processador desde que a instrução de desvio seja tipicamente esvaziada do pipeline. 0 percurso definido pela procura de BTAC e subsequente predição de desvio é tipicamente um percurso de velocidade critico porque quanto mais curta a temporização deste percurso menor a quantidade de instruções que precisam ser esvaziadas do pipeline de processador antes de redirecionar o fluxo de instruções. Consequentemente, é desejável para este percurso ser tão curto quanto possível para minimizar a energia despendida no esvaziamento de instruções.
Técnicas convencionais para reduzir o tempo do percurso crítico incluem reduzir o tamanho do BTAC e/ou organizar o BTAC de uma maneira multiforma. Entretanto, reduzindo o tamanho do BTAC, o número de solicitações potenciais e, assim, a probabilidade de achar um endereço alvo de desvio no BTAC é reduzido, baixando a eficácia do BTAC como um todo. Além do mais, organizando o BTAC em uma maneira multiforma, indexação no BTAC pode se tornar mais rápida, mas o tempo gasto em comparação pode ser aumentado. Nestas situações, o BTAC pode ser menor do que a I-cache, assim, tornando o fator limitante da porção de procura paralela do percurso crítico. Portanto, é reconhecido que equipamento e método são necessários para reduzir o tempo para redirecionar fluxo de instrução quando uma instrução de desvio indireta é encontrada em um pipeline de processador sem diminuir a eficácia da predição de desvio.
SUMÁRIO A presente descrição reconhece que técnicas de predição de desvio convencionais freqüentemente desnecessariamente consomem energia quando buscas são feitos para uma I-cache e BTAC em paralelo e as procura falham no BTAC. Este reconhecimento é mais evidente quando existe uma solicitação na I-cache e uma perda no BTAC que é provavelmente devido à I-cache tipicamente armazenar todos os tipos de instruções e o BTAC tipicamente armazenar endereços de instrução de desvio.
De acordo com uma modalidade, um método para reduzir procuras para uma cache de endereço alvo de desvio (BTAC) é descrito. Neste método, um endereço alvo de desvio é recuperado do BTAC em resposta a uma perda na procura de um endereço de instrução em uma cache de instrução (I- cache). O endereço alvo de desvio é associado com o endereço de instrução. O endereço alvo de desvio recuperado do BTAC é armazenado na I-cache. Com estas técnicas descritas, endereços de instrução subsequentes são vantajosamente procurados na I-cache, não paralelo ao BTAC, assim economizando energia reduzindo buscas de BTAC desnecessários.
De acordo com outra modalidade, o método de armazenar instruções de desvio em uma cache de instrução é descrito. Este método inclui procurar um endereço de instrução de desvio em uma cache de instrução (I-cache) , recuperando um endereço alvo de desvio a partir de uma cache de endereço alvo de desvio (BTAC) em resposta a uma perda de I-cache, e armazenando o endereço alvo de desvio em uma entrada na I-cache.
Out ra modalidade refere—se a um sistema para reduzir procuras para uma cache de endereço alvo de desvio (BTAC) . 0 sistema inclui um BTAC e uma cache de instrução (I-cache) configurados para recuperar um endereço alvo de desvio a partir do BTAC em resposta a uma perda de cache ao procurar um primeiro endereço de instrução de desvio. A I- cache é adicionalmente configurada para armazenar o endereço alvo de desvio.
É entendido que outras modalidades da presente invenção serão prontamente aparentes para aqueles versados na técnica a partir da seguinte descrição detalhada, em que várias modalidades da invenção são mostradas e descritas por meio de ilustração. Como será entendido, a invenção é capaz de outras e diferentes modalidades e seus vários detalhes são capazes de modificação em vários outros respeitos, todos sem se afastar da presente invenção. Consequentemente, os desenhos e descrição adicional devem ser relacionados como ilustrativos em natureza e não como restritivos.
BREVE DESCRIÇÃO DOS DESENHOS
A figura 1 é um diagrama de blocos funcional de um processador exemplar.
As figuras 2A - 2C (coletivamente figura 2) ilustram uma listagem de um segmento de código exemplar e conteúdo exemplar de uma I-cache e um BTAC quando a I-cache não contém a instrução de desvio proveniente do segmento de código.
A figura 3 ilustra conteúdos exemplares da I- cache da figura 1 após a I-cache ser propagada com dados de instrução proveniente do BTAC.
A figura 4 é um fluxograma que ilustra um método de armazenar uma instrução de desvio indireta em uma I- cache e recuperar uma instrução da I-cache da figura 1.
A figura 5 é um fluxograma que ilustra um método de gerenciar uma I-cache sobre resolução de desvio real.
A figura 6 é um diagrama de blocos funcional de dois processadores que compartilham um BTAC comum. DESCRIÇÃO DETALHADA
A figura 1 apresenta um diagrama de blocos funcional de um processador exemplar 100. O processador executa instruções em um pipeline de execução de instrução 112 de acordo com a lógica de controle 114. Em algumas modalidades, o pipeline 112 pode ser um projeto superescalar, com múltiplos pipelines paralelos como descrito em detalhe adicional em conexão com a figura 6. O pipeline 112 inclui vários registradores ou latches 116 A- D, organizados em estágios de canalização, e uma ou mais unidades de execução tal como unidade de lógica aritmética (ALU) 118. Um arguivo Registrador de Finalidade Geral (GPR) 120 prove registros compreendendo o topo da hierarquia de memória.
Dados são acessados a partir de uma cache de dados (D-cache) 140, com transcrições e permissões de endereço de memória gerenciadas por um buffer de previsão de tradução (TLB) principal 142. Em várias modalidades, o ITLB 124 pode compreender uma cópia de parte do TLB 142. Alternativamente, o ITLB 124 e o TLB 142 podem ser integrados. Similarmente, em várias modalidades do processador 100, a I-cache 122 e a D-cache 140 podem ser integradas ou unificadas. Perdas na I-cache 122 e/ou D- cache 140 causam um acesso para a memória (off-chip) principal 144, sob o controle de uma interface de memória 146. Perdas na I-cache 122 serão descritas em detalhes adicionais em conexão com a discussão da figura 4.
0 processador 100 pode incluir uma interface de Entrada/Saida (1/0) 148, que controla o acesso a vários dispositivos periféricos 150. Aqueles versados na técnica reconhecerão que numerosas variações do processador 100 são possíveis. Por exemplo, o processador 100 pode incluir uma segunda cache de nível (L2) para uma ou outra ou ambas as I e D caches 122, 140. Em adição, um ou mais blocos funcionais apresentados no processador 100 podem ser omitidos de uma modalidade particular.
O processador 100 inclui um sistema de predição de desvio 143. O sistema de predição de desvio 143 inclui um BTAC 141, um circuito de preditor de desvio (BP) 126, circuito de lógica de atualização 160, e um circuito de pré-decodificação ideal 156. 0 BTAC 141 é configurado para armazenar uma ou mais entradas onde cada entrada contém um endereço de instrução de desvio e um endereço alvo de desvio correspondente a um endereço de busca. O BTAC 141 pode armazenar uma coincidência de endereços de instrução de desvio diretos e indiretos.
A I-cache 122 e o BTAC 141 são propagados através de um percurso de preenchimento 152 quando um endereço de instrução se perde na I-cache 122 e uma solicitação para receber a instrução correspondente proveniente de uma memória de nivel mais alto sobre uma interface de memória 14 6 é feita. Uma vez que a instrução é recebida da interface de memória 146, em uma primeira modalidade, circuito de lógica de pré-decodificação ideal 156 é configurado para determinar se instrução recebida é uma instrução de desvio indireta. Se for o endereço da instrução recebida é buscado no BTAC 141 através de um percurso 152 para visualizar se existe um endereço alvo associado com o endereço da instrução recebida. Se existir uma solicitação no BTAC 141, a instrução recebida e o endereço alvo correspondente são gravados na I-cache 122. Uma perda na I-cache 122 e uma solicitação no BTAC 141 podem ocorrer em uma situação onde uma instrução de desvio indireta é predita, assim causando algum tipo de invalidação na I-cache 122. Os tipos de invalidação de I- cache serão discutidos em detalhe adicional em conexão com a discussão da figura 5. Se o endereço da instrução recebida não estiver no BTAC 141 (por exemplo, uma perda), a instrução recebida é gravada na I-cache 122.
Uma segunda modalidade remove o circuito de lógica de pré-codif icação 156. Na segunda modalidade instruções recebidas através de uma interface de memória 14 6 serão buscadas em um BTAC 141 independente de se a instrução recebida é uma instrução de desvio indireta. Nesta segunda modalidade, instruções, como a primeira modalidade, são encaminhadas para a I-cache 122 para armazenamento. Entretanto, na primeira modalidade, procuras de BTAC são limitados a instruções de desvio indiretas. Em ambas as modalidades, se um endereço alvo de desvio é armazenado no BTAC 141, será também armazenado na I-cache 122.
A lógica de controle de atualização 160 adiciona um endereço alvo à entrada no BTAC 141 após resoluções de desvio reais serem colocadas nos estágios posteriores do pipeline 112 através do percurso 162. O BTAC 141 atualiza a I-cache 122 através do percurso 154 para incluir ambas a instrução de desvio direta e seu endereço alvo correspondente. O termo "predição não tomada" refere-se ao circuito BP 126 gue prevê não redirecionar o pipeline 112 de acordo com o endereço alvo de desvio.
Com a tradução e permissões de endereço de memória gerenciadas por um buffer de previsão de tradução de lado de instrução (ITLB) 124, a unidade de pré-busca de instrução 128 busca instruções de uma cache de instrução (I-cache ou 1$) 122 através de um percurso 125. Se a instrução buscada for encontrada (por exemplo, solicitação) na I-cache 122 e a instrução buscada for associada a um endereço alvo de desvio correspondente, o circuito BP 12 6 prevê se toma ou não toma um percurso que começa no endereço alvo. Se o circuito BP predizer que o endereço alvo deve ser tomado, a unidade de pré-busca de instrução 128 ajusta seu contador de programa para começar a buscar instrução de um endereço alvo assim, redirecionando o pipeline 112 de acordo com o endereço alvo de desvio. Se o circuito BP 126 predizer que o endereço alvo não deve ser tomado, o contador de programa é incrementado para começar buscar a instrução do próximo endereço seqüencial. A operação de sistema de predição de desvio 143 será descrita em mais detalhes em conexão com a discussão das figuras 4 e 5.
A presente descrição contempla uma modalidade de combinar o BTAC 141 com a I-cache 122 em um componente integrante. Entretanto, existem muitas razões para separar o BTAC e a I-cache em componentes distintos. Um BTAC externo como descrito é apenas questionado ou lido durantes preenchimentos na I-cache. Um BTAC convencional que é posicionado em paralelo com a I-cache é acessado a cada vez que a I-cache for acessada. Limitando a consulta ao BTAC como presentemente descrito, a presente descrição economiza energia reduzindo atividade no BTAC. Além do mais, este acesso freqüente ao BTAC permite que o BTAC 141 seja um dispositivo de único porte, assim reduzindo a complexidade de projeto.
A figura 2 ilustra uma listagem 210 de um segmento de código exemplar contendo uma instrução de desvio indireta 212 no endereço 0X000B. Como mostrado, o alvo da instrução de desvio indireta 212 é definido pelo conteúdo do registrador 1 (Rl) . Uma vez que o conteúdo de Rl pode variar a cada hora que a instrução de desvio indireta 212 é executada, o sistema de predição de desvio 143 é utilizado para determinar se redireciona o pipeline de processo 112 começando com o endereço como especificado pelo conteúdo de Rl.
A figura 2B ilustra conteúdos exemplares da I- cache 230. A I-cache 230 pode adequadamente ser similar à I-cache 122. A I-cache 230 inclui uma coluna de instrução 232, uma coluna de bit válido 234, e uma coluna de endereço alvo de desvio 236. Uma entrada em uma coluna 232 representa uma instrução. Por convenção, um valor "0" na coluna 234 indica que o alvo de desvio, se existir, na coluna 236 é inválido, enquanto que um valor "1" na coluna 234 indica que o alvo de desvio na coluna 236 ao longo na mesma linha é válido. Como mostrado, a I-cache 230 em um ponto no tempo onde o contador de programa aponta para o endereço 0X000B não contém uma entrada para instrução de desvio indireta 212 no endereço 0X000B.
A figura 2 ilustra conteúdos exemplares de BTAC 250. O BTAC 250 pode adequadamente ser similar ao BTAC 141. O BTAC 250 inclui uma coluna de endereço de instrução de desvio 252 e uma coluna de endereço alvo 254. A coluna 252 pode incluir endereços de instrução de desvio direta, endereços de instrução de desvio indireta, ou qualquer coincidência dos mesmos. No ponto no tempo onde o contador de programa aponta para o endereço 0X000B, o BTAC 250 contém um endereço de instrução de desvio indireta 256 seu endereço alvo correspondente. Consequentemente, a lógica de controle 114 faz com que a instrução de desvio 256 e seu endereço alvo correspondente no BTAC 250 armazenem a I- cache 230 em uma perda de I-cache. Deve ser reconhecido que outras informações podem ser armazenadas tanto em I-cache 230 quanto em BTAC 250 e que várias organizações de I-cache 230 e BTAC 250 são contempladas pela presente descrição.
A figura 3 ilustra a I-cache 230 após a instrução de desvio indireta associada com o endereço de instrução de desvio indireta 256 e seu endereço alvo correspondente (0x2000) são armazenados na I-cache 230 no endereço OxOOOB. Consequentemente, o próximo tempo no contador de programa do processador aponta para o endereço OxOOOB, uma procura de I-cache solicitará o endereço alvo 0x2000 será atribuído ao contador de programa do processador para começar a redirecionar o pipeline 112 com instruções no endereço 0x2000. Quando comparado com BTACs convencionais, a procura de I-cache na presente descrição é realizada em uma instrução de pré-busca sem realizar uma busca no BTAC, economizando consumo de energia reduzindo o número de buscas de BTAC. Como demonstrado, buscas no BTAC 250 são limitadas a situações onde uma instrução de desvio indireta particular não é encontrada na I-cache 230.
A figura 4 é um fluxograma que ilustra um método 400 de armazenar uma instrução de desvio indireta em uma I- cache e recuperar um endereço alvo de desvio da I-cache da figura 1. Os blocos 410, 420, 450, 455, 460, 465, 470 e 480 definem o processo para armazenar uma instrução de desvio indireta e um endereço alvo de desvio em uma I-cache 122 da figura 1. Os blocos 410, 420, 425, 435, 438, 440, e 445 definem o processo para recuperar um endereço alvo de desvio de uma I-cache. No bloco 410, uma I-cache para uma instrução baseada no endereço da instrução é questionada. Por exemplo, o endereço de instrução armazenado em um programa de computador pode ser utilizado para questionar uma I-cache. No bloco 420, o método 400 determina se existe uma solicitação na I-cache. Se não existir (uma perda de cache) , o método 400 prossegue para o bloco 450 para recuperar os dados de instrução correspondentes da memória de nível mais alto. No bloco 450, dados de instrução são solicitados de uma memória de nível mais alto tal como uma cache de camada 2 (L2) ou memória sem chip. No bloco 455, os dados de instrução recuperados da memória de nível mais alto são recebidos. No bloco 460, o endereço de instrução é buscado no BTAC. No bloco 4 65, o método 400 determina se o endereço de instrução solicita no BTAC ou, em outras palavras, combinações com o endereço de instrução armazenado no BTAC. Se o endereço de instrução solicita no BTAC, o método 400 prossegue para o bloco 470 onde um alvo de desvio predito, se existir, armazenado no BTAC é adicionado aos dados de instrução. Em uma solicitação no BTAC, o alvo de desvio predito irá provavelmente ser armazenado no BTAC enquanto o endereço alvo de desvio de um caso anterior da instrução de desvio indireta tenha sido anteriormente resolvido. 0 método 400 prossegue para o bloco 480 onde os dados de instrução são armazenados na I- cache.
Retornando ao bloco 465, se o endereço de instrução se perde no BTAC, o método 400 prossegue para o bloco 480. Esta transição do bloco 465 para 480 indica a situação onde o endereço de instrução questionado não está nem na I-cache nem no BTAC. Nesta situação, um endereço alvo de desvio será armazenado no BTAC após a resolução do alvo de desvio real para os dados de instrução recuperados que ocorrem depois no pipeline de processador como discutido em detalhes adicionais em conexão com a figura 6. Quando o alvo de desvio real é resolvido, por exemplo, circuito de lógica de atualização 160 fará com que ambos o TAC e a I-cache armazenem o alvo de desvio resolvido.
Os blocos 465 e 475 prosseguem para o bloco 480 onde os dados de instrução são armazenados na I—cache. Por outro lado, o contador de programa é seqüencialmente incrementado. 0 método 400 então prossegue para o próximo endereço como especificado pelo contador de programa. Retornado ao bloco 420, se existir uma solicitação na I-cache significando que existe uma entrada correspondente na I-cache, o método 400 prossegue para o bloco 425. No bloco 425, o método 400 determina se a entrada correspondente na I-cache tem um endereço alvo de desvio. Em uma modalidade, o bloco 425 pode ser realizado interrogando um bit válido correspondente tal como um bit armazenado na coluna de bit válido 234 da figura 2. Se não existir nenhum endereço alvo de desvio associado à solicitação de I-cache, o endereço de solicitação não é uma instrução de desvio indireta. Assim, o método 400 prossegue para o bloco 445 onde a instrução de não desvio é recuperada da I-cache e processada de uma maneira convencional. 0 método 400 prossegue para o bloco 410 para questionar o próximo endereço a partir do I-cache como especificado pelo contador de programa. Se existir um endereço alvo de desvio correspondente para a entrada, o método 400 prossegue para o bloco 435. No bloco 435, o método 400 prediz se um endereço alvo de desvio armazenado na entrada correspondente deve ser tomado. Em uma modalidade, o circuito de predição de desvio 126 faz essa predição. Deve ser notado que alguém versado na técnica apreciará que técnicas de predição de desvio podem estar utilizando estatísticas, heurísticas, parâmetros
predeterminados, e semelhantes. No bloco 438, o método 4 00 testa se a predição deve ser tomada. Se sim, o método 400 prossegue para o bloco 440 onde o endereço alvo de desvio é enviado ao contador de programa tal como uma unidade de pré-busca de instrução 128 a fim de instruir a começar ser buscada do endereço alvo de desvio. O método 400 prossegue para o bloco 410 para questionar o próximo endereço como especificado pelo contador de programa que neste percurso através do fluxograma é o endereço alvo de desvio. Retornando ao bloco 438, se o percurso é predito não tomado, o método 400 prossegue para o bloco 445 para processar a instrução armazenada na cache em uma maneira convencional. Após o bloco 445, o método 400 prossegue para o bloco 410 para questionar o próximo endereço no contador de programa que neste percurso através do fluxograma é o endereço seqüencial seguindo a instrução de desvio indireta tal como o endereço OxOOOC na figura 2A, por exemplo.
A figura 5 é um fluxograma que ilustra um método 500 de gerenciar uma I-cache em uma resolução de desvio real. O método 500 é realizado para situações onde o alvo de desvio real de uma instrução de desvio indireta é calculado para a primeira vez o mecanismo de predição tal como o circuito de predição de desvio 126 prediz o alvo da instrução de desvio indireta. No bloco 510, um alvo real de uma instrução de desvio indireta é resolvido. Tal resolução de desvio pode ser realizada como a instrução de desvio indireta é processada depois no pipeline de processador.
No bloco 520, o método 500 determina se o alvo real coincide com o alvo predito, para o caso do alvo real ser calculado para a primeira vez, não existe nenhum alvo predito. Se o alvo de desvio real casar com o alvo de desvio predito, nem o BTAC nem a I-cache precisam ser atualizados. O método 500 prossegue para o bloco 525 onde ele espera para a próxima instrução de desvio antes de prosseguir de volta para o bloco 510.
Se o alvo de desvio real não combinar com o alvo predito, o método 500 detecta uma predição e prossegue parra o bloco 530. Pelo menos duas situações podem resultar em uma não coincidência. A primeira situação pode ocorrer na primeira vez que uma instrução de desvio indireta for executada após ser anteriormente armazenada no BTAC e na I- cache sem um alvo de desvio. Na primeira situação, a próxima instrução seqüencial após a instrução de desvio indireta pode ter sido carregada no pipeline de processador. A segunda situação pode ocorrer se o endereço alvo predito for diferente do endereço alvo resolvido real. Na segunda situação, a próxima instrução como indicada no endereço alvo resolvido tem sido carregada no pipeline de processador.
No bloco 530, o pipeline de processador, em qualquer situação, tem suas instruções esvaziadas do pipeline para restaurar o pipeline para o ponto de desvio que é, neste caso, o endereço da instrução de desvio indireta. Consequentemente, instruções carregadas no pipeline de processador subsequente à instrução de desvio indireta independente de se aquelas instruções foram carregadas do endereço alvo predito ou do próximo endereço seqüencial após a instrução de desvio indireta após a instrução de desvio indireta ser esvaziada do pipeline de processador. No bloco 540, o BTAC é atualizado para armazenar o endereço alvo de desvio real em seu campo de endereço alvo de desvio tal como a coluna 254.
No bloco 550, a I-cache é gerenciada. Por exemplo, o circuito de lógica de controle 114 pode incluir lógica para implementar blocos 550A-550C. Os blocos 550A- 550C são modalidades alternativas do bloco 550. No bloco 550A, a linha de cache correspondente ao endereço alvo predito é invalidada. No bloco 550B, o alvo de desvio da linha de cache correspondente ao endereço alvo predito é invalidado. No bloco 550C, endereço alvo de desvio da linha de cache correspondente ao endereço alvo predito é atualizado para refletir o endereço alvo real. 0 bloco 550C é preferível quando na primeira vez uma instrução de desvio indireta é executada após anteriormente ser armazenada no BTAC e na I-cache sem um alvo de desvio. A figura 6 é um diagrama de blocos funcional de dois processadores 601 e 602 compartilham um BTAC comum 611. 0 BTAC 611 compartilhado e os processadores 601 e 602 são preferivelmente incorporados em um único chip de circuito integrado. O processador 601 inclui seu próprio pipeline de processador de multiestágio 620, I-cache 610, e circuito de predição de desvio 615. No estagio 625, uma resolução de desvio real acontece a fim de atualizar o BTAC 611 e I-cache 60 com uma instrução e desvio indireta e endereço alvo de desvio como anteriormente descrito nas figuras 4 e 5, respectivamente. 0 processador 602 inclui seu próprio pipeline de processador de multiestágio 640, I- cache 630 e circuito de predição de desvio 635. No estágio 645, a resolução de desvio real acontece a fim de atualizar o BTAC 611 e a I-cache 630 com uma instrução de desvio indireta e endereço alvo de desvio como anteriormente descrito nas figuras 4 e 5, respectivamente. Como mostrado, a resolução de desvio real pode ser realizada em diferentes estágios e no pipeline dos processadores. Embora a figura 6 ilustre um BTAC comum compartilhado entre dois processadores, deve ser notado que a presente descrição contempla compartilhar um BTAC comum entre três ou mais processadores. Durante a operação, quando um endereço é buscado da I-cache 610 ou I-cache 630 que contém um endereço alvo de desvio válido, os pipelines 620 e 640 respectivos começam a pré-buscar instruções que começam do endereço alvo de desvio.
Os vários blocos lógicos ilustrativos, módulos, circuitos, elementos, e/ou componentes descritos em conexão com as modalidades descritas aqui podem ser implementados ou realizados com um processador de finalidade geral, um processador de sinal digital (DSP), um circuito integrado de aplicação especifica (ASIC), um arranjo de porta programável em campo (FPGA) ou outro componente lógico programável, porta discreta ou lógica de transistor, componentes de hardware discretos, ou qualquer coincidência dos mesmos projetada para realizar as funções descritas aqui. Um processador de finalidade geral pode ser um microprocessador, mas na alternativa, o processador pode ser qualquer processador convencional, controlador, microcontrolador, ou maquina de estado. Um processador pode ser implementado como uma coincidência de componentes de computação, por exemplo, uma coincidência de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais microprocessadores juntamente com um núcleo de DSP, ou qualquer outra configuração.
Os métodos descritos em conexão com as modalidades descritas aqui podem ser incorporados diretamente em hardware, em um modulo de software executado por um processador, ou em uma coincidência dos dois. Um modulo de software pode residir em uma memória RAM, memória flash, memória ROM, memória EPROM, registradores, disco rígido, um disco removível, um CD-ROM, ou qualquer forma de meio de armazenamento conhecido na técnica. Um meio de armazenamento pode ser acoplado ao processador tal que o processador possa ler informação do, e gravar informação no meio de armazenamento. Na alternativa, o meio de armazenamento pode ser integrante ao processador.
Enquanto a invenção for descrita no contexto de modalidades, deverá ser reconhecido que uma ampla variedade de implementações podem ser empregadas por pessoas versadas na técnica consistente com a discussão acima e com as reivindicações que seguem abaixo.

Claims (20)

1. Um método para reduzir procuras para uma cache de endereço alvo de desvio (BTAC) compreendendo: recupérar um endereço alvo de desvio do BTAC em resposta a um perda na procura de um primeiro endereço de instrução em uma cache de instrução (I-cache); e armazenar o endereço alvo de desvio proveniente do BTAC em uma I-cache, o endereço alvo de desvio associado com o primeiro endereço de instrução na I-cache.
2. O método, de acordo com a reivindicação 1 adicionalmente compreendendo: procurar o primeiro endereço de instrução na I- cache; e recuperar o endereço alvo de desvio associado com o primeiro endereço de instrução na I-cache.
3. 0 método, de acordo com a reivindicação 2 adicionalmente compreendendo: buscar a primeira instrução associada com o primeiro endereço de instrução; e predizer que uma segunda instrução a ser buscada seja associada com o endereço alvo de desvio.
4. 0 método, de acordo com a reivindicação 3 adicionalmente compreendendo: buscar a segunda instrução com base no endereço alvo de desvio.
5. 0 método, de acordo com a reivindicação 4 adicionalmente compreendendo: detectar uma predição para a primeira instrução,
6. O método, de acordo com a reivindicação 5 adicionalmente compreendendo: gerenciar a I-cache por pelo menos um dentre invalidar uma linha de I-cache, invalidar o endereço alvo de desvio, e atualizar o endereço alvo de desvio na I- cache.
7. 0 método, de acordo com a reivindicação 5 em que detectar um predição para a primeira instrução compreende: calcular um endereço alvo de desvio para a primeira instrução; e comparar o endereço alvo de desvio real com o endereço alvo de desvio na I-cache, em que o endereço alvo de desvio real não coincide com o endereço alvo de desvio.
8. Um método de armazenar instruções de desvio em uma cache de instrução (I-cache) compreendendo: procurar um endereço de instrução de desvio em uma cache de instrução (I-cache); recuperar um endereço alvo de desvio a partir de uma cache de endereço alvo de desvio (BTAC) em resposta a uma perda de I-cache; e armazenar o endereço alvo de desvio em uma entrada na I-cache.
9. 0 método, de acordo com a reivindicação 8 adicionalmente compreendendo: recuperar o endereço alvo de desvio da I-cache em resposta a uma solicitação de I-cache.
10. O método, de acordo com a reivindicação 9 adicionalmente compreendendo: predizer que a próxima instrução a ser buscada é associada com o endereço alvo de desvio.
11. O método, de acordo com a reivindicação 8 adicionalmente compreendendo: atualizar o endereço alvo de desvio na I-cache em uma predição.
12. O método, de acordo com a reivindicação 11, em que atualizar o endereço alvo de desvio na entrada em uma predição adicionalmente compreendendo: determinar um endereço de desvio real da instrução de desvio; e comparar o endereço de desvio real com o endereço alvo de desvio em que a resolução de desvio não coincide com o endereço alvo predito.
13. 0 método, de acordo com a reivindicação 9, adicionalmente compreendendo: predizer se envia o endereço alvo de desvio para ser buscado.
14. 0 método, de acordo com a reivindicação 13 adicionalmente compreendendo: enviar o endereço alvo de desvio a ser buscado.
15. Um sistema para reduzir procuras para uma cache de endereço alvo de desvio (BTAC) compreendendo: uma cache de acesso alvo de desvio (BTAC); e uma cache de instrução (I-cache) configurado para recuperar um endereço alvo de desvio a partir do BTAC em resposta a uma perda de cache quando procurando um primeiro endereço de instrução de desvio, a I-cache adicionalmente configurado para armazenar o endereço alvo de desvio.
16. 0 sistema, de acordo com a reivindicação 15, em que a I-cache é adicionalmente configurada para ter o primeiro endereço de instrução de desvio na I-cache procurado e ter o endereço alvo de desvio associado com o primeiro endereço de instrução de desvio recuperado a partir da I-cache.
17. 0 sistema, de acordo com a reivindicação 15, em que a I-cache é configurada para ter a primeira instrução associada com o primeiro endereço de instrução buscado, o sistema adicionalmente compreendendo: um circuito de predição de desvio configurado para predizer que a segunda instrução a ser buscada é associada com o endereço alvo de desvio.
18. 0 sistema, de acordo com a reivindicação 17, em que a I-cache é configurada para ter a segunda instrução baseada no endereço alvo de desvio buscado da I-cache.
19. 0 sistema, de acordo com a reivindicação 18, adicionalmente compreendendo: atualizar o circuito de lógica configurado para predizer a segunda instrução a ser buscada.
20. O sistema, de acordo com a reivindicação 19 adicionalmente compreendendo: circuito de lógica de controle configurado para gerenciar a I-cache por pelo menos uma dentre invalidar uma linha de I-cache, invalidar o endereço alvo de desvio na linha de I-cache, e atualizar o endereço alvo de desvio na I-cache.
BRPI0715899-8A 2006-08-16 2007-08-15 mÉtodos e equipamentos para reduzir procuras em uma cache de endereÇo alvo de desvio BRPI0715899A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/464,996 US7640422B2 (en) 2006-08-16 2006-08-16 System for reducing number of lookups in a branch target address cache by storing retrieved BTAC addresses into instruction cache
US11/464,996 2006-08-16
PCT/US2007/075996 WO2008022190A1 (en) 2006-08-16 2007-08-15 Methods and apparatus for reducing lookups in a branch target address cache

Publications (1)

Publication Number Publication Date
BRPI0715899A2 true BRPI0715899A2 (pt) 2013-07-30

Family

ID=38799335

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0715899-8A BRPI0715899A2 (pt) 2006-08-16 2007-08-15 mÉtodos e equipamentos para reduzir procuras em uma cache de endereÇo alvo de desvio

Country Status (13)

Country Link
US (1) US7640422B2 (pt)
EP (1) EP2057536B1 (pt)
JP (1) JP5415268B2 (pt)
KR (1) KR101049319B1 (pt)
CN (1) CN101501635B (pt)
BR (1) BRPI0715899A2 (pt)
CA (1) CA2659310C (pt)
ES (1) ES2676303T3 (pt)
HU (1) HUE039149T2 (pt)
MX (1) MX2009001747A (pt)
RU (1) RU2419835C2 (pt)
TW (1) TWI397816B (pt)
WO (1) WO2008022190A1 (pt)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7844807B2 (en) * 2008-02-01 2010-11-30 International Business Machines Corporation Branch target address cache storing direct predictions
US7865705B2 (en) * 2008-02-01 2011-01-04 International Business Machines Corporation Branch target address cache including address type tag bit
CN105468334A (zh) * 2008-12-25 2016-04-06 世意法(北京)半导体研发有限责任公司 对非控制流指令减少分支检验
CN104220980B (zh) * 2011-12-29 2018-01-19 英特尔公司 经管理的指令缓存预取
CN104252334B (zh) * 2013-06-29 2017-07-07 华为技术有限公司 分支目标地址获取方法和装置
CN106776367B (zh) * 2016-12-13 2020-05-12 上海高性能集成电路设计中心 基于位置对应关系的指令Cache一致性的实现方法
CN110825442B (zh) * 2019-04-30 2021-08-06 成都海光微电子技术有限公司 一种指令预取方法及处理器

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2534662B2 (ja) * 1986-03-25 1996-09-18 日本電気株式会社 命令キヤツシユ制御方法
US4722050A (en) * 1986-03-27 1988-01-26 Hewlett-Packard Company Method and apparatus for facilitating instruction processing of a digital computer
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5093778A (en) * 1990-02-26 1992-03-03 Nexgen Microsystems Integrated single structure branch prediction cache
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US6427192B1 (en) * 1998-09-21 2002-07-30 Advanced Micro Devices, Inc. Method and apparatus for caching victimized branch predictions
US6324643B1 (en) * 1999-10-01 2001-11-27 Hitachi, Ltd. Branch prediction and target instruction control for processor
US6651162B1 (en) * 1999-11-04 2003-11-18 International Business Machines Corporation Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache
TW564369B (en) * 2001-07-16 2003-12-01 Ip First Llc Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7096348B2 (en) * 2003-12-15 2006-08-22 Freescale Semiconductor, Inc. Method and apparatus for allocating entries in a branch target buffer
KR100630702B1 (ko) * 2004-10-05 2006-10-02 삼성전자주식회사 명령어 캐쉬와 명령어 변환 참조 버퍼의 제어기, 및 그제어방법
US7418676B2 (en) * 2005-01-19 2008-08-26 Seiko Epson Corporation Asynchronous circuit design tool and computer program product

Also Published As

Publication number Publication date
EP2057536A1 (en) 2009-05-13
CN101501635B (zh) 2013-10-16
KR20090042318A (ko) 2009-04-29
CN101501635A (zh) 2009-08-05
RU2009109226A (ru) 2010-09-27
JP2010501101A (ja) 2010-01-14
TWI397816B (zh) 2013-06-01
CA2659310C (en) 2011-11-15
EP2057536B1 (en) 2018-04-11
HUE039149T2 (hu) 2018-12-28
US7640422B2 (en) 2009-12-29
MX2009001747A (es) 2009-02-25
WO2008022190A1 (en) 2008-02-21
JP5415268B2 (ja) 2014-02-12
CA2659310A1 (en) 2008-02-21
TW200815981A (en) 2008-04-01
ES2676303T3 (es) 2018-07-18
RU2419835C2 (ru) 2011-05-27
KR101049319B1 (ko) 2011-07-13
US20080046702A1 (en) 2008-02-21

Similar Documents

Publication Publication Date Title
US8812822B2 (en) Scheduling instructions in a cascaded delayed execution pipeline to minimize pipeline stalls caused by a cache miss
US7406569B2 (en) Instruction cache way prediction for jump targets
US6351796B1 (en) Methods and apparatus for increasing the efficiency of a higher level cache by selectively performing writes to the higher level cache
US20070186050A1 (en) Self prefetching L2 cache mechanism for data lines
US20080235500A1 (en) Structure for instruction cache trace formation
BRPI0715899A2 (pt) mÉtodos e equipamentos para reduzir procuras em uma cache de endereÇo alvo de desvio
US20090006803A1 (en) L2 Cache/Nest Address Translation
EP3321811B1 (en) Processor with instruction cache that performs zero clock retires
US8601240B2 (en) Selectively defering load instructions after encountering a store instruction with an unknown destination address during speculative execution
BR102013010877B1 (pt) processador e método de gerenciamento de conteúdo de preditor de dependência de carregamento-armazenamento
BRPI0719371A2 (pt) Métodos e equipamento para reconhecimento de uma chamada de sub-rotina
BRPI0614013A2 (pt) cache de endereços alvo de ramificação que armazena dois ou mais endereços alvo de ramificação por ìndice
US20090006754A1 (en) Design structure for l2 cache/nest address translation
US20090006753A1 (en) Design structure for accessing a cache with an effective address
US20080162907A1 (en) Structure for self prefetching l2 cache mechanism for instruction lines
US20080162819A1 (en) Design structure for self prefetching l2 cache mechanism for data lines
JPH1055276A (ja) 多重レベル分岐予測方法および装置
TWI793739B (zh) 推測分支模式更新方法和微處理器
TW202219745A (zh) 微處理器和預取指調整方法
US8386712B2 (en) Structure for supporting simultaneous storage of trace and standard cache lines
EP3321810B1 (en) Processor with instruction cache that performs zero clock retires
WO1998020421A1 (en) A way prediction structure
JPH09311787A (ja) データ処理装置

Legal Events

Date Code Title Description
B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]
B09B Patent application refused [chapter 9.2 patent gazette]

Free format text: MANTIDO O INDEFERIMENTO UMA VEZ QUE NAO FOI APRESENTADO RECURSO DENTRO DO PRAZO LEGAL