BRPI0716010A2 - mÉtodos e equipamento para emular o comportamento de prediÇço de desvio de uma chamada de sub-rotina explÍcita - Google Patents

mÉtodos e equipamento para emular o comportamento de prediÇço de desvio de uma chamada de sub-rotina explÍcita Download PDF

Info

Publication number
BRPI0716010A2
BRPI0716010A2 BRPI0716010-0A BRPI0716010A BRPI0716010A2 BR PI0716010 A2 BRPI0716010 A2 BR PI0716010A2 BR PI0716010 A BRPI0716010 A BR PI0716010A BR PI0716010 A2 BRPI0716010 A2 BR PI0716010A2
Authority
BR
Brazil
Prior art keywords
instruction
address
subroutine
explicit
decoding
Prior art date
Application number
BRPI0716010-0A
Other languages
English (en)
Inventor
James Norris Dieffenderfer
Brian Stempel
Thomas Andrew Sartorius
Rodney Wayne Smith
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of BRPI0716010A2 publication Critical patent/BRPI0716010A2/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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/30058Conditional branch instructions
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

"MÉTODOS E EQUIPAMENTO PARA EMULAR O COMPORTAMENTO DE PREDIÇçO DE DESVIO DE UMA CHAMADA DE SUB-ROTINA EXPLÍCITA". É descrito um equipamento para emular o comportamento de predição de desvio de uma chamada de sub-rotina explícita. O equipamento inclui uma primeira alimentação que está configurada para receber um endereço de instrução e uma segunda alimentação. A segunda alimentação está configurada para receber informações para pré-decodificação que descrevem o endereço de instrução como estando relacionado a uma chamada de sub-rotina implícita para uma sub-rotina. Em resposta às informações para pré-decodificação, o equipamento inclui também um somador configurado para somar uma constante ao endereço de instrução definindo um endereço de retorno, levando o endereço de retorno a ser armazenado em um recurso de sub-rotina explícita, facilitando desse modo a subseqüente predição de desvio de uma instrução de chamada de retorno.

Description

"METODOS E EQUIPAMENTO PARA EMULAR O COMPORTAMENTO DE PREDigAO DE DESVIO DE UMA CHAMADA DE SUB-ROTINA EXPLICITA"
CAMPO DA INVENgAO
A presente invengao esta de um modo geral relacionada ao camp ο de processaciores em pipeline e em particular a um metodo para emular ο comportamentο de predigao de desvio de uma chamada de sub—rotina explicita em uma chamada de sub-rotina implicita de modo a reduzir ο consumo de energia e aumentar a utilizagao do processador em pipeline.
FUNDAMENTOS
Microprocessadores efetuam tarefas de computagao em uma ampla gama de aplicagSes. Um melh〇r desempenho de processador e quase sempre desejavel, para permitir uma operagao ma is rapida e/ou maior funci〇nalidade atraves de mudangas de software. Em muitas aplicag5es embutidas, tais como em dispositivos eletronicos portateis, a economia de energia constitui tambem uma meta importante no projeto e implementagao de processadores . 2 0 Varios processadores modernos empregam uma
estrutura de pipeline, em que instrug5es sequenciais sao sobrepostas na execugao de modo a aumentar a capacidade de processamentο do processador· A manutengao de uma execugao uniforme atraves do pipeline e critica para a obtengao de um alto desempenho. A maioria dos processadores modernos utiliza tambem uma memoria hierarquica, com memorias cache rapidas em chips armazenando copias locais de instrugoes e dados acessados recentemente.
Os programas reais incluem instrugSes de desvio indireto, cujο comportamentο real de desvio nao e conhecido ate que a instrugao se j a realmente avaliada a f undo no pipeline de execugao. A maioria dos processadores modernos emprega alguma forma de predigao de desvio, pel a qual ο
comportamentο de desvio de instrugoes de desvio indireto e predito no inicio do pipeline, tal como durante um estagio do pipeline de decodificagao ou busca. Atraves da utilizagao de uma tecnica de predigao de desvio, ο processador busca de forma especulativa ο alvo da instrugao de desvio indireto e redireciona ο pipeline para iniciar 〇 processamento das instrugoes buscadas especulativamente. Quando e determinado ο alvo de desvio real em um est agio de canalizagao posterior, tal como um estagio de canalizagao de execugao, caso 〇 desvio tenha sid〇 predito erroneamente9 as instrugoes buscadas especulativamente devem ser descartadas do pipeline e novas instrug5es buscadas a partir do enderego alvo correto. A pre—busca de instrugoes em resposta a uma predigao erronea de meta de desvio influencia adversamente ο desempenho do processador e 〇 consumo de energia. Um exemplo de instrug5es de desvio indireto
inclui instrugoes de desvio utilizadas para retornar de uma sub-r〇tina. Como exemplo, uma chamada de retorno proveniente de uma sub-rotina pode incluir uma instrugao de desvio cujο enderego de retorno e definido pelo c〇nte0do de 2 0 um registro· Um enderego de retorno define a proxima instrugao a ser buscada apos a sub-rotina ser completada e e comumente a instrugao apos uma instrugao de desvio a partir da qual a sub-rotina f oi originalmente chamada. Varias estruturas de alto desempenho designam um registro de uso geral especifico para uso em retornos de sub—rotina, comumente designados como um registro de link.
Por conveniencia, uma chamada de retorno pode tambem ser designada como uma instrugao de retorno de desvio. Para que um pipeline de processador utilize predigao de desvio para uma instrugao de retorno de desvio, um software convencional inclui uma chamada de sub-rotina explicit a tal como uma instrugao de link: e desvio para registrar ou gravar ο enderego de retorno no registro de link. Varias implementag5es de alto desempenho incluem uma estrutura de piIha de link no estagio de decodificagao do processamento da instrugao de link e desvio.〇s valores de retorno de link sao "empurrados" para tal pilha, de m〇d〇 a permitir predigao acurada de desvio quando as sub—rotinas correspondentes retornam. As estruturas de pilha de link contem uma lista de enderegos de retorno de modo a dar suporte a miiltiplas chamadas de sub-r〇tina que passam atraves de um pipeline e para suportar ο aninhamento (nesting) de multiplos niveis de chamadas de sub-rotina. Subsequentementef quando a instrugao de retorno de desvio dentro da sub-rotina estiver sendo decodificada, ο enderego de retorno e lido a partir da estrutura de pilha de link para ser utilizada na predigao de desvio para prever 〇 enderego alvo caso outro hardware de predigao de desvio ordene que 〇 processador deve redirecionar ο pipeline· Caso 3. predicjeo indique ο redirecionar do pipeline, ο pipeline comega a recuperar instrugoes a partir do enderego de retorno que foi lido a partir da pilha de link.
No entanto, existem software herdados ou legados que nao incorporam instrugoes de desvio e link convencionais quando invocam uma sub-rotina e, portanto, que sao incapazes de utilizar a estrutura de pilha de link. Como exemplo, e feita ref erencia a tabela que se segue, contendo um segmento de codigo que iria rodar em um processador ARM Ltd. Compativel:
0x00899900 MOV LR, PC 0x00899904 BR 0x00990000 0x00899908 INSTRa 0x00899912 INSTRb 0x00990000 LDA 0x00990004 ADD UxlX)9ytXK)>! BX LR
25
Tabela 1: segmento de codigo legado A combinagao das instrugoes MOV LR, PC e BR prepare ο processador para um subsequente desvio para uma sub-rotina· Neste exemplo, a sub-rotina real para a qual e feita a chamada se inicia no enderego 0x00990000. A instrugao MOV LR, PC indica que ο conteiido do contador de programa (pc) deve ser copiado para um registro de link (Ir)· Em algumas estruturas de instrugao, tais como ARM, ο contador de programa e realmente definido como ο enderego de instrugao corrente mais 8 bytes. Com tal definigao, ο deslocamento do conteiido de pc para Ir results no armazenamento do enderego de retorno, ο enderego 0x00899908, para 〇 registro de link.〇 enderego de retorno pe recuperado a partir do registro de link ao final da sub- rotina . Mais especificamente, ο enderego de retorno e recuperado quando da execugao de BX LR, a instrugao de retorno de desvio.
Nos processadores modernos, que incluem linhas profundas e utilizam tecnicas de predigao de desvio, a predigao do enderego de retorno quando da decodificagao da instrugao de retorno de desvio sem ο uso de uma pilha de link θ p3robleiu3tica p〇r vArias joslζοθs . Uma das job.ζοθs envoive uma convengao micro estrutural que nao permite que um registro de uso geral, tal como um registro de link, se ja acessado durante um estagio de decodificagao de um pipeline, impedindo desse modo a predigao de desvio do enderego de retorno usando um valor "corrente" do registro de link no moment ο de predigao de desvio. Mesmo que uma variagao possa ser efetuada em tal convengao micro estrutural, os pipelines profundos atuais podem levar 〇s dados contidos em um registro de link a serem nao conf iaveis para propositos de predigao· Como exemplo, durante ο tempo necessario para que uma instrugao de desvio fIua de um estagio de canalizagao de decodificagao, onde e feita uma predigao para ο enderego de retorno, para um estagio de canalizagao de execugao, em que e efetuada uma resolugao real do enderego de retorno, uma instrugao de desvio subseqiiente pode entrar no pipeline e sobrescrever 〇 registro de link, levando a resolugao real do enderego de retorno para a instrugao de retorno de desvio inicial a ser diferente do enderego de retorno predito. Tal diferenga entre 〇 valor predito e a resolugao real e designada como um erro de predigao de alvo de desvio. Previsoes errdneas de desvio resultam em perda de tempo e perda de energia, sendo ambas ο resuitado da execugao especulativa por uma via incorretamente predita.
Dada a disseminagao de tais softwares legados e ο cus to envolvido na reforma de softwares legados para a utilizagao de instrugoes de link e desvio convencionais ao se invocar uma sub-rotina, existe uma demanda para que os microprocessadores desenvolvidos atualmente deem suporte a software legados e que tais softwares legados utilizem uma estrutura de pilha de link de modo a prever eficazmente ο enderego de retorno quando uma instrugao de retorno de desvio estiver em um estagio de canalizagao de decodificagao ·
SUMARIO
A presente invengao reconhece um padrao de instrugoes que definem uma chamada de sub-rotina implicita para uma sub-rotina e utilize tal reconhecimento para desenvoIver metodos e equipamentos para utilizar recursos de chamada de sub-rotina explicit a para permitir a predigao de desvio prever ο enderego de retorno da sub-rotina.
De acordo com um aspecto, e descrito um metocio para emu Iar ο comport ament ο de predigao de desvio de uma sub-rotina explicita. 〇 metodo inclui reconhecer um enderego de instrugao indicando uma chamada de sub_r〇tina implicita para uma sub-rotina; calcular um enderego de retorno a partir do enderego de instrugao; e armazenar ο
enderego de retorno em um recurso de sub-rotina explicita - Outro aspecto esta relacionado a um equipamento, compreendendo: uma primeira alimentagao configurada para receber um enderego de instrugao/ uma segunda alimentagao configurada para receber informag5es de pre_decodificagao que descrevem ο enderego de instrugao como estando associado a uma chamada de sub-rotina implicita para uma sub-rotina. Em resposta as informag5es de pre- decodificagao, ο equipamento compreende tambem um somador configurado para somar um deslocamento ao enderego de instrugao definindo um enderego de retorno. 〇 somador estando tambem configurado para armazenar ο enderego de retorno em um recurso de sub-rotina explicita, facilitando a subseqilente predigao de desvio de uma instrugao de chamada de retorno. De acordo com mais outro aspecto, e descrito
outro equipamento, compreendendo: primeira e segunda alimenta<?<3es conf iguradas para receber concomitantemente primeiro e segundo enderegos de instrug5es e as informagoes de pre-decodificagao associadas; um primeiro conjunto de somadores configurado para somar um deslocamento aos primeiro e segundo enderegos de instrugiSes para definir primeiro e segundo resultados em resposta as informagoes de pre-decodificagao indicando que os primeiro ou segundo enderegos de instrug5es estao associados a uma chamada de sub-rotina implicita para uma sub—rotina,· e um dispositivo para selecionar um enderego de retorno a partir de um dentre os primeiro ou segundo resultados.
Deve ficar claro que outras modalidades da presente invengao ficarao prontamente claras para os tecnicos na area atraves da descrigao detalhada que se segue, em que varias modalidades da invengao sao apresentadas e descritas como ilustragao. Como sera constatado, a invengao e capaz de outras e diferentes modalidades e seus varios detalhes sao capazes de serem
modificados em varios outros pontos, sempre sem constituir um afastamento da presente invengao. Assim sendo, os desenhos e a descrigao detalhada devem ser considerados como de natureza ilustrativa e nao restritiva.
BREVE DESCRigAO DOS DESENHOS
A Figure Ieum diagrama de blocos funcional de
um processador.
A Figura 2 e um diagrama de timing que segue um fluxo de instrugSes atraves do pipeline ilustrada na Figura 1.
A Figura 3 e uma parte exemplar de um unico
estagio de canalizagao de decodificagao de instrugao.
A Figura 4 e um primeiro aspecto exemplar de uma parte de um estagio de canalizagao de decodificagao de duas instrugoes.
A Figura 5 e um segundo aspecto exemplar de uma
parte de um estagio de canalizagao de decodificagao de duas instrugoes da Figura 1.
A Figura 6 e um fluxograma ilustrando um metodo de emulagao do comportamento de predigao de desvio de uma sub-rotina explicita quando do reconhecimento de uma chamada de sub-rotina implicita.
A Figure 7 e um fluxograma apresentando outros detalhes dos blocos 610, 620 e 630 da Figura 6.
DESCRigAO DETALHADA A Figura 1 apresenta um diagrama de blocos
funcional de um processador 100 em que podem ser empregados aspectos da presente invengao· O processador 100 inclui um cache de instrug5es (i-cache) 110 para armazenamento de instrugoes recentemente processadas, uma interface de memoria 136 para acessar a memoria 138 quando uma instrugao nao for encontrada na i-cache 110, um circuito logico de pre-decodificagao 128 para efetuar decodificagao limitada de uma instrugao buscada a partir da memoria 138 e um
circuito 10gico para preenchimento do buffer 130 para gravar ou "escrever" dados de instrug5es, incluindo bits de pre-decodificagao na i一cache 110 em resposta a uma perda na i-cache 110. Os bits de pre—decodificagao estao associados a instrugao buscada a partir da memoria e contem atributos que descrevem a instrugao tal como uma indicagao do tipo de instrugao. A memoria 138 pode estar localizada dentro ο fora do processador 100 e pode compreender um componente de memoria de camada 2 (12).
〇 processador 100 compreende tambem um pipeline de instrugoes 105 para processamento de instrugoes e um circuito de predigao de desvio 132 para predigao de um enderego alvo para uma instrugao de desvio indireto e predigao sobre ο redirecionar ο pipeline de instrugoes 105 para processar ο enderego alvo. Caso ο circuito de predigao de desvio 132 preveja redirecionar ο pipeline de instrugoes 105, a. instruijao de desvio indireto β descrita como tendo sido "tomada como predito". Caso a instrugao de desvio indireto foi "tomada como predito", ο circuito de predigao de desvio 132 preve um enderego alvo da instrugao de desvio indireto e redireciona ο pipeline de instrugoes 105 para iniciar a busca de instru?5es com inicio no enderego alvo.
〇 processador 100 processa instrug5es em um pipeline de instrug5es 105 de acordo com ο circuito logico de controle 122. Em algumas modalidades, ο pipeline 105 inclui v^rios estagios de linha: um estagio de consulta a cache de instrugSes (IC) 102, um estagio de alinhamento de dados de instru?5es (ida) 104, um estagio de decodificagao (dcd) 106, um estagio de fila de instrutpSes (iq) 108, um estagio de primeiro acesso a registrador (raccl) 112, um estagio de segundo acesso a registrador (racc2) 114, um estagio de estagao de reserva (rsv) 116 e quatro estagios de execugao (xl a x4) 120a a 120d. Em algumas modalidades, um estagio de canalizagao pode processar duas ou mais instrugoes. Deve ser notado que podem ser adicionados ou subtraidos estagios de linha do pipelinel05 sem limitar ο escopo da presente invengao. O processador 100 compreende tambem um arquivo de registro de uso geral (GPR) 118 que inclui registros que, por convengao micro estrutural, sao acessiveis aos estagios de linha 112, 114 e 120a a 120d.
O estagio de consulta a cache de instru?5es (IC) 102 tenta recuperar uma instrugao a partir da i一cache 110. 〇 estagio de alinhamento de dados de instrugoes 104 analisa mUltiplas instrug5es e informagoes pre-decodificadas associadas a rmiltiplas instrugoes. Caso um enderego de instrugao nao seja encontrado na i一cache 110, ο estagio de alinhamento de dados de instrugoes 104 inicia uma requisigao para busca da instrugao correspondente a partir da memoria 138. O estagio de decodificagao 106 decodifica completamente uma instrugao. Ademais, alem das fung5es convencionais, ο estagio de decodificagao 106 reconhece instrug5es de chamada de sub—rotina explicita e grava um enderego de retorno em uma estrutura de pilha de link 134 . Alem disso, ο estagio de decodificagao 106 tambem reconhece uma chamada de sub-rotina proveniente do software legado e armazena um enderego de retorno em uma estrutura de pilha de link 134. A estrutura de pilha de link 134 pode consistir de um conjunto de registros gerenciados como um buffer circular. O enderego de retorno e um enderego de uma instrugao para ο qual ο pipeline 105 deve ser redirecionada ao final da sub-rotina implicita. Δ estrutura e operagao do s aspectos pertinentes do estagio de decodificagao 106 serao mais completamente descritas com referencia as
Figuras 3 a 5.
〇 estagio de fila de ou mais instrugoes de modo especulativa continue durante
instrugoes 108 acumula uma a permitir que a busca para das do pipelinede
execugao. Os primeiro e segundo estagios de acesso a registro 112 e 114 recuperam um ou mais operadores/operands a partir do registro de uso geral 118 conforme possa ser necessario para uma instrugao. O estagio de estagoes de reserva 116 permite a uma instrugao aguardar a resolugao de riscos de leitura apos gravagao e similares. Os estagios de execugao incluem componentes conhecidos, tais como unidades logicas aritmeticas e similares. Os estagios de execugao 120a a 12Od executam instru^oes. Os resuitados produzidos provenientes dos estagios de execugao sao gravados no arquivo GPR 118. Durante os estagios de execugao 120a a 120d, ocorre a resolugao de desvio real para determinar se a predigao de desvio efetuada durante ο estagio de decodificagao 106 esta correta. Caso a resolugao de desvio real seja diferente do destino predito, um desvio e considerado como predito erroneamente.
Os tecnicos na area notarao que sao possiveis numerosas variag5es do processador 100. Como exemplo, ο processador 100 pode incluir um cache de segundo nivel (12) para a i-cache 110. Alem disso, um ou ma is dos blocos funcionais mostrados no processador 100 podem ser omitidos em uma modalidade especifica. Outros blocos funcionais que possam residir no processador 100, tal como um buffer de translagao de consulta lateral, um cache de dados e similares nao sao essenciais para uma descrigao da presente invengao e serao omitidos para maior clareza.
A Figura 2 e um diagrama de timing que segue um f Iuxo de instrug5es atraves do pipeline 105 ilustrada na Figura 1. Em particular, ο fluxo de instrugoes tragado no diagrama de timing 200 e ο segmento de codigo legado tal como ilustrado na Tabela 1. Para os propositos da presente invengao, a expressao "chamada de sub-rotina implicita" se refere a uma combinagao de duas ou mais instrugoes cu j a fungao combinada e a de a j ustar registros em preparagao para uma chamada de sub-rotina e chamar ou invocar uma sub- rotina .Como exemplo, fazendo referenda a Tabela 1, as duas instrug5es na combinagao MOV LR, PC/BR definem uma chamada de sub-rotina implicita. Em tal caso, a instrugao
MOV LR. PC define ο inicio da chamada de sub-rotina implicita e a instrugao BR define ο final da chamada de sub-rotina implicita.
As primeiras onze filas do diagrama de timing 200 correspondem aos estagios do pipelinel05. As colunas 210a a 210w correspondem a ciclos de timing sequenciais. Para ο proposito de explanagao, cada estagio de canalizagao processa uma instrugao por ciclo. No entanto, sera notado pelos tecnicos na area que os ensinamentos da presente invengao se aplicam tanto a estagios de linha de miiltiplos ciclos como a estagios de linha que sao capazes de processar imiltiplas instrugoes por ciclo.
A fila 211 do diagrama de timing 200 corresponde ao conteildo de uma estrutura de pilha de link, tal como a estrutura de pilha de link 134, como resultado dos aspectos do estagio de canalizagao de decodificagao ilustrados nas Figuras 3 e 4. A fila 213 do diagrama de timing 200 corresponde ao conteiido da estrutura de pilha de link como resultado do estagio de canalizagao de decodificagao ilustrado na Figura 5. A fila 213 sera comentada em conexao com a descrigao da Figura 5. A fila 212 do diagrama de timing 200 corresponde ao conteudo de um registro de link.
De um modo geral, as instrugoes entram no estagio IC 102 e se propagam para ο pr0ximo estagio no proximo ciclo. Em 215, a instrugao MOV LR, PC esta no estagio de decodificagao 106. Neste ponto, ο estagio de decodificagao 106 reconhece a MOV LR, PC e armazena ο enderego de retorno, MOV + 8, na estrutura de pilha de link. Para ο proposito de nomenclature, MOV + 8 se refere a adigao de um deslocamento de oito ao enderego da instrugao MOV.〇 valor oito inclui os quatro bytes da instrugao MOV e os quatro bytes da instrugao BR que se segue, de forma a que a estrutura de pilha de link contenha ο enderego da instrugao seqiiencial apos a instrugao BR. Como sera comentado mais adiante em conexao a descrigao das Figuras 3 e 4, um estagio de decodificagao de acordo com a presente invengao adiciona ο deslocamento de oito ao enderego da instrugao M〇V. Como sera comentado mais adiante em conexao a descrigao da Figura 5, um estagio de decodificagao alternative) de acordo com a presente invengao adiciona um deslocamento de quatro ao enderego da instrugao BR. Deve ser notado que ambas as notagoes MOV + 8 e BR + 4 fazem referenda ao enderego 0x00899908 no enderego de retorno. Na referencia 220, a estrutura de pilha de link mostra que seu conteiido e MOV + 8. Quando a instrugao BR e processada pelo estagio de decodificagao 106, ο alvo da instrugao de desvio, ο inicio da sub-rotina e predito e recuperado pelo pipeline no proximo ciclo. Na referencia 219, a instrugao LDA, ο inicio da sub-rotina e processado pelo estagio IC 102. Dado que ο pipeline 105 foi redirecionado para busca da instrugao LDA devido a predigao da instrugao de desvio, as instrugoes nos enderegos BR + 4 e BR + 8 sao eliminadas do pipeline. As instrugoes que se seguem apos a instrugao LDA sao a seguir buscadas para ο pipeline 105.
Na referencia 225, a instrugao de retorno de desvio, BX, e processada pelo estagio de decodificagao 106. 〇 estagio de decodificagao 106 invoca ο circuito de predigao de desvio 132 com ο conteiido da estrutura de pilha de link para prever ο enderego de retorno. Em outra modalidade, ο circuito de predigao de desvio 132 Ie a estrutura de pilha de link. Em qualquer dos casos, ο circuito de predigao de desvio 132 utilize a estrutura de pilha de link para prever ο enderego de retorno e, na referencia 230, ο pipeline e redirecionada para recuperar a instrugao no enderego 0x00899908. Uma vez utilizada, a entrada MOV + 8 na fila 211, coluna 210J, e removida da estrutura de pilha de link.
Nos processadores convencionais, que nao fazem uso de uma pilha de link para chamadas de sub-rotinas implicitas, ο valor do pr0prio registro de link (Ir) pode
nao ter sido atualizado a tempo de ser usado no ciclo 2101, quando a instrugao de retorno de sub-rotina esta no estagio dcd e tentando prever. Tal como e mostrado no diagrama, ο Ir nao e atualizado ate ο ciclo 210M, ο qual ocorre quatro ciclos mais tarde do que seria necess^rio para uso de tal valor no estagio dcd.〇 ciclo 210M, na referenda 235, ocorre apos ο ciclo 2101, onde sao efetuadas a predigao e busca do enderego de retorno de desvio. Dessa forma, nos processadores convencionais, a predigao de desvio na instrugao de retorno de desvio armazenada em um registro de link pode nao ser confiavel.
As Figuras 3 a 5 ilustram aspectos alternativos da invengao relacionados a um estagio de canalizagao de decodificagao, tal como ο estagio de canalizagao de decodificagao 106. Tais aspectos alternativos enderegam vias ou trajetorias para gravagao em uma estrutura de estado de link tanto para uma chamada de sub-rotina implicita como para uma instrugao convencional de desvio e link· Deve ser notado que outras vias estao incluidas no estagio de canalizagao de decodificagao, por exemplo trajetorias de outras instru?5es no conjunto de instrugoes, mas que nao afetam de qualquer forma tal aspecto da Presente invengao e, portanto, nao sao representadas nos desenhos.
A Figura 3 e uma parte exemplar 300 de um ύηίοο estagio de canalizagao de decodificagao de instrugao. A parte 300 do ύηχοο estagio de canalizagao de decodificagao de instrugao pode ser adequadamente disposto no estagio de decodificagao 106. A parte 300 do ύηίοο estagio de canalizagao de decodificagao de instrugao inclui um enderego de instrugao 310 e bits de pre—decodificagao 315 associados ao enderego de instrugao 310. O tamanho do enderego de instrugao 310 e de 32 bits e ο tamanho dos bits de pre-decodificag;ao 315 e de 8 bits· Deve ser notado que aspectos da presente invengao contemplam varios tamanhos do enderego de instrugao ou dos bits de pre-decodif icagao e suas respectivas posigSes de bits. O enderego de instrugao 310 e os bits de pre-decodificagao 315 sao alimentados a parte 300 do estagio de canalizagao de decodificagao e podem residir no mesmo registro de dados ou em registros de dados diferentes.
Os bits de pre-decodif icag;ao 315 incluem informagoes relacionadas a instrugao correspondente ao enderego de instrugao 310 e sao determinados pelo circuito logico de pre-decodificagao 128. Os bits de pre — decodificagao 315 indicam se a instrugao correspondente e ο inicio de uma chamada de sub-rotina implicita, tal como a instrugao MOV LR, PC na combinagao MOV/BR listada na Tabela 1· Os bits de pre-decodificagao 315 podem ser codificados de varias maneiras, incluindo a codificagao de um bit especifico, ou uma combinagao dos bits de pre-decodificagao 315 para indicar que ο enderego de instrugao 310 se refere ou ao inicio da chamada de sub-rotina implicita ou a uma instrugao convencional de desvio e link. Em outra modalidade, ο c0digo de operagao (opcode) da instrugao pode ser utilizado para distinguir a chamada de sub-rotina implicita e a instrugao convencional de link e desvio de outras instrug5es no conjunto de instrugSes.
A parte 300 do estagio de canalizagao de decodificagao compreende tambem uma combinagao de somador/multiplexador 330. A combinagao de
somador/multiplexador 330 inclui os somadores 325a e 325b, ο multiplexador 320 e uma estrutura de pilha de link 134. O somador 325a soma a constante quatro ao enderego de instrugao no caso em que ο enderego de instrugao 310 se refere a uma instrugao convencional de desvio e link. 〇 somador 325b soma a constante 8 ao enderego de instrugao no caso em que ο enderego de instrugao 310 se refere ao inicio de uma chamada de sub-rotina implicita. Atraves do multiplexador 320, os bits de pre—decodificagao 315
selecionam qual enderego incrementado ou enderego de retorno e gravado na estrutura de pilha de link 134, se algum houver. Fazendo referenda a Tabela 1, ο deslocamento de oito e ilustrado de modo a refletir que a localizagao do enderego de retorno ocorre oito bytes apos a instrugao MOV.
Em uma instrugao convencional de desvio e link, ο enderego de retorno ocorre quatro bytes apos a instrugao de desvio e link. Apesar de nao ser mostrado, outros somadores podem ser adicionados ou podem substituir os somadores ilustrados nas Figura 3 a 5, dependendo do niimero de instrug5es que compoem uma chamada de sub-rotina implicita e do tamanho de cada uma das instrugSes que compoem a chamada de sub-rotina implicita.
A Figura 4 e um primeiro aspecto exemplar de uma parte 400 de um est0gio de canalizagao de decodificagao de duas instrugoes. A parte 400 do estagio de canalizagao de decodificagao de duas instrugoes pode ser adequadamente disposto no estagio de decodificagao 106. A parte 400 do estagio de canalizagao de decodificagao de duas instrugoes inclui dois enderegos de instrugao 410a e 410b recebidos concomitantemente com seus respectivos bits de pre- decodificagao 407a e b e dois conjuntos de combinagoes de somador/multiplexador 425a e 425b. Os enderegos de instrugoes 410a e 410b e os bits de pre —codifica<?a〇 407a e b sao alimentados para a parte 400 do estagio de canalizagao de decodificagao e podem residir nos mesmos ou em diferentes registros de dados.
O inicio da chamada de sub-rotina implicita, tal como ο enderego para a instrugao MOV LR. PC, pode ser encontrado em qualquer dos enderegos 410a ou 410b. Por convengao, ο enderego de instrugao 410a ou dcd〇 e ο primeiro na ordem do programs e ο enderego 410b ou dcdl e ο segundo na ordem do programa. Quando ο enderego para a instrugao que define ο inicio da sub-rotina implicita, tal como ο enderego para a instrugao MOV LR, PC e localizado no
enderego de instrugao 410a, a saida do somador/multiplexador 425a e valida e tal enderego de incremento e gravado na estrutura de pilha de link 134. Caso ο enderego para ο inicio da sub-rotina implicita for ο enderego de instrugao 410b, a saida do
somador/multiplexador 425b e valida e este enderego de incremento ou enderego de retorno e gravado na estrutura de pilha de link 134. Quando e reconhecida uma sub-rotina implicita, os aspectos do estagio de canalizagao de decodificagao ilustrados nas Figures 3 e 4 sao gravados na estrutura de pilha de link 134 na instrucao de inicio que define a sub-rotina implicita.
A Figura 5 e um segundo aspecto exemplar de uma parte 500 de um estagio de canalizagao de decodificagao de duas instrugoes. A parte 500 do estagio de canalizagao de decodificagao de duas instrugoes pode ser adequadamente disposta no estagio de decodificagao 106. A parte 500 do estagio de canalizagao de decodificagao de duas instrugoes grava ο enderego de retorno na estrutura de pilha de link 134 em resposta a recepgao do iiltimo enderego de instrugao definindo a chamada de sub-rotina implicita. Fazendo novamente referenda a Figura 2, por exemplo, a estrutura de estado de link 213 e gravada na referenda 221 pela parte 500 do estagio de canalizagao de decodificagao de duas instrug5es, um ciclo apos a decodificagao da instrugao de desvio da combinagao MOV/BR. Consequentemente, tal como ilustrado, ο valor de BR + 4 e gravado na estrutura de estado de link 213 na referenda 221.
A parte 500 do estagio de canalizagao de decodificagao inclui dois enderegos de instrugoes 510a e 510b recebidos concomitantemente com seus respectivos bits de pre —decodif icagao 507a e b. Os enderegos de instrugoes 510a e 510b (dcdO e dcdl) e seus respectivos bits de pre- decodificagao 507a e b (pdcdO e pdcdl) sao alimentados para
a parte 500 do estagio de canalizagao de decodificagao e podem residir no mesmo registro de dados ou em registros de dados diferentes.
A parte 500 do est^gio de canalizagao de decodificagao compreende tambem ο circuito logico de seleQao/habilitasao 510, ο circuito logico de ajuste de flag 515, os somadores 525a e 525b e ο multiplexador 520. O circuito logico de ajuste de flag 515 ajusta e reajusta um flag 530. O flag 530 rastreia se ο inicio da chamada de sub-rotina implicita foi reconhecido em qualquer dos enderegos 510a ou 510b. O flag 530 nao e utilizado se ambos os enderegos indicando ο inicio e final da chamada de sub- rotina implicita forem recebidos concomitantemente. No caso da sub-rotina implicita definida pela combinagao MOV LR, PC/BR, ο circuito logico de ajuste de flag 515 utilizando os bits pcdcO e pcdcl ajusta ο flag 530 quando ο enderego da instrug;ao MOV LR. PC reside na partigao final de decodificacjao valida, ο qual pode ser ou dcdO (quando dcdl nao for valido) ou dcdl.
O circuito 10gico de selegao/habilitagao 510 determine se dcdO ou dcdl contem ο enderego do final da chamada de sub-rotina implicita· Caso ο final da chamada de sub—rotina implicita esteja em dcdO, ο somador 525a soma quatro ao enderego no dcdO de modo a calcular ο enderego de retorno para a chamada de sub-rotina implicita. Caso ο final da chamada de sub-rotina implicita esteja em dcdl, ο somador 525b soma quatro ao enderego em dcdl de modo a calcular ο enderego de retorno. O circuito logico de selegao/habilitagao 510 gera um sinal de selegao 540 caso ο final da chamada de sub-rotina implicita esteja presente no dcdO ou dcdl β, se assim for, seleciona qual enderego de instrugao incrementado 535a ou 535b deve ser escrito/gravado na estrutura de pilha de link 134.
Para assegurar que a estrutura de pilha de link 134 nao seja gravada desnecessariamente, ο circuito logico
de selegao/habilitagao 510 recebe como alimentagao os sinais previstos tornados 550a e 550b correspondentes aos enderegos de instrugoes dcdO e dcdl, respectivamente, a partir do circuito de predigao de desvio 132. Caso uma chamada de sub-rotina implicita seja reconhecida no registro de dados 505 e a sub-rotina implicita tenha sido predita como tomada pelo circuito de predigao de desvio 132, ο circuito logico de sele^ao/habilita^ao 510 gera uin sinal de habilitagao de gravagao/escrita 545 na estrutura de pilha de link 134 para habilita-la a ser gravada. Caso seja reconhecida uma chamada de sub-rotina implicita, porem predita como nao tomada, ο circuito 10gico de selegao/habilitagao 510 nao gera uma habilitagao de gravagao para a estrutura de pilha de link 134. Dessa forma, as chamadas de sub-rotinas implicitas que sejam preditas como nao tomadas nao resultam em gravagao na estrutura de pilha de link 134. deve ser notado que apesar de a presente invengao descrever ο reconhecimento de uma chamada de sub-rotina implicita e a gravagao na estrutura de pilha de link no pipeline de estagio de decodificagao, os tecnicos na area notarao que tais aspectos da invengao podem ser praticados em qualquer estagio de um pipeline de processador em que foram determinados bits de pre- decodificagao e foi efetuada uma predigao de desvio·
A Figura 6 e um fluxograma ilustrando um metodo 600 de emulagao do comportamento de predigao de desvio de uma sub-rotina explicita quando do reconhecimento de uma chamada de sub-rotina implicita. No bloco 610, um enderego de instrugao indicando uma chamada de sub-rotina implicita para uma sub-rotina e reconhecido em um pipeline de processador. No bloco 620, e calculado um enderego de retorno a partir do enderego de instrugao. Caso uma chamada de sub-rotina implicita compreenda duas ou mais instrugoes, a quantidade de deslocamento adicionada ao enderego de instrugao depende de varios fatores, incluindo de se ο reconhecimento e efetuado no inicio ou final da chamada de sub-rotina implicita e do tamanho das instrugoes que compoem a chamada de sub-rotina implicita. No bloco 630, ο enderego de retorno e armazenado em um recurso de sub- rotina explicita, tal como a estrutura de pilha de link 134. Como f〇i descrito nas Figuras 3 a 5, os blocos 610, 620 e 630, podem ocorrer durante ο estagio de decodificagao 106.
No bloco 640,〇 pipeline de processador processa instrugoes associadas a sub-rotina invocada. Como exemplo, fazendo referencia a Tabela 1, no bloco 64 0 seriam processados os enderegos de instrugoes 0x00990000 a 0x00990008. No bloco 650, ο enderego de retorno e lido a partir do recurso de sub-rotina explicita em resposta a uma instrugao de desvio indicando uma chamada de retorno a partir da sub-rotina, tal como 0x00990008 BX na Tabela 1. Adicionalmentef no bloco 650, ο pipeline de processador e redirecionado para ο enderego de retorno lido a partir do recurso de sub-rotina explicita. Enquanto a instrugao de chamada de retorno esta no estagio de decodificagao 106, ο enderego de retorno e recuperado a partir da estrutura de pilha de link 134 da mesma maneira de quando um enderego de retorno e recuperado em resposta a uma chamada de retorno para uma sub-rotina invocada por uma instrugao convencional de link e desvio. Uma vez recuperado ο enderego de retorno e a chamada de retorno e predita como tomada, ο enderego de retorno e recuperado pelo pipeline de processador, permitindo vantajosamente uma busca ma is precoce do enderego de retorno tal como ilustrado na Figura 2.
A Figura 7 e um fluxograma 700 apresentando outros detalhes dos blocos 610, 620 e 630 da Figura 6. no bloco 710, e lido um bit de pre-decodificagao associado ao enderego de instrugao. No bloco 72 0, ο fluxograma 700 determina se ο bit de pre-clecodificagao indica uma chamada de sub-rotina implicita. Caso positivo, ο bloco 730 soma um deslocament〇 ao enderego de instrugao. No bloco 74 0, ο enderego incrementado e armazenado em uma estrutura de pilha de link. No bloco 750, ο processo de linha continua processando as instrugdes de maneira convencional. Caso os bits de pre—decodificaQS〇 nao indiquem uma chamacia. de sub— rotina impl土cita, ο bloco 720 passa ao bloco 750, onde ο pipeline de processador continua processando instrugoes de maneira convencional.
Os varios exemplos de blocos, modulos, circuitos, elementos e/〇u componentes logicos descritos em conexao com as modalidades aqui descritas podem ser implement ados ou ef etuados por meio de um processador de uso geral, um processador de sinais digitais (DSP), um circuito integrado especifico para aplicagao (ASIC), um arranjo de porta programavel no campο (FPGA), ou outro componente 10gic〇 programavel, logica de transistores ou portas individuals, componentes de hardware individuals, ou qualquer combinagao de tais projetada para efetuar as fungoes aqui descritas. Um processador de uso geral pode ser um microprocessacior, porem como alternative, ο processador pocie ser qualquer processador, controlador, micro controlador ou maquina de estado convencional. Um processador pode tambem ser implementado na forma de uma combinagao de dispositivos de computagao, por exemplo, uma combinagao de um DSP e um microprocessador, uma pluralidade de microprocessadores, um ou mais micr〇pr〇cessad〇res em conjunto com um niicleo DSP, ou qualquer outra configuragao similar.
Os metodos descritos em conexao com as modalidades aqui descritas podem ser incorporados diretamente em hardware, em um modulo de software executado por um processador, ou em uma combinagao de ambos.〇 modulo de software poderia residir em uma memoria RAM, memor ia flash, memoria ROM, mem0ria EPROM, memoria EEPROM, registradores, disco rigido, um disco removivel, um CD-ROM, ou qualquer outra forma de meio de armazenamento conhecido pelos tecnicos na area. Um exemplo de um meio de armazenamento pode estar acoplado ao processador de tal forma que ο processador possa Ier informagoes a partir do, e gravar informag5es no, meio de armazenamento. Como alternativa, ο meio de armazenamento pode estar integrado ao processador.
Apesar de a invengao ser descrita no contexto de modalidades, sera notado que uma ampla variedade de impIementagSes pode ser empregada pelos tecnicos na area consistentes com a descrigao acima e com as reivindicagoes que se seguem.

Claims (20)

1. Um metodo para emular ο comport ament ο de predigao de desvio de uma chamada de sub-rotina explicita, compreendendo: reconhecer um enderego de instrugao indicando uma chamada de sub-rotina implicita para uma sub-rotina; calcular um enderego de retorno a partir do enderego de instrugao; e armazenar 〇 enderego de retorno em um recurso de sub-rotina explicita .
2. 〇 metodo, de acordo com a reivindicagao 1, compreendendo tambem: Ier ο enderego de retorno a partir do recurso de sub-rotina explicita em resposta a uma instrugao de desvio indicando uma chamada de retorno a partir da sub-rotina.
3. 〇 metodo, de acordo com a reivindicagao 2, compreendendo tambem: redirecionar um pipeline de processador para ο enderego de retorno.
4. O metodo, de acordo com a reivindicagao 1, no qual ο reconhecer ο enderego de instrugao compreende tambem: pre—decodificar a instrugao associada ao enderego de instrugao para definir informag5es de pre-decodificagao; e determinar se as informagoes de pre-decodificagao indicam ο enderego de instrugao como ο inicio da chamada de sub-rotina implicita.
5. 〇 metodo, de acordo com a reivindicagao 1, no qual ο calcular ο enderego de retorno a partir do enderego de instrugao compreende: somar um deslocamento const ante ao enderego de instrugao·
6. 〇 metodo, de acordo com a reivindicagao 1, no qual ο recurso de sub-rotina explicita e uma estrutura de pilha de link.
7. Um equipamento, compreendendo: uma primeira alimentagao configurada para receber um enderego de instrugao; uma segunda alimentagao configurada para receber informagoes de pre-decodificagao, as informa?5es de pre— decodificagao descrevendo ο enderego de instrugao como estando associado a uma chamada de sub—rotina implicita para uma sub-rotina; e um somador configurado para somar um deslocamento ao enderego de instrugao definindo um enderego de retorno em resposta as informagSes de pre-decodificagao, levando ο enderego de retorno a ser armazenado em um recurso de sub— rotina explicita .
8. 〇 equipamento, de acordo com a reivindicagao 7, no qual ο recurso de sub-rotina explicit a e lido em resposta a uma instrugao de desvio indicando uma chamada de retorno a partir da sub—:rotina·
9. 〇 equipamento, de acordo com a reivindicagao 7, no qual as informagoes de pre—decodificagao tambem descrevem ο enderego de instrugao como 〇 inicio da chamada de sub-rotina implicita.
10. 0 equipamento, de acordo com a reivindicagaov 7, no qual as inf ormagoes de pre — dec〇dif icag:a〇 tambem descrevem 〇 enderego de instrugao como ο final da chamada de sub-rotina implicita.
11. 〇 equipamento, de acordo com a reivindicagao 7, no qual ο recurso de sub-rotina explicit a e uma estrutura de pilha de link.
12. 〇 equipamento, de acordo com a reivindicagao 7, compreendendo tambem: uma terceira alimentagao para receber concomitantemente um segundo enderego de instrugao com ο enderego de instrugao; e uma 10gica configurada para determinar se deve ser direcionado 〇 enderego de instrugao ou ο segundo enderego de instrugao para ο recurso de sub-rotina explicita.
13.· 〇 equipamento, de acordo com a reivindicagao -7, compreendendo tambem: um segundo somador c〇nfigurado para somar um segundo deslocamento constante ao enderego de instrugao em resposta a uma chamada de sub-rotina explicita.
14.· Um equipamento, compreendendo: primeira e segunda alimentagoes configuradas para receber concomitantemente primeiro e segundo enderegos de instru?5es e as informagSes de pre-decodifica?ao associadas; um primeiro conjunto de somadores configurado para somar um deslocamento aos primeiro e segundo enderegos de instrug5es para definir primeiro e segundo resultados em resposta as informagoes de pre—decodificagao indicando que os primeiro ou segundo enderegos de instrugoes estao associacios a uma chamada de sub—rotina implicit a para uma sub-rotina,· e um dispositivo para selecionar um enderego de retorno a partir de um dentre os primeiro ou segundo resultados.
15.· 〇 equipamento, de acordo com a reivindicagao -14, compreendendo tambem: um dispositivo para gravar ο enderego de retorno em um recurso de sub-rotina explicita-
16. 〇 equipamento, de acordo com a reivindicagao -14, compreendendo tambem: um circuito 10gic〇 de ajuste de flag configurado para determinar se os primeiro ou segundo enderegos de instrugao estao associados a chamada de sub-rotina implicita.
17. O equipamento, de acordo com a reivindicagao 14, compreendendo tambem: um segundo conjunto de somadores para somar um segundo deslocamento aos primeiro e segundo enderegos de instrugao em resposta as informagoes de pre—decodificatjao indicando que os primeiro ou segundo enderegos de instrugao estao associados a uma chamada de sub-rotina explicita para uma sub-rotina;
18. O equipamento, de acordo com a reivindicagao 17, no qual a constante e oito e a segunda constante e quatro.
19. O equipamento, de acordo com a reivindicagao 14, no qual as informagoes de pre_decodif icag:ao estao codificadas na forma de uma combinagao de bits para indicar se ο primeiro ou segundo enderegos de instrugao estao relacionados a uma chamada de sub-rotina implicita para uma sub-rotina.
20. O equipamento, de acordo com a reivindicagao 16, no qual os dispositivos para selecionar ο enderego de retorno a partir de um dentre os primeiro ou segundo resultados compreende tambem: um circuito logico de habilitagao/selegao configurado para habilitar ο recurso de sub-rotina explicita pra gravar.
BRPI0716010-0A 2006-08-31 2007-08-31 mÉtodos e equipamento para emular o comportamento de prediÇço de desvio de uma chamada de sub-rotina explÍcita BRPI0716010A2 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/468,835 2006-08-31
US11/468,835 US7478228B2 (en) 2006-08-31 2006-08-31 Apparatus for generating return address predictions for implicit and explicit subroutine calls
PCT/US2007/077340 WO2008028103A2 (en) 2006-08-31 2007-08-31 Methods and apparatus for emulating the branch prediction behavior of an explicit subroutine call

Publications (1)

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

Family

ID=39136931

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0716010-0A BRPI0716010A2 (pt) 2006-08-31 2007-08-31 mÉtodos e equipamento para emular o comportamento de prediÇço de desvio de uma chamada de sub-rotina explÍcita

Country Status (11)

Country Link
US (2) US7478228B2 (pt)
EP (2) EP2064622A2 (pt)
JP (2) JP5425627B2 (pt)
KR (1) KR101099203B1 (pt)
CN (1) CN101506773B (pt)
BR (1) BRPI0716010A2 (pt)
CA (1) CA2659384C (pt)
MX (1) MX2009001911A (pt)
RU (1) RU2417407C2 (pt)
TW (1) TWI348642B (pt)
WO (1) WO2008028103A2 (pt)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7478228B2 (en) 2006-08-31 2009-01-13 Qualcomm Incorporated Apparatus for generating return address predictions for implicit and explicit subroutine calls
US7444501B2 (en) * 2006-11-28 2008-10-28 Qualcomm Incorporated Methods and apparatus for recognizing a subroutine call
US8341383B2 (en) * 2007-11-02 2012-12-25 Qualcomm Incorporated Method and a system for accelerating procedure return sequences
CN101819523B (zh) * 2009-03-04 2014-04-02 威盛电子股份有限公司 微处理器以及相关指令执行的方法
WO2012103359A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Hardware acceleration components for translating guest instructions to native instructions
CN103620547B (zh) 2011-01-27 2018-07-10 英特尔公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
WO2012103367A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Guest to native block address mappings and management of native code storage
WO2012103245A2 (en) 2011-01-27 2012-08-02 Soft Machines Inc. Guest instruction block with near branching and far branching sequence construction to native instruction block
WO2012103253A2 (en) 2011-01-27 2012-08-02 Soft Machines, Inc. Multilevel conversion table cache for translating guest instructions to native instructions
US20130024674A1 (en) 2011-07-20 2013-01-24 International Business Machines Corporation Return address optimisation for a dynamic code translator
WO2013101121A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Managed instruction cache prefetching
WO2014151652A1 (en) 2013-03-15 2014-09-25 Soft Machines Inc Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor
US9411590B2 (en) * 2013-03-15 2016-08-09 Qualcomm Incorporated Method to improve speed of executing return branch instructions in a processor
WO2014151691A1 (en) * 2013-03-15 2014-09-25 Soft Machines, Inc. Method and apparatus for guest return address stack emulation supporting speculation
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US10642903B2 (en) 2014-09-29 2020-05-05 International Business Machines Corporation Tagging and querying system objects
SG11201803358RA (en) * 2015-11-04 2018-05-30 Lintec Corp Curable resin film and first protective film forming sheet
US11099849B2 (en) * 2016-09-01 2021-08-24 Oracle International Corporation Method for reducing fetch cycles for return-type instructions
CN114528025B (zh) * 2022-02-25 2022-11-15 深圳市航顺芯片技术研发有限公司 指令处理方法、装置、微控制器及可读存储介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4604695A (en) * 1983-09-30 1986-08-05 Honeywell Information Systems Inc. Nibble and word addressable memory arrangement
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
KR940008392A (ko) 1992-09-19 1994-04-29 이헌조 밀착형 이미지 센서
US5604877A (en) * 1994-01-04 1997-02-18 Intel Corporation Method and apparatus for resolving return from subroutine instructions in a computer processor
JP3504355B2 (ja) * 1994-12-06 2004-03-08 松下電器産業株式会社 プロセッサ
US5964868A (en) * 1996-05-15 1999-10-12 Intel Corporation Method and apparatus for implementing a speculative return stack buffer
US6157999A (en) * 1997-06-03 2000-12-05 Motorola Inc. Data processing system having a synchronizing link stack and method thereof
US5964869A (en) * 1997-06-19 1999-10-12 Sun Microsystems, Inc. Instruction fetch mechanism with simultaneous prediction of control-flow instructions
US6094716A (en) 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
US6889320B1 (en) * 1999-12-30 2005-05-03 Texas Instruments Incorporated Microprocessor with an instruction immediately next to a branch instruction for adding a constant to a program counter
US7035963B2 (en) 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US6823447B2 (en) * 2001-03-01 2004-11-23 International Business Machines Corporation Software hint to improve the branch target prediction accuracy
US7404067B2 (en) * 2003-09-08 2008-07-22 Intel Corporation Method and apparatus for efficient utilization for prescient instruction prefetch
US7065694B2 (en) * 2003-09-25 2006-06-20 International Business Machines Corporation Adaptive runtime repairable entry register file
US20050154859A1 (en) * 2004-01-14 2005-07-14 Arm Limited Branch prediction in a data processing apparatus
JP2006040173A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd 分岐予測装置および分岐予測方法
US7836290B2 (en) * 2005-11-09 2010-11-16 Oracle America, Inc. Return address stack recovery in a speculative execution computing apparatus
US7478228B2 (en) 2006-08-31 2009-01-13 Qualcomm Incorporated Apparatus for generating return address predictions for implicit and explicit subroutine calls

Also Published As

Publication number Publication date
JP5722396B2 (ja) 2015-05-20
JP2014002769A (ja) 2014-01-09
CN101506773A (zh) 2009-08-12
JP2010501963A (ja) 2010-01-21
EP2482183A1 (en) 2012-08-01
TW200820072A (en) 2008-05-01
CA2659384C (en) 2012-07-31
US20080059780A1 (en) 2008-03-06
WO2008028103A2 (en) 2008-03-06
US20080288753A1 (en) 2008-11-20
JP5425627B2 (ja) 2014-02-26
RU2417407C2 (ru) 2011-04-27
KR101099203B1 (ko) 2011-12-27
US7478228B2 (en) 2009-01-13
RU2009111591A (ru) 2010-10-10
CN101506773B (zh) 2012-04-25
US8943300B2 (en) 2015-01-27
MX2009001911A (es) 2009-03-09
CA2659384A1 (en) 2008-03-06
EP2064622A2 (en) 2009-06-03
KR20090061644A (ko) 2009-06-16
WO2008028103A3 (en) 2008-05-29
TWI348642B (en) 2011-09-11

Similar Documents

Publication Publication Date Title
BRPI0716010A2 (pt) mÉtodos e equipamento para emular o comportamento de prediÇço de desvio de uma chamada de sub-rotina explÍcita
RU2412464C2 (ru) Предварительное декодирование инструкций переменной длины
US7461238B2 (en) Simple load and store disambiguation and scheduling at predecode
JP5357017B2 (ja) 高速で安価なストア−ロード競合スケジューリング及び転送機構
JP5528819B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
US5941980A (en) Apparatus and method for parallel decoding of variable-length instructions in a superscalar pipelined data processing system
JP4585005B2 (ja) 分岐訂正によるプリデコードのエラー処理
BRPI0719371A2 (pt) Métodos e equipamento para reconhecimento de uma chamada de sub-rotina
EP3321811B1 (en) Processor with instruction cache that performs zero clock retires
CN101013401A (zh) 用于预取数据线的方法和处理器
KR20080031981A (ko) 일정한 개수의 가변 길이 명령을 가진 명령 캐시
US20130326200A1 (en) Integrated circuit devices and methods for scheduling and executing a restricted load operation
US20120144173A1 (en) Unified scheduler for a processor multi-pipeline execution unit and methods
US20160335089A1 (en) Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine

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